第3章 为Jenkins添加静态agent节点
本文主要阐述如何为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节点相关推荐
- master节点重置后添加node报错_企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)...
相关文章 企业实战(23)基于Docker平台部署Jenkins中国定制版(1) 添加node节点前配置 在这里插入图片描述 在这里插入图片描述 开始添加node节点 在这里插入图片描述 在这里插入 ...
- Etcd教程 — 第二章 Etcd集群静态发现
Etcd教程 - 第二章 Etcd集群静态发现 一.Etcd集群安装方式 二.Etcd集群静态发现 2.1 静态启动的方式 ※2.2 单机搭建Etcd集群 2.2.1 安装 goreman工具 2.2 ...
- 韩立刚计算机网络笔记-第06章 动态路由和静态路由
第06章 动态路由和静态路由 6.1路由-网络层实现的功能 网络层功能就是给传输层协议提供简单灵活的.无连接的.尽最大努力交付的数据包服务. 通俗一点来讲,网络中的路由器为每一个数据包单独的选择转发路 ...
- jenkins 添加 证书凭证Credentials
jenkins 添加 证书凭证Credentials 大家都知道jenkins在拉取git项目代码的时候,如果没有配置 "证书凭证Credentials" 或者配置的不对, 就会出 ...
- 【控制】《多智能体机器人系统信息融合与协调》范波老师-第4章-基于证据推理的多 Agent 分布式决策
第3章 回到目录 第5章 第4章-基于证据推理的多 Agent 分布式决策 4.1 引言 4.2 证据推理理论 4.2.1 概率的几种解释及其性质 4.2.2 证据推理的数学基础 4.2.3 证据推理 ...
- Jenkins 添加 linux节点
Jenkins 添加 linux节点 必须预先在linux 节点安装jdk 和 git 必须为Jenkins安装1个ssh build agents plugin的插件 然后如下配置新增节点, 记得配 ...
- java静态路由_Linux添加静态路由两种实现方法解析
添加路由的命令: 1.route add route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0 #添加一条静态路由 route add d ...
- Windows设置HTML,windows怎么添加静态路由
windows添加静态路由的方法:1.按下[win+x]组合键,选择并打开命令提示符:2.执行[route -p add 10.10.10.0 nask 255.255.255.0 172.20.15 ...
- 7添加静态路由 hat red_win7系统使用dos命令添加静态路由的操作方法
很多小伙伴都遇到过对win7系统使用dos命令添加静态路由进行设置的困惑吧,一些朋友看过网上对win7系统使用dos命令添加静态路由设置的零散处理方法,并没有完完全全明白win7系统使用dos命令添加 ...
最新文章
- 怎样才算熟悉python-怎么样才算是精通 Python?
- Linux mkdir 命令创建多级目录
- Confluence 6 管理协同编辑 - 关于 Synchrony
- Ubuntu搭建联盟链,实现节点之间数据同步
- django 指定模型排除的字段
- 在c 语言中 一个函数由函数头和,C语言程序设计基础教程_习题答案
- 关于web开发的评论思考
- Memecached stats
- 使用pt-query-digest进行日志分析
- [C] 库函数 sprintf() 和 snprintf()
- 不好的测试实践——软件测试的尽早介入
- 2016年ios公开可利用漏洞总结
- VB对IE浏览器完全控制
- 操作系统-消息,消息队列
- [paper]Intriguing properties of neural networks(L-BFGS)
- 集团化公司快递收发管理教程
- 看了 72 位图灵奖得主成就,才发现我对计算机一无所知
- python装饰器–原来如此简单
- 群晖NAS简介(转)
- 拆装微型计算机的心得体会,微机课程设计心得
热门文章
- 高解析 喷码机解决方案
- 实习期第一次进项目的体会
- 2008中国预备役扫描 (转自:《乒乓世界》)
- HFSS仿真宝典 | 非屏蔽双绞线建模及其辐射发射仿真
- 半夜偷看“不良网站”,删除历史记录也没用,“坏影响”已悄然发生!
- linux tomcat6 permgen space,tomcat6 OutOfMemoryError: PermGen space 解决办法
- R语言epiDisplay包的kap函数计算Kappa统计量的值(总一致性、期望一致性)、对多个评分对象的结果进行一致性分析、评分的类别为多个类别、如果评分中包含缺失值则标准误及其相关统计量则无法计算
- 截止20220708日靠谱的k8s环境部署流程
- netty源码之ByteBuf详解
- 语言模型(二)—— 神经网络语言模型(NNLM)