Skip to content

Latest commit

 

History

History
53 lines (32 loc) · 1.66 KB

手动同步apiserver与kubelet自动产生的证书.md

File metadata and controls

53 lines (32 loc) · 1.66 KB

现象

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加入mastertoken命令。

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表示现场环境特定的输出内容,每个环境不一样,请操作者注意。