1、使用大佬的成果(-_-)

  因为我的k8s是使用kubeadm搭建,所以只需要使用kubeadm直接续签就行;
  原文连接:http://t.zoukankan.com/zoujiaojiao-p-15161862.html

2、查看证书有效期

kubeadm alpha certs check-expiration

确认是证书过期导致kubectl命令无法使用,再进行下面的操作。

3、备份数据

3.1 备份k8s证书及配置文件
cp -r /etc/kubernetes  /etc/kubernetes_bak
3.2 备份用户config文件
cp $HOME/.kube/config $HOME/.kube/config_bak

4、重新生成证书

kubeadm alpha certs renew all

5、替换用户config

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

现在可以使用kubectl命令查看资源,但是无法创建;

6、重启kubelet

systemctl restart kubelet
systemctl status kubelet  #查看重启后的状态

7、重启kube-apiserver、kube-controller-manager、kube-scheduler的pod

注:不能使用kubectl delete pod pod_name 来重启pod。至于为什么,可以参看大佬的文章
这一步如果没有做的话,kubectl命令能使用,但是无法扩容pod,也无法创建资源。

正确做法: 找到每个组件对应的docker 容器,然后重启容器

docker ps |grep kube-apiserver|grep -v pause|awk '{print $1}'|xargs -i docker restart {}
docker ps |grep kube-controller-manage|grep -v pause|awk '{print $1}'|xargs -i docker restart {}
docker ps |grep kube-scheduler|grep -v pause|awk '{print $1}'|xargs -i docker restart {}

当然也可以只采用awk前面一段,然后手动restart。

这一步只需要在master节点上执行。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