背景信息
因Jenkins控制台提示当前版本较旧存在安全风险,需升级至2.479.1版本,故做此次升级。Jenkins部署信息如下:
- 运行环境:Kubernetes集群
- 部署方式:helm
- 系统环境:Linux
问题现象
在使用2.479.1版本的docker image升级Jenkins之后,查看Jenkins Pod的运行状态正常,但是这并不代表升级操作已经完成,因此还需要在控制台部署Job来做进一步的验证,如果整个部署流程正常才代表此次版本升级成功。在部署Job时,控制台日志显示代理不在线,日志如下:
[Pipeline] Start of Pipeline
[Pipeline] node
Still waiting to schedule task
‘default-1v3vz’ is offline
说明:这里的代理是通过Kubernetes插件在k8s集群中动态创建的一个Pod。
问题分析
基于上述问题现象,从控制台输出的日志中并不能定位到问题原因,因此需要进一步查看Jenkins Pod的日志。通过查看日志发现,agent的版本要求不能低于3107.v665000b_51092,当前版本是4.13.3-1,docker hub上显示是2年前的,版本比较老。
处理措施
基于上述问题分析,可以判定agent无法与Jenkins服务器连接的原因是因为版本不兼容导致。要解决该问题,只需将agent的版本更新到3107.v665000b_51092即可。步骤如下:
- 到docker hub上找到agent的镜像仓库,我的环境中用的是jenkins/inbound-agent这个。
- 进入到该镜像仓库后,搜索tag为3107.v665000b_51092的镜像,这里我选择使用3107.v665000b_51092-15-jdk17,因为Jenkins服务端的Java版本也是17,保持一致即可。
- 在Jenkins的helm chart中的values.yaml中,将inbound-agent镜像的tag更新为3107.v665000b_51092-15-jdk17
- 执行helm upgrade更新Jenkins release