本文主要阐述如何为Jenkins Server来添加Agent节点。静态节点的配置方式 VM、Docker、Kubernetes。

Jenkins采用分布式架构,分为server节点和agent节点。server节点也是可以运行构建任务的,但我们一般使其主要来做任务的调度。(毕竟server节点挂了就都...)agent节点专门用于任务的执行。随着现在容器的盛行,我们可以将server节点和agent节点在容器或者基于Kubernetes中部署。关于agent节点借助容器可以实现动态的资源分配等等好处。agent节点可以分为静态节点和动态节点。静态节点是固定的一台vm虚机或者容器。动态节点是随着任务的构建来自动创建agent节点。

1.1 Java Web方式

Launch agent by connecting it to the master

使用Java Web Start。在这种情况下,必须在Agent机器上打开JNLP文件,这将建立到Jenkins服务器的TCP连接。这意味着不需要Jenkins服务器访问Agent;而是Agent能够链接到Jenkins Server即可。

如果通过“配置全局安全配置”页面启用了安全性,则可以自定义Jenkins服务器监听的Agent连接的端口。也就是相当于Agent节点会开启一个随机的端口与Server中配置的端口连接。所以一般申请网络权限我们需要开放Jenkins服务器的监听端口给Agent连接。

默认情况下,Agent将启动GUI,但是也可以在没有GUI的情况下运行代理,例如作为Windows服务。在Linux中我们一般会使用nohup等方式保证进程在后台运行。

首先,我们在Jenkins Server页面>节点管理菜单中添加一个Jenkins Agent。在DevOps流水线实践教程中,我们在添加Agent节点的时候选择的是java web start方式启动的agent与Jenkins Server的连接。现在很多同学反馈找不到此选项了,开始我以为是汉化问题。后来发现新版本中修改了名称为Launch agent by connecting it to the master。如果你遇到了此类问题,可以选择Launch agent by connecting it to the master选项。

填写节点的名称等信息。

1.1.1 VM方式启动

首先,我们点开agent页面,获取agent.jar和secret信息。

我们在一台Linux服务器中,下载agent.jar和启动连接。

wget http://192.168.1.200:30080/jnlpJars/agent.jar
java -jar agent.jar -jnlpUrl http://192.168.1.200:8080/computer/test01/slave-agent.jnlp -secret d5bd27fc1dfa4c5e886b95fc98538f4a7399c5d239783f89e4502a6e56f8a512 -workDir "/var/lib/jenkins"

链接成功的日志:

INFO: Agent discovery successfulAgent address: 192.168.1.200Agent port:    30081Identity:      0b:a1:da:6c:8e:e2:ca:f8:17:f6:b7:ee:cb:ff:84:0d
Jul 24, 2020 5:57:29 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Jul 24, 2020 5:57:29 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to 192.168.1.200:30081
Jul 24, 2020 5:57:29 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Jul 24, 2020 5:57:29 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: 0b:a1:da:6c:8e:e2:ca:f8:17:f6:b7:ee:cb:ff:84:0d
Jul 24, 2020 5:57:30 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected

使用nohup后台运行agent。

nohup java -jar agent.jar -jnlpUrl http://192.168.1.200:8080/computer/test01/slave-agent.jnlp -secret d5bd27fc1dfa4c5e886b95fc98538f4a7399c5d239783f89e4502a6e56f8a512 -workDir "/var/lib/jenkins" &

1.1.2 Docker方式

docker的方式比较简单,第一步下载镜像,第二步启动镜像。注意参数要写对。

docker pull jenkins/inbound-agent:alpinedocker run --init jenkins/inbound-agent:alpine -url http://192.168.1.200:30080 -workDir=/home/jenkins/agent d5bd27fc1dfa4c5e886b95fc98538f4a7399c5d239783f89e4502a6e56f8a512 test01

1.1.3 Kubernetes方式

在这里我们把agent以静态的方式部署到kubernetes集群中。首先编写一个部署文件,定义好名称空间、镜像、agent配置信息。

kind: Deployment
apiVersion: apps/v1
metadata:labels:k8s-app: jenkinsagent-test01name: jenkinsagent-test01namespace: devops
spec:replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s-app: jenkinsagent-test01template:metadata:labels:k8s-app: jenkinsagent-test01namespace: devopsname: jenkinsagent-test01spec:containers:- name: jenkinsagent-test01image: jenkins/inbound-agent:alpineimagePullPolicy: IfNotPresentresources:limits:cpu: 1000mmemory: 2Girequests:cpu: 500mmemory: 512Mienv:- name: JENKINS_URLvalue: http://192.168.1.200:30080- name: JENKINS_SECRETvalue: d5bd27fc1dfa4c5e886b95fc98538f4a7399c5d239783f89e4502a6e56f8a512- name: JENKINS_AGENT_NAMEvalue: test01- name: JENKINS_AGENT_WORKDIRvalue: /home/jenkins/workspace

最后,通过kubectl工具部署到kubernetes集群中。我们可以使用kubectl get 查询pod的状态,也可以通过kubectl logs 查看pod运行的日志信息。

kubectl create -f jenkins.yaml
kubectl get pod -n devops
kubectl logs -f jenkinsagent-test01-5644b4bb6b-kh229 -n devops

1.2 Launch agents via SSH

首先,创建一个凭据存储服务器认证信息。

然后我们创建一个新的节点,添加以下配置。配置ssh的主机和认证信息。最后保存。

保存配置后,agent配置完成。

1.3 创建一个测试的流水线

创建一个测试的pipeline项目,然后填写Jenkinsfile内容。

