K8S基本操作-26-Drain
Drain 與 uncordon
在 Kubernetes (K8S) 中,Drain (有排水的意思) 功能可以將 Pod 轉移到其他的 Node。
方便對某個 Node 進行更新。
排空 node01 由於一般會有 Daemonsets,所以必須採用--ignore-daemonsets
才不會報錯。
例如,如果我們的 Node 稱為 node-1,排掉所有 Pod 到其他 Node 的指令為:
kubectl drain node-1 --ignore-daemonsets
注意!必須要有 Replica Set 才可以順利受到 Drain 調度,如果沒有 Replica Set 甚至會報錯。
雖然加上 --force 可以強制完成 drain ,但沒有 Replica Set 的 Pod 會永久消失。
uncordon 有解除警戒的意思。
讓所有 Pod 能重新安排到更新好的 Node 的指令為:
kubectl uncrodon node-1
防止一個 Node 新增新 Pod ,但不排掉舊 Pod
cordon off 有封鎖某區域的意思。
如果有個關鍵的 Pod 並且不存在於 Replica Set,這時候我們需要用 cordon 來確保新 Pod 不會調度到該 Node 上,之後才進行更新。
(當然,最好仍是將該Pod轉移到某個 Replica Set 或者 Deployment 上。)
這種情況可以用以下指令:
kubectl crodon node-1