Jenkins连接Kubernetes遇x509证书错误,如何正确配置IP?
解决Jenkins连接Kubernetes时的x509证书IP不匹配问题
错误原因
你的Kubernetes API Server的TLS证书中未包含Jenkins访问时使用的<x.x.x.x> IP,证书仅对10.x.x.x、127.0.0.1等IP有效,导致TLS验证失败。
解决方案
方案1:改用证书已认可的IP访问(最简单,推荐)
直接修改Jenkins使用的kubeconfig配置,将API Server地址替换为证书已包含的10.0.0.x:
- 打开Jenkins中
config_de对应的kubeconfig凭证 - 将
clusters[0].cluster.server字段修改为https://10.0.0.x:6443(和你本地curl测试用的IP一致) - 保存后重新运行Jenkins流水线
方案2:给API Server证书添加目标IP(需集群操作)
如果必须使用<x.x.x.x>这个IP访问,需要更新API Server的TLS证书,把该IP加入证书的SAN(Subject Alternative Name)列表:
- 备份原有证书(重要):
cp /etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/apiserver.crt.bak cp /etc/kubernetes/pki/apiserver.key /etc/kubernetes/pki/apiserver.key.bak - 创建kubeadm配置文件(用于更新证书),比如
kubeadm-config.yaml:apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration kubernetesVersion: v1.28.0 # 替换为你的集群实际版本 apiServer: certSANs: - "10.0.0.x" - "10.x.x.x" - "127.0.0.1" - "<x.x.x.x>" # 添加你需要的目标IP - 更新API Server证书:
kubeadm certs renew apiserver --config kubeadm-config.yaml - 重启kube-apiserver组件:
systemctl restart kube-apiserver - 更新Jenkins的kubeconfig中
server字段为https://<x.x.x.x>:6443,重新运行流水线
方案3:临时跳过证书验证(不推荐生产环境)
在kubeconfig中添加跳过TLS验证的配置,快速绕过错误,但会带来安全风险:
clusters: - cluster: certificate-authority-data: <.....> server: https://x.x.x.x:6443 insecure-skip-tls-verify: true # 新增此行 name: cluster.local
额外注意事项
确保Jenkins使用的kubeconfig绑定的是你创建的cicd服务账号,而非当前的grafana账号:
- 替换kubeconfig中的用户信息为
cicd的token:users: - name: cicd user: token: <你之前生成的cicd token> - 修改默认context为
cicd对应的上下文:contexts: - context: cluster: cluster.local user: cicd name: cicd-context current-context: cicd-context
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

