kubeadm token过期后,须在Master节点重新生成有效token并配合CA证书哈希值才能加入节点;推荐首选kubeadm token create --print-join-command一键获取完整join命令,避免手动出错。

当Kubernetes集群中用于节点加入的kubeadm token已过期(默认24小时),新节点执行kubeadm join会因认证失败而拒绝接入,必须在Master节点上重新生成有效token并配合CA证书哈希值才能完成加入。
快速获取可用join命令(推荐首选)
在Master节点上直接运行以下命令,它会自动生成新token、自动计算CA证书哈希,并一次性输出完整可执行的join指令:
kubeadm token create --print-join-command
该命令输出形如kubeadm join 192.168.0.183:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:ce07a7f5b259961884c55e3ff8784b1eda6f8b5931e6fa2ab0b30b6a4234c09a的完整命令。复制整行,在待加入的Node节点上粘贴执行即可。
注意:此方法跳过了手动查token、算hash两个易错环节,【强烈建议优先使用】,尤其适用于紧急恢复场景。
分步手动重建Token与CA哈希
若需对流程有完全控制权(例如要设置永不过期token、或调试失败原因),请按顺序执行以下三步:
第一步:生成新token
kubeadm token create
该命令返回一个类似abcd12.efgh34ijkl56mnop的16字符token。默认有效期为24小时;如需永久有效,加--ttl 0参数:kubeadm token create --ttl 0。
第二步:提取CA证书SHA256哈希值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
这一步必须在Master节点执行,且路径/etc/kubernetes/pki/ca.crt不可写错——【若路径错误或证书不存在,join将因CA校验失败而静默退出】。输出为64位小写十六进制字符串,开头带sha256:前缀。
第三步:拼接并执行join命令
将第一步得到的token和第二步得到的完整sha256:xxx字符串,填入标准join模板:
kubeadm join <master-ip>:<port> --token <your-token> --discovery-token-ca-cert-hash <your-sha256-hash>
例如:kubeadm join 192.168.40.8:6443 --token abcd12.efgh34ijkl56mnop --discovery-token-ca-cert-hash sha256:ce07a7f5b259961884c55e3ff8784b1eda6f8b5931e6fa2ab0b30b6a4234c09a。
Node节点加入前的必要清理
如果该Node曾加入过此集群但失败过,或之前已加入其他集群,必须先重置本地状态,否则kubeadm join会报错“cannot add node to an existing cluster”或证书冲突:
在Node节点上执行:
kubeadm reset -f
随后重启kubelet确保干净启动:
systemctl restart kubelet
这一步不可省略——【未执行reset就重复join,90%以上概率卡在TLS握手或etcd连接阶段】。


















