Kubernetes中清空一個node的所有pod
有時侯kubernetes中有些node會出現故障 這時侯就需要用到兩個命令 drain及uncordon
# 先獲取node 的名字
kubectl get nodes
# 命令node開始釋放所有pod, 並且不接收新的pod 排程
kubectl drain [node-name] --force --ignore-daemonsets --delete-local-data
#
# 這時侯把該做的事情都做一下 ...
#
# 恢復node,回復接收新的pod 排程
kubectl uncordon [node-name]
drain的參數
--force
當一些pod不是經 ReplicationController, ReplicaSet, Job, DaemonSet 或者 StatefulSet 管理時
就需要用--force來強制執行 (例如:kube-proxy)
--ignore-daemonsets
無視DaemonSet管理下的Pod
--delete-local-data
如果有mount local volumn的pod,會強制殺掉該pod並把資料清除掉
另外如果跟本身的配置訊息有衝突時,drain就不會執行
例如你在一個運行了三個replica的statefulSet中設定了PodDisruptionBudget,而minAvaliability又設成了2,當正在運行的pod數量等於或少於2的時侯,drain就會停止執行