k8s误删除证书文件修复

不小心将测试服务器上k8s一个节点的所有证书文件删除,从另一台机器将证书文件拷贝过来启动运行时节点状态总是NotReady。

排查过程

首先查看所有服务的运行状态,发现所有服务都是running状态,进一步查看发现kubelet服务有报错信息。显示如下:

kubelet[4696]: E1216 00:26:17.345636 4696 kubelet_node_status.go:106] Unable to register node “172.16.0.10” with API server: nodes “172.16.0.10” is forbidden: node “172.16.0.9” cannot modify node “172.16.0.10”

通过此处知道大概是kubelet服务认证文件有问题,从网上搜索发现kubelet的证书是通过在主节点使用 kubectl certificate approve 命令来生成的。

解决方法:
问题的关键是重新配置kubelet相关的证书,因此首先将kubelet相关的ssl证书移走。

kubelet相关的证书主要有这几个

[root@k8s-node3-172-233 ssl]# ls kubelet*
kubelet-client.crt
kubelet-client.key
kubelet.crt
kubelet.key
kubelet.kubeconfig

移走相关文件

mkdir /tmp/ssl
mv kubelet* /tmp/ssl
mv …/cfg/kubelet.kubeconfig /tmp/ssl

重启相关服务

systemctl restart flannel kube-proxy kubelet flannel docker

重启服务后发现自动生成了几个证书

kubelet-client.key
kubelet.crt
kubelet.key

还有几个证书没有生成

ls …/cfg/kubelet.kubeconfig
ls: cannot access …/cfg/kubelet.kubeconfig: No such file or directory

通过kublet的TLS证书请求
kubelet 首次启动时向 kube-apiserver 发送证书签名请求,必须通过后 kubernetes 系统才会将该 Node 加入到集群。

查看未授权的 CSR 请求

[root@k8s-master2-172-230 ~]# kubectl get csr
NAME AGE REQUESTOR CONDITION
node-csr-t4 2m kubelet-bootstrap Pending

通过 CSR 请求

kubectl certificate approve node-csr-t4

自动生成了 kubelet kubeconfig 文件和公私钥

ls …/cfg/kubelet.kubeconfig
…/cfg/kubelet.kubeconfig

ls kubelet*
kubelet-client.crt kubelet-client.key kubelet.crt kubelet.key

再次查看节点状态已经正常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值