在Rong kubernetes1.15.3
集群环境中,默认配置证书过期时间为100
年,但是kubelet
默认配置会每隔一年更新证书。
更新证书后,与apiserver
服务端通信时,kubelet
日志会出现认证错误cannot create certificate signing request: Unauthorized
。
使用命令查看节点,发现所有的worker
节点处于NotReady
状态。
kubectl get node
NAME STATUS ROLES AGE VERSION
test-1 NotReady <none> 2y364d v1.15.3
test-2 NotReady <none> 2y364d v1.15.3
test-3 Ready master 2y364d v1.15.3
手动重新将worker
节点加入到master
中。
分为以下两步
1)在任一master
节点上,执行以下命令删除所有的csr
对象。(该对象用于批准worker
加入master
,存在过期可能)
kubectl delete csr --all
然后获取worker
加入master
的token
命令。
kubeadm token create --print-join-command
以上的输出为worker
节点加入master
的命令。类似以下格式
kubeadm join x.x.x.x:6443 --token xxxxxxxxxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxx
2)在出现问题的worker
节点上运行加入master
的命令,并且忽略所有错误,命令为步骤1中产生输出加入标志--ignore-preflight-errors=all
。
kubeadm join x.x.x.x:6443 --token xxxxxxxxxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxx --ignore-preflight-errors=all
执行完后,登录master
节点,使用命令kubectl get node
检查worker
节点状态是否为Ready
,正常为Ready
。
注: x
表示现场环境特定的输出内容,每个环境不一样,请操作者注意。