You need to enable JavaScript to run this app. 为kubeadm部署的K8s API Server添加备用IP解决x509报错
优惠活动
大模型
产品
解决方案
定价
更多

为kubeadm部署的K8s API Server添加备用IP解决x509报错

kubeadm部署K8s公网访问x509证书校验错误解决方案

问题本质

kubeadm初始化集群时生成的API Server TLS证书,仅覆盖初始化配置时指定的网络地址(集群内部IP 172.26.2.101、集群核心服务网段IP 10.96.0.1),未将主节点的AWS Lightsail公网IP加入证书的*主题备用名称(SAN)*列表,因此本地客户端使用公网IP发起TLS连接时,会因证书有效范围不匹配触发校验失败。

推荐解决方案:为API Server证书补充公网IP SAN

该方式为kubeadm官方支持的标准操作,无安全风险,步骤如下:

  • 登录K8s主节点,导出当前集群的kubeadm配置:kubeadm config view > cluster-config.yaml
  • 打开cluster-config.yaml配置文件,定位到apiServer配置段落,在certSANs字段下追加主节点的公网IP(无该字段则手动新增),示例格式:
    apiServer:
      certSANs:
      - 10.96.0.1
      - 172.26.2.101
      - <对应主节点的AWS Lightsail公网IP>
    
  • 基于更新后的配置重新签发API Server证书:kubeadm certs renew apiserver --config cluster-config.yaml
  • 等待kubelet自动重启kube-apiserver静态Pod加载新证书:可执行kubectl -n kube-system delete pod kube-apiserver-<主节点主机名>加速重启过程,10秒左右组件即可完成恢复。
  • 证书更新完成后,直接使用本地已替换为公网IP的kubeconfig发起连接即可,无需额外调整客户端证书配置。

临时测试方案:跳过客户端证书校验(存在安全风险,不推荐生产环境使用)

如果仅做临时调试,不想改动集群侧配置,可通过修改本地客户端配置跳过服务端证书校验:

  • 单次命令生效:执行kubectl命令时追加参数--insecure-skip-tls-verify,例如kubectl --insecure-skip-tls-verify get nodes
  • 长期配置生效:打开本地.kube/config文件,找到对应集群配置段,删除certificate-authority-data字段,新增配置项insecure-skip-tls-verify: true

风险提示:该配置下客户端不会校验API Server的身份,存在中间人攻击风险,严禁在生产环境开启。

配套排查注意事项

完成证书调整后如果仍无法连接,优先检查以下常见配置问题:

  • AWS Lightsail主节点的实例防火墙规则,需放开6443端口的入站访问权限,匹配本地客户端的公网IP来源
  • 主节点操作系统内部的防火墙(如ufw、firewalld),需同步放开6443端口,避免被系统层规则拦截
  • 若后续主节点公网IP发生变动,只需重复上述证书更新步骤,将新公网IP追加到certSANs列表重新签发证书即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 01:15:01