企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)

简介: 企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)

相关文章


企业实战(23)基于Docker平台部署Jenkins中国定制版(1)


添加node节点前配置

1.png2.png

开始添加node节点

3.png4.png5.png

 在添加node节点时,填好“名称”、“描述”、“执行器数量”、“远程工作目录”、“标签”、“用法(一般默认)”、“启动方式(根据情况)”,完成后保存。

6.png7.png

这时node1节点还是未在线状态,点击“node1”名称会有节点连接Jenkins的方法。

8.png

注意: 这里必须用--user root 用户进入容器才可以创建工作目录,默认进入是jenkins用户,会提示权限不足


[root@localhost ~]# docker ps -a    //容器运行时需要映射代理连接端口50000
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                        PORTS                                              NAMES
1dad787d6f46        myjenkins:v1           "/sbin/tini -- /usr/…"   38 minutes ago      Up 11 minutes                 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   myjenkins
[root@localhost ~]# docker exec -it --user root jenkins /bin/bash
root@367402ec96bf:/# mkdir -p /opt/jenkins    //创建工作目录
root@367402ec96bf:/# cd /opt/jenkins/
root@367402ec96bf:/opt/jenkins# wget http://192.168.1.8:8080/jnlpJars/agent.jar
root@367402ec96bf:/opt/jenkins# ls
agent.jar
root@367402ec96bf:/opt/jenkins# java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 90e0e5a0d61f67d551d029a22584632fb96f314acf1f3789372adbb747e81b11 -workDir "/opt/jenkins"
......
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: 33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected    //连接成功

9.png

`报错`


 如果在容器中下载好agent.jar后,执行节点连接命令的时候出现下面的错误:


WARNING: Connection refused (Connection refused)

root@367402ec96bf:/opt/jenkins# java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 5cb49ff710c0dde742725fcb82dc2e8ccf4f612819e2b6889cfcb93207fc734a -workDir "/opt/jenkins"
......
WARNING: Connection refused (Connection refused)
Nov 16, 2020 3:57:42 AM hudson.remoting.jnlp.Main$CuiListener error
SEVERE: http://192.168.1.8:8080/ provided port:50000 is not reachable
java.io.IOException: http://192.168.1.8:8080/ provided port:50000 is not reachable
        at org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver.resolve(JnlpAgentEndpointResolver.java:314)
        at hudson.remoting.Engine.innerRun(Engine.java:693)
        at hudson.remoting.Engine.run(Engine.java:518)

解决:


1.查看正在运行的容器是否已经映射了前面在Jenkins管理界面设置中的“全局安全配置”里配置的代理指定端口(详情见顶图)

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                        PORTS                                              NAMES
1dad787d6f46        myjenkins:v1           "/sbin/tini -- /usr/…"   38 minutes ago      Up 11 minutes                 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   myjenkins

