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

kubeadm join报无法验证API Server身份x509证书错误修复方案

问题原因

kubeadm join预检阶段报x509证书校验错误,核心原因是kube-apiserver签发的TLS证书SAN(主体备用名称)列表未包含你使用的外部IPXXX.XXX.XXX.XXX。kubeadm初始化集群时,默认只会将控制平面节点内网IP、kubernetes服务集群IP(即报错中的10.96.0.1)、默认内置域名加入证书信任列表,不会自动添加公网/额外外部IP,因此用外部IP访问API Server时会触发证书合法性校验失败。
报错中提到的missing optional cgroups: blkio为非阻断警告,不影响节点加入流程,无需额外处理。

修复方案

根据集群当前状态二选一操作即可:

方案一:集群未部署业务,可重新初始化(操作最简单)

  • 在控制平面节点执行kubeadm reset清理原有集群配置,执行前确认节点上无需要保留的业务数据。
  • 新建kubeadm初始化配置文件,将外部IP加入apiserver的证书SAN列表,示例配置如下,注意替换成你实际的版本、网段参数:
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: "v1.27.3" # 替换为实际部署的Kubernetes版本
controlPlaneEndpoint: "XXX.XXX.XXX.XXX:6443" # 填写用于节点接入的外部IP
apiServer:
  certSANs:
  - "10.96.0.1"
  - "10.0.0.71"
  - "XXX.XXX.XXX.XXX" # 新增需要加入的外部IP
  - "kubernetes"
  - "kubernetes.default"
  - "kubernetes.default.svc"
  - "kubernetes.default.svc.cluster.local"
networking:
  podSubnet: "10.244.0.0/16" # 替换为实际使用的Pod网段,flannel默认用该网段
  serviceSubnet: "10.96.0.0/12"
  • 执行初始化命令:kubeadm init --config=kubeadm-config.yaml
  • 初始化完成后,按照输出提示重新生成join命令,到工作节点执行即可正常接入。

方案二:集群已运行业务,无法重新初始化(在线更新证书,无业务中断)

  • 登录控制平面节点,先备份原有证书目录,防止操作失误导致集群故障:
    cp -r /etc/kubernetes/pki /etc/kubernetes/pki.bak
    注意:该备份操作必须执行,若证书更新失败可通过回滚备份文件快速恢复集群
  • 导出当前集群的kubeadm配置文件:
    kubectl get configmap kubeadm-config -n kube-system -o yaml > kubeadm-config.yaml
  • 编辑导出的kubeadm-config.yaml文件,找到ClusterConfiguration配置块,在apiServer字段下新增certSANs列表,保留原有已存在的IP、域名条目,新增外部IPXXX.XXX.XXX.XXX。
  • 执行命令重新生成apiserver证书:
    kubeadm init phase certs apiserver --config kubeadm-config.yaml
  • 重启kubelet加载新证书:
    systemctl restart kubelet
  • 等待30-60秒待apiserver恢复正常后,验证证书是否已添加目标外部IP:
    openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep -A 10 "Subject Alternative Name"
    输出结果中能看到你添加的外部IP,即代表证书更新成功。
  • 回到待接入的工作节点,重新执行原kubeadm join命令即可完成接入。
修复验证

在待接入节点执行以下命令测试API Server连通性,无证书报错即代表修复完成:
curl -k https://XXX.XXX.XXX.XXX:6443/version
正常情况下会返回Kubernetes版本信息的JSON串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 20:27:21