背景信息

因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年前的,版本比较老。

从2.462.2升级到2.479.1后,代理无法连接_Jenkins

处理措施

基于上述问题分析,可以判定agent无法与Jenkins服务器连接的原因是因为版本不兼容导致。要解决该问题,只需将agent的版本更新到3107.v665000b_51092即可。步骤如下:

  1. 到docker hub上找到agent的镜像仓库,我的环境中用的是jenkins/inbound-agent这个。
  2. 进入到该镜像仓库后,搜索tag为3107.v665000b_51092的镜像,这里我选择使用3107.v665000b_51092-15-jdk17,因为Jenkins服务端的Java版本也是17,保持一致即可。

从2.462.2升级到2.479.1后,代理无法连接_Kubernetes_02

  1. 在Jenkins的helm chart中的values.yaml中,将inbound-agent镜像的tag更新为3107.v665000b_51092-15-jdk17
  2. 执行helm upgrade更新Jenkins release