這個主題目的是安全的維護節點,或移除節點 。
封鎖(隔離)Node
標記節點為不可調度, 新的pod不會調度到該節點,但不會影響該節點上任何現有pod 。
DaemonSet 創建的Pod會繞過調度程序,不遵守節點上的不可調度屬性。
kubectl cordon {NODENAME}
驅逐Node
安全驅逐節點上所有的Pod,被驅逐的Pod會優雅的終止。
kubectl drain {NODENAME} --delete-local-data --ignore-daemonsets
–delete-local-data:非共用磁碟,刪除local資料
–ignore-daemonsets:強制移轉daemonsets
取消封鎖Node
節點恢復可以調度。
kubectl uncordon {NODENAME}
刪除Node
若Cluster在雲上,不一定會同步刪除VM,此時須到雲上手動刪除。
kubectl delete node {NODENAME}
備註:節點故障或斷線情境
根據 controller-manager的–pod-eviction-timeout備至,默認5分鐘之後 K8s会把Pod狀態設置為Unknown , 之後在其他節點啟動Pod。當故障節點恢復後,K8s會刪除故障節點上面的Unknown pod。如果要手動恢復,需用上述指令進行強制遷移。