2.没有映射代理端口需要重新映射才能正常连接,有下面两种方法:


  • 2.1 `将当前已经运行的容器通过docker commit命令提交为一个镜像,然后重新执行docker run命令添加完整的端口映射。`(推荐)`
[root@localhost ~]# docker stop jenkins
[root@localhost ~]# docker commit -m "my jenkins" 367402ec96bf myjenkins:v1
[root@localhost ~]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
myjenkins              v1                  5349fdcc8533        7 minutes ago       662MB
jenkinszh/jenkins-zh   latest              2cb4cce6db0a        5 months ago        656MB
[root@localhost ~]# docker run -itd --name=myjenkins -p 8080:8080 -p 50000:50000 myjenkins:v1
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                              NAMES
1dad787d6f46        myjenkins:v1        "/sbin/tini -- /usr/…"   5 seconds ago       Up 4 seconds        0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   myjenkins

进入浏览器访问Jenkins页面,重新完成入门步骤后进入Jenkins管理界面首页,按照本教程从头开始进行“添加node节点前配置”、“开始添加node节点”步骤,进行至“节点连接Jenkins方式”时,按照下面步骤重新操作即可。

[root@localhost ~]# docker exec -it --user root myjenkins /bin/bash
root@1dad787d6f46:/# cd /opt/jenkins/
root@1dad787d6f46:/opt/jenkins# rm -rf *    //删除之前的文件
root@1dad787d6f46:/opt/jenkins# wget http://192.168.1.8:8080/jnlpJars/agent.jar  //重新复制连接代理的agent.jar链接
root@1dad787d6f46:/opt/jenkins# ls
agent.jar
root@1dad787d6f46:/opt/jenkins# java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 90e0e5a0d61f67d551d029a22584632fb96f314acf1f3789372adbb747e81b11 -workDir "/opt/jenkins"
......
INFO: Agent discovery successful
  Agent address: 192.168.1.8
  Agent port:    50000
  Identity:      33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to 192.168.1.8:50000
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: 33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected
  • 2.2 `通过配置文件修改已经运行的docker容器端口映射`

优化


 在上面代理连接Jenkins的时候,可以看到我们是直接通过执行命令连接,这种方式会一直占用系统终端,这时我们可以通过编写一个脚本来实现不占用终端一直运行脚本达到代理连接Jenkins的效果。(在容器中可以通过宿主机写好脚本后,与jenkins容器共享脚本目录,这样容器中也可以直接访问脚本目录执行脚本)

nohup 不挂断地运行命令   &  在后台运行 (一般这两个一起用)


nohup command &

[root@localhost jenkins]# vim start.sh
#!/bin/bash
nohup java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 90e0e5a0d61f67d551d029a22584632fb96f314acf1f3789372adbb747e81b11 -workDir "/opt/jenkins" &
(可以通过commit新镜像重新执行docker run 映射端口跟共享目录)
# sh start.sh
# ps -aux | grep start.sh    //通过ps查看后台运行的脚本
root      15269  0.0  0.0 112720   996 pts/0    S+   15:13   0:00 grep --color=auto start.sh
# tail -f nohup.out    //查看脚本后台执行启动日志
十一月 16, 2020 3:10:11 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Handshaking
十一月 16, 2020 3:10:11 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Connecting to 192.168.1.8:50000
十一月 16, 2020 3:10:11 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Trying protocol: JNLP4-connect
十一月 16, 2020 3:10:12 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Remote identity confirmed: 33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
十一月 16, 2020 3:10:12 下午 hudson.remoting.jnlp.Main$CuiListener status
信息: Connected

10.png


相关文章
|
8月前
|
运维 Kubernetes API
解决Kubernetes集群中master节点无法与node节点通信的策略。
这些策略不仅需要执行命令来获取信息,更要深入理解集群组件如何交互,以便进行准确的故障定位与修复。一条一条地排查,并适时回顾配置文件,证书有效性等,通常可以找到问题所在。给出的命令需要根据具体环境的配置进行适当的修改。故障排除往往是一个细致且需求反复验证的过程,但遵循上述策略可以高效定位大部分通信故障的原因。
607 12
|
8月前
|
Kubernetes 网络协议 API
在k8s集群中解决master节点与node通信问题
整个排查和解决流程需要综合应用以上方法,以及根据具体情况调整排查顺序或应用其他技术细节。为保证解决方案的实用性和有效性,还需紧跟Kubernetes社区的最新动态和最佳实践。在实际操作过程中,应记录所采取的步骤和观察到的系统响应,以便在遇到类似问题时能够快速定位和解决。
546 8
|
9月前
|
机器学习/深度学习 Kubernetes 监控
Kubernetes 节点故障自愈方案:结合 Node Problem Detector 与自动化脚本
本文深入探讨了Kubernetes节点故障自愈方案,结合Node Problem Detector(NPD)与自动化脚本,提供技术细节、完整代码示例及实战验证。文章分析了硬件、系统和内核层面的典型故障场景,指出现有监控体系的局限性,并提出基于NPD的实时事件捕获与自动化诊断树的改进方案。通过深度集成NPD、设计自动化修复引擎以及展示内核死锁恢复的实战案例,文章详细说明了自愈流程的实现步骤与性能优势。此外,还提供了生产环境部署指南、高可用架构设计及安全防护措施,并展望了机器学习增强故障预测和混沌工程验证的进阶优化方向。全文约1.2万字,适合希望提升Kubernetes集群稳定性的技术人员阅读。
642 1
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
977 17
|
12月前
|
监控 算法 JavaScript
企业用网络监控软件中的 Node.js 深度优先搜索算法剖析
在数字化办公盛行的当下,企业对网络监控的需求呈显著增长态势。企业级网络监控软件作为维护网络安全、提高办公效率的关键工具,其重要性不言而喻。此类软件需要高效处理复杂的网络拓扑结构与海量网络数据,而算法与数据结构则构成了其核心支撑。本文将深入剖析深度优先搜索(DFS)算法在企业级网络监控软件中的应用,并通过 Node.js 代码示例进行详细阐释。
234 2
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
8月前
|
JavaScript Unix Linux
nvm与node.js的安装指南
通过以上步骤,你可以在各种操作系统上成功安装NVM和Node.js,从而在不同的项目中灵活切换Node.js版本。这种灵活性对于管理不同项目的环境依赖而言是非常重要的。
2559 11
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。

推荐镜像

更多