K8S叢集刪除與新增節點(含報錯解決方法)
一、刪除node節點
1、先檢視一下這個node節點上的pod資訊
2、驅逐這個node節點上的pod
# kubectl drain node06 --delete-local-data --force --ignore-daemonsets
3、刪除這個node節點
# kubectl delete nodes node06
4、然後在node06這個節點上執行如下命令:
kubeadmreset
systemctlstopkubelet
systemctlstopdocker
rm-rf/var/lib/cni/
rm-rf/var/lib/kubelet/*
rm-rf/etc/cni/
ifconfigcni0down
ifconfigflannel.1down
ifconfigdocker0down
iplinkdeletecni0
iplinkdeleteflannel.1
systemctlstartdocker
systemctlstartkubelet
如果不做上面的操作的話會導致這個節點上的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==>kubeadmtokencreate
#1.檢視當前的token列表
#kubeadmtokenlist
#2.重新生成新的token
#kubeadmtokencreate
#3.再次檢視當前的token列表
#kubeadmtokenlist
#4.獲取ca證書sha256編碼hash值
#opensslx509-pubkey-in/etc/kubernetes/pki/ca.crt|opensslrsa-pubin-outformder2>/dev/null|openssldgst-sha256-hex|sed's/^.*//'
#5.節點加入叢集
#kubeadmjoin172.16.40.2:58443--token369tcl.oe4punpoj9gaijh7(新的token)--discovery-token-ca-cert-hashsha256:7ae10591aa593c2c36fb965d58964a84561e9ccd416ffe7432550a0d0b7e4f90(ca證書sha256編碼hash值)
再次在master節點檢視node發現已經加入到叢集了。