pipeline {agent {node { label "build"}}stages {stage('Hello') {steps {echo 'Hello World'}}}
}


到此我们完成了Jenkins Agent的配置,后期我们开始了解Jenkins的一些基础的功能。


历史文章

  • 新Jenkins实践

  • GitLabCI实践专辑

  • Jenkins流水线实践专辑

  • ChatOps微实践

关于作者

泽阳,DevOps领域实践者。专注于企业级DevOps运维开发技术实践分享,主要以新Linux运维技术、DevOps技术课程为主。丰富的一线实战经验,课程追求实用性获得多数学员认可。课程内容均来源于企业应用,在这里既学习技术又能获取热门技能,欢迎您的到来!(微信ID: devopsvip)

好课推荐

  • 系统的教你实施流水线

  • 掌握DevOps流水线的多样性,原来还能这样?点击下图,即可购买????


长按识别二维码关注我们

欢迎把我们推荐给您的朋友们

DevOps流水线实践课程

????戳阅读原文,立即购买

第3章 为Jenkins添加静态agent节点相关推荐

  1. master节点重置后添加node报错_企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)...

    相关文章  企业实战(23)基于Docker平台部署Jenkins中国定制版(1) 添加node节点前配置 在这里插入图片描述 在这里插入图片描述 开始添加node节点 在这里插入图片描述 在这里插入 ...

  2. Etcd教程 — 第二章 Etcd集群静态发现

    Etcd教程 - 第二章 Etcd集群静态发现 一.Etcd集群安装方式 二.Etcd集群静态发现 2.1 静态启动的方式 ※2.2 单机搭建Etcd集群 2.2.1 安装 goreman工具 2.2 ...

  3. 韩立刚计算机网络笔记-第06章 动态路由和静态路由

    第06章 动态路由和静态路由 6.1路由-网络层实现的功能 网络层功能就是给传输层协议提供简单灵活的.无连接的.尽最大努力交付的数据包服务. 通俗一点来讲,网络中的路由器为每一个数据包单独的选择转发路 ...

  4. jenkins 添加 证书凭证Credentials

    jenkins 添加 证书凭证Credentials 大家都知道jenkins在拉取git项目代码的时候,如果没有配置 "证书凭证Credentials" 或者配置的不对, 就会出 ...

  5. 【控制】《多智能体机器人系统信息融合与协调》范波老师-第4章-基于证据推理的多 Agent 分布式决策

    第3章 回到目录 第5章 第4章-基于证据推理的多 Agent 分布式决策 4.1 引言 4.2 证据推理理论 4.2.1 概率的几种解释及其性质 4.2.2 证据推理的数学基础 4.2.3 证据推理 ...

  6. Jenkins 添加 linux节点

    Jenkins 添加 linux节点 必须预先在linux 节点安装jdk 和 git 必须为Jenkins安装1个ssh build agents plugin的插件 然后如下配置新增节点, 记得配 ...

  7. java静态路由_Linux添加静态路由两种实现方法解析

    添加路由的命令: 1.route add route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0 #添加一条静态路由 route add d ...

  8. Windows设置HTML,windows怎么添加静态路由

    windows添加静态路由的方法:1.按下[win+x]组合键,选择并打开命令提示符:2.执行[route -p add 10.10.10.0 nask 255.255.255.0 172.20.15 ...

  9. 7添加静态路由 hat red_win7系统使用dos命令添加静态路由的操作方法

    很多小伙伴都遇到过对win7系统使用dos命令添加静态路由进行设置的困惑吧,一些朋友看过网上对win7系统使用dos命令添加静态路由设置的零散处理方法,并没有完完全全明白win7系统使用dos命令添加 ...

最新文章

  1. 怎样才算熟悉python-怎么样才算是精通 Python?
  2. Linux mkdir 命令创建多级目录
  3. Confluence 6 管理协同编辑 - 关于 Synchrony
  4. Ubuntu搭建联盟链,实现节点之间数据同步
  5. django 指定模型排除的字段
  6. 在c 语言中 一个函数由函数头和,C语言程序设计基础教程_习题答案
  7. 关于web开发的评论思考
  8. Memecached stats
  9. 使用pt-query-digest进行日志分析
  10. [C] 库函数 sprintf() 和 snprintf()
  11. 不好的测试实践——软件测试的尽早介入
  12. 2016年ios公开可利用漏洞总结
  13. VB对IE浏览器完全控制
  14. 操作系统-消息,消息队列
  15. [paper]Intriguing properties of neural networks(L-BFGS)
  16. 集团化公司快递收发管理教程
  17. 看了 72 位图灵奖得主成就,才发现我对计算机一无所知
  18. python装饰器–原来如此简单
  19. 群晖NAS简介(转)
  20. 拆装微型计算机的心得体会,微机课程设计心得

热门文章

  1. 高解析 喷码机解决方案
  2. 实习期第一次进项目的体会
  3. 2008中国预备役扫描 (转自:《乒乓世界》)
  4. HFSS仿真宝典 | 非屏蔽双绞线建模及其辐射发射仿真
  5. 半夜偷看“不良网站”,删除历史记录也没用,“坏影响”已悄然发生!
  6. linux tomcat6 permgen space,tomcat6 OutOfMemoryError: PermGen space 解决办法
  7. R语言epiDisplay包的kap函数计算Kappa统计量的值(总一致性、期望一致性)、对多个评分对象的结果进行一致性分析、评分的类别为多个类别、如果评分中包含缺失值则标准误及其相关统计量则无法计算
  8. 截止20220708日靠谱的k8s环境部署流程
  9. netty源码之ByteBuf详解
  10. 语言模型(二)—— 神经网络语言模型(NNLM)