一、刪除node節點
1、先查看一下這個node節點上的pod信息

2、驅逐這個node節點上的pod
# kubectl drain node06 --delete-local-data --force --ignore-daemonsets
3、刪除這個node節點
# kubectl delete nodes node06
4、然后在node06這個節點上執行如下命令:
kubeadm reset
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
systemctl start docker
systemctl start kubelet
如果不做上面的操作的話會導致這個節點上的pod無法啟動,具體報錯信息為:networkPlugin cni failed to set up pod "alertmanager-main-1_monitoring" network: failed to set bridge ad has an IP address different from 10.244.5.1/24 ,意思是已經集群網絡cni已經有一個不同於10.244.51.1/24 的網絡地址,所以需要執行上述命令重置節點網絡。
二、重新加入這個node節點
節點加入集群的命令格式:kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
由於默認token的有效期為24小時,當過期之后,該token就不可用了,解決方法如下:
重新生成新的token ==> kubeadm token create
# 1.查看當前的token列表
# kubeadm token list
# 2.重新生成新的token
# kubeadm token create
# 3.再次查看當前的token列表
# kubeadm token list
# 4.獲取ca證書sha256編碼hash值
# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
# 5.節點加入集群
# kubeadm join 172.16.40.2:58443 --token 369tcl.oe4punpoj9gaijh7(新的token) --discovery-token-ca-cert-hash sha256:7ae10591aa593c2c36fb965d58964a84561e9ccd416ffe7432550a0d0b7e4f90(ca證書sha256編碼hash值)
再次在master節點查看node發現已經加入到集群了。
