k8s節點簡介、移除節點、新增節點;刪除k8s


簡介

Node是Pod真正運行的主機,可以是物理機也可以是虛擬機。

Node本質上不是Kubernetes來創建的, Kubernetes只是管理Node上的資源。

為了管理Pod,每個Node節點上至少需要運行container runtime(Docker)、kubelet和kube-proxy服務。

node基本操作:kubectl get nodes,查詢所有node

 

從k8s移除node節點

獲取節點列表:kubectl get node

 

確認需要移除的節點上面沒有部署我們所需要的資源:kubectl get pod -A -owide |grep "k8s-node02"

 

設置不可調度(不分配新的資源到該節點上),也就是下線:kubectl cordon k8s-node02

(另外,上線<取消節點不可調度>:kubectl uncordon k8s-node02)

檢查節點狀態,kubectl get nodes

被標記為不可調度節點,節點狀態變成:Ready,SchedulingDisabled

 

驅逐節點上的Pod(先驅趕掉上面的pod,daemonset不會被排出節點,其它的pod自動轉移到其它節點;drain意為排出,此時卸載節點,但是沒有刪除;drain命令會自動把node設置為不可調度,所以可以省略上面執行的cordon命令)

驅逐前,在k8s-node02上

 

kubectl drain k8s-node02 --delete-local-data --force --ignore-daemonsets

 

 

驅逐后,自動轉移到k8s-node01上了

 

節點上pod都被驅逐后,可以直接移除節點:kubectl delete node k8s-node02

這樣就平滑移除了一個 k8s 節點

 

在被刪除的node節點中清空集群數據信息【被刪除節點執行】:

清空前:

 

kubeadm reset -f

 

清空后:

 

k8s新增node節點

新的node需要安裝docker和k8s基礎組件,參考:https://www.cnblogs.com/uncleyong/p/15499732.html

在master節點查看集群的token值,其中TTL值默認token的有效期為24小時,當過期之后,該token就不可用了。

kubeadm token list

 

上面結果為空,說明過期了,可以master上重新生產token並獲取hash值:kubeadm token create --print-join-command

kubeadm join 192.168.117.171:6443 --token e3teen.vkisycda6z20glxw --discovery-token-ca-cert-hash sha256:196a26bd21bb2e277fae1cebd247723af113207fb5b11eab25b51d4041714249

 

生成永久Token:kubeadm token create --ttl 0 --print-join-command

 

kubeadm token list

 

獲取Token:kubeadm token list | awk -F" " '{print $1}' |tail -n 1

 

將node節點重新添加到k8s集群中【被添加節點執行】

kubeadm join 192.168.117.171:6443 --token e3teen.vkisycda6z20glxw --discovery-token-ca-cert-hash sha256:196a26bd21bb2e277fae1cebd247723af113207fb5b11eab25b51d4041714249

 

master查看新節點的是否加入,如果新加節點是NotReady狀態,重啟kubelet后就變成Ready了(systemctl restart kubelet)

kubectl get nodes【master執行】

 

kubectl get pods -n kube-system -owide【master執行】

 

驗證:調度到指定節點,nodeName: k8s-node02

 

curl 172.27.14.193

 

【單】reset后重新創建k8s集群

1、每個節點執行:kubeadm reset -f

 

如果遇到如下問題,需要做修復操作,參考:https://www.cnblogs.com/uncleyong/p/15766921.html

日志信息:journalctl -xeu kubelet

 

說明:下面的步驟可以參考https://www.cnblogs.com/uncleyong/p/15499732.html

2、master01節點拉取鏡像:kubeadm config images pull --config /root/kubeadm-config.yaml

 

3、master01節點初始化集群:kubeadm init --config /root/kubeadm-config.yaml  --upload-certs

 

4、node節點執行上面紅框中的命令

 

5、然后master節點可以查看集群節點:kubectl get node

 

6、安裝calico

kubectl apply -f calico.yaml

 

7、安裝metrics server:這樣就可以使用kubectl top命令

 

8、去掉master污點

 

9、kube-proxy改為性能更好的ipvs

 

10、如果是自動化企業級持續集成,還需要完成:

更新k8s憑證並測試jenkins和k8s集群是否通,因為admin.conf的內容變了:https://www.cnblogs.com/uncleyong/p/16555667.html,bak版本(還包含master01打標簽)

添加maven的cm:https://www.cnblogs.com/uncleyong/p/16717272.html#_label4

 

徹底刪除k8s

卸載服務(清理控制節點,master主機上執行)

kubeadm reset -f ; ipvsadm --clear ; rm -rf ~/.kube
 
 
刪除rpm包
下面兩個查詢一樣,如果有正則,需要引號
rpm -qa |grep 'kube*'
rpm -qa |grep kube
rpm -qa|grep kube | xargs rpm --nodeps -e
 
 
刪除容器及鏡像
docker images -qa | xargs docker rmi -f
 
 
 
刪除節點
在刪除節點之前,請重置 kubeadm 安裝的狀態:kubeadm reset -f
刪除節點:kubectl delete node <node name>
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM