You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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负载:
    df -h
    iostat -x 1 5
    
    对资源紧张的节点进行扩容或清理,避免影响Pod调度和启动。

4. 更新Kubernetes插件到兼容稳定版

当前使用的插件版本存在fabric8客户端超时的潜在问题,更新到最新稳定版可修复已知bug:

  • 进入Jenkins 系统管理 → 插件管理 → 已安装,找到Kubernetes插件,点击更新到最新稳定版(如3919.vd0a_36899a_7b_9)
  • 更新完成后重启Jenkins,验证问题是否解决

5. 调整fabric8客户端全局超时参数

如果上述方法无效,可直接调整Jenkins使用的fabric8客户端超时参数:

  • 修改Jenkins启动参数,添加以下JVM参数:
    -Dkubernetes.client.connection.timeout=30000 -Dkubernetes.client.request.timeout=30000
    
    (如果是Helm安装,可在values.yaml中配置javaOpts字段添加该参数)
  • 重启Jenkins后生效

内容的提问来源于stack exchange,提问作者Eslam Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:33:28