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

Kubernetes通过自定义域名访问报x509证书不匹配问题如何解决?

问题根因

你遇到的报错本质是Kubernetes API Server的服务端TLS证书未包含自定义域名my_domain.com作为使用者可选名称(SAN),和你为用户Bob生成的客户端认证证书无关,你给客户端证书添加SAN的操作对解决这个问题没有作用。

解决方案

方案1:生产可用正式配置(推荐)

以kubeadm部署的集群为例,二进制部署集群可对应调整操作:

  • 步骤1:更新kubeadm配置的证书SAN列表
    执行命令导出现有集群配置:
kubeadm config view > kubeadm-config.yaml

编辑yaml文件,在apiServer字段下新增/修改certSANs配置,原有IP、域名不要删除,仅新增你的自定义域名即可:

apiServer:
  certSANs:
  - control-plane # 原有保留域名
  - my_domain.com # 新增你的自定义域名
  # 原有其他IP、域名全部保留即可
  • 步骤2:重新生成API Server服务端证书
    先备份原有旧证书避免故障:
mv /etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/apiserver.crt.bak
mv /etc/kubernetes/pki/apiserver.key /etc/kubernetes/pki/apiserver.key.bak

基于更新后的配置重新生成证书:

kubeadm init phase certs apiserver --config kubeadm-config.yaml
  • 步骤3:重启API Server生效
    kubeadm部署的API Server默认是静态Pod,删除Pod后kubelet会自动用新证书重建:
kubectl delete pod -n kube-system kube-apiserver-<控制平面节点主机名>

也可以直接重启kubelet服务触发重建:

systemctl restart kubelet
  • 步骤4:本地验证访问
    等待API Server启动完成后,在本地执行kubectl cluster-info即可验证通过my_domain.com正常访问集群。

如果是非kubeadm二进制部署的集群,核心逻辑一致:重新用集群根CA签发包含my_domain.com作为SAN的API Server服务端证书,替换原有证书后重启API Server即可。

方案2:临时测试方案(生产禁用)

如果仅做临时测试不想修改服务端配置,可以在本地kubeconfig的cluster配置中添加跳过TLS校验参数,忽略证书域名不匹配问题:

clusters:
- cluster:
    certificate-authority-data: <..Q0FURS0tLS0tCk..>
    server: https://my_domain.com:<port>
    insecure-skip-tls-verify: true # 新增这一行
  name: bob

注意该配置会跳过服务端证书校验,存在中间人攻击风险,仅可用于临时测试场景。


内容的提问来源于stack exchange,提问作者Chris G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:15:02