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

如何向X509证书添加公网IP以访问Kubernetes API Server

解决kubeadm部署Kubernetes集群apiserver公网访问证书校验失败问题

报错本质:kubeadm生成apiserver证书时默认仅加入集群服务IP、节点内网IP等SAN字段,未包含公网IP/域名,因此公网访问时x509校验不通过。

操作步骤(所有操作均在Master节点执行)

  • 第一步:备份现有证书,避免操作异常可回滚
cp -r /etc/kubernetes/pki /etc/kubernetes/pki.bak
  • 第二步:导出当前集群的kubeadm配置文件
kubectl get configmap kubeadm-config -n kube-system -o jsonpath={.data.ClusterConfiguration} > kubeadm-config.yaml
  • 第三步:修改kubeadm配置文件,新增公网IP和域名到证书SAN列表
    打开kubeadm-config.yaml,找到apiServer配置段,新增certSANs配置(已存在则直接追加条目):
apiServer:
  certSANs:
  - 10.96.0.1 # 原有集群服务IP
  - 172.29.217.209 # 原有节点内网IP
  - 107.124.83.31 # 新增你的公网IP
  - api.your-domain.com # 新增你要使用的公网域名,没有可省略
  extraArgs:
    authorization-mode: Node,RBAC
  timeoutForControlPlane: 4m0s
  • 第四步:删除旧的apiserver证书,触发kubeadm生成新证书
rm /etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/apiserver.key
  • 第五步:基于修改后的配置生成新的apiserver证书
kubeadm init phase certs apiserver --config kubeadm-config.yaml
  • 第六步:验证证书是否已包含新增的公网IP/域名
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout | grep -A 10 "Alternative Name"

输出中可以看到你新增的公网IP和域名即代表配置生效。

  • 第七步:重启apiserver加载新证书
    kubeadm部署的apiserver为静态Pod,直接移动静态Pod清单触发重启即可:
mv /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/
sleep 20
mv /tmp/kube-apiserver.yaml /etc/kubernetes/manifests/

等待1-2分钟后apiserver即可加载新证书启动完成。

  • 第八步:更新访问用kubeconfig
    将Master节点上/etc/kubernetes/admin.conf文件拷贝到本地访问设备的~/.kube/config路径,替换文件内server地址为你的公网IP或域名即可正常访问。

注意事项

  • 多Master集群需要在每台Master节点上依次执行上述证书生成、重启apiserver操作
  • 需确认公网安全组/防火墙已放开6443端口的入站访问规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 15:18:03