Jenkins结合Kubernetes运行Pod时随机出现5000ms未就绪报错
Jenkins K8s插件随机抛出
io.fabric8.kubernetes.client.KubernetesClientException: not ready after 5000 MILLISECONDS解决方案 问题场景
在使用Jenkins结合Kubernetes运行任务Pod时,随机触发以下错误:
io.fabric8.kubernetes.client.KubernetesClientException: not ready after 5000 MILLISECONDS
环境信息
- Jenkins版本:2.346.2(Helm安装)
- Jenkins Kubernetes插件版本:3670.v6ca_059233222
- Kubernetes版本:v1.24.3(Ubuntu服务器)
master:~$ kubectl version --short Flag --short has been deprecated, and will be removed in the future. The --short output will become the default. Client Version: v1.24.3 Kustomize Version: v4.5.4 Server Version: v1.24.3
任务Pod配置
apiVersion: v1 kind: Pod spec: containers: - name: kubectl image: joshendriks/alpine-k8s command: - /bin/cat tty: true - name: docker image: docker:latest command: - cat tty: true volumeMounts: - mountPath: /var/run/docker.sock name: docker-sock volumes: - name: docker-sock hostPath: path: /var/run/docker.sock
解决办法
1. 延长Pod就绪超时时间
随机报错大概率是节点资源波动导致Pod启动速度不稳定,默认5秒的超时时间不足以等待Pod就绪:
- 进入Jenkins 系统管理 → 系统配置 → 云 → Kubernetes云配置
- 找到「Pod就绪超时」选项,将默认的5000ms调整为15000ms-30000ms
- 保存配置后重新触发任务验证
2. 优化Pod启动配置,减少启动延迟
- 添加资源请求/限制:避免节点资源竞争导致Pod调度或启动缓慢,给容器配置合理的资源参数:
apiVersion: v1 kind: Pod spec: containers: - name: kubectl image: joshendriks/alpine-k8s command: - /bin/cat tty: true resources: requests: cpu: "100m" memory: "256Mi" limits: cpu: "500m" memory: "512Mi" - name: docker image: docker:latest command: - cat tty: true volumeMounts: - mountPath: /var/run/docker.sock name: docker-sock resources: requests: cpu: "100m" memory: "256Mi" limits: cpu: "500m" memory: "512Mi" volumes: - name: docker-sock hostPath: path: /var/run/docker.sock - 预拉取镜像:在Kubernetes节点上提前拉取任务用到的
joshendriks/alpine-k8s和docker:latest镜像,减少Pod启动时的镜像拉取耗时:# 在所有K8s节点执行 docker pull joshendriks/alpine-k8s docker pull docker:latest
3. 检查Kubernetes节点资源状态
节点资源耗尽或IO过高会直接影响Pod启动速度:
- 查看节点CPU、内存使用率:
kubectl top nodes - 检查节点磁盘使用情况和IO负载:
对资源紧张的节点进行扩容或清理,避免影响Pod调度和启动。df -h iostat -x 1 5
4. 更新Kubernetes插件到兼容稳定版
当前使用的插件版本存在fabric8客户端超时的潜在问题,更新到最新稳定版可修复已知bug:
- 进入Jenkins 系统管理 → 插件管理 → 已安装,找到Kubernetes插件,点击更新到最新稳定版(如3919.vd0a_36899a_7b_9)
- 更新完成后重启Jenkins,验证问题是否解决
5. 调整fabric8客户端全局超时参数
如果上述方法无效,可直接调整Jenkins使用的fabric8客户端超时参数:
- 修改Jenkins启动参数,添加以下JVM参数:
(如果是Helm安装,可在values.yaml中配置-Dkubernetes.client.connection.timeout=30000 -Dkubernetes.client.request.timeout=30000javaOpts字段添加该参数) - 重启Jenkins后生效
内容的提问来源于stack exchange,提问作者Eslam Ali
相关产品推荐
相关产品推荐

