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

外部Jenkins调用K8s v1.22创建Pod报kube-root-ca.crt未注册错误如何解决

问题根因

该报错是Kubernetes v1.22+ 版本特性与旧版Jenkins Kubernetes插件不兼容导致:Kubernetes v1.21及以上版本默认开启ServiceAccount投影卷特性,会为每个Pod自动注入名为kube-root-ca.crt的ConfigMap作为集群API访问根证书卷,而你当前使用的Jenkins Kubernetes插件版本未适配该特性,触发卷挂载失败。

解决步骤

按优先级选择以下任意方案即可:

  • 方案1(优先推荐):升级Jenkins Kubernetes插件到1.30.11及以上版本
    该版本开始官方完成了Kubernetes v1.22+的特性兼容,升级完成后重启Jenkins,重新触发任务即可验证。
  • 方案2(无需升级兼容):禁用Slave Pod的ServiceAccount自动挂载
    进入Jenkins「系统管理」→「节点和云」→「对应Kubernetes云配置」,找到你的Slave Pod模板,勾选「禁用自动挂载服务账号」选项后保存。因为你的Jenkins是外部部署,全局已经配置了集群访问凭证,Slave Pod本身不需要挂载集群内的ServiceAccount凭证,关闭该选项不会影响任务正常运行。
  • 方案3(兜底方案):手动在目标命名空间创建缺失的ConfigMap
    若上述两个方案暂时无法执行,可以手动将集群中存在的kube-root-ca.crt ConfigMap同步到Jenkins Slave运行的命名空间,执行命令如下:
    # 导出kube-system命名空间下的默认根证书ConfigMap
    kubectl get configmap kube-root-ca.crt -n kube-system -o yaml > kube-root-ca.yaml
    # 编辑导出的yaml文件,将metadata.namespace字段修改为你运行Jenkins Slave的命名空间(默认是default)
    # 应用到目标命名空间
    kubectl apply -f kube-root-ca.yaml
    
    配置完成后重新触发任务即可。
验证逻辑

任务触发后查看Pod事件,确认无MountVolume.SetUp failed相关报错,Slave Pod正常进入Running状态即为修复完成。

内容的提问来源于stack exchange,提问作者P. Phalak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:54:04