k8s-"節點控制器驅逐Pod"


1 查看node信息

# kubectl describe node <node-name>
: Conditions-Ready-Status, 如果節點是健康的且已經就緒可以接受新的Pod。則節點Ready字段為 TrueFalse表明了該節點不
健康,不能夠接受新的Pod, Unknown表示節點不可達。


2 節點控制器驅逐Pod

(1) 節點控制器監控節點的健康狀況。當節點變得不可觸達時(例如,由於節點已停機,節點控制器不再收到來
自節點的心跳信號),節點控制器將節點API對象的 NodeStatus Condition 取值從 NodeReady 更新為 Unknown
;然后在等待 pod-eviction-timeout 時間后,將節點上的所有 Pod 從節點驅逐。
默認40秒未收到心跳,修改 NodeStatus Condition Unknown
默認 pod-eviction-timeout 5分鍾
節點控制器每隔 --node-monitor-period 5秒檢查一次節點的狀態

(2) 大多數情況下,節點控制器限制了驅逐 Pod 的速率為 --node-eviction-rate (默認值是0.1)每秒,即節點控
制器每 10 秒驅逐 1 Pod

(3) 如果 Ready 類型Condition status 持續為 Unkown 或者 False 超過 pod-eviction-timeoutkube-controller
-manager的參數)所指定的時間,節點控制器(node controller)將對該節點上的所有 Pod 執行刪除的調度動作。默認的 pod-eviction-timeout 時間是 5 分鍾。某些情況下(例如,節點網絡故障),apiserver 不能夠與節點上的 kubelet 通信,刪除 Pod 的指令不能下達到該節點的 kubelet 上,直到 apiserver 與節點的通信重新建立,指令才下達到節點。這意味着,雖然對 Pod 執行了刪除的調度指令,但是這些 Pod 可能仍然在失聯的節點上運行。

kubernetes v1.5 以前,節點控制器將從 apiserver 強制刪除這些失聯節點上的 Pod。在 v1.5 及以后的版本中,節點控制器將不會強制刪除這些 Pod,直到已經確認他們已經停止運行為止。您可能會發現失聯節點上的 Pod 仍然在運行(在該節點上執行 docker ps 命令可查看容器的運行狀態),然而 apiserver 中,他們的狀態已經變為 Terminating 或者 Unknown。如果 Kubernetes 不能通過node-manager 判斷失聯節點是否已經永久從集群中移除(例如,在虛擬機或物理機上自己部署 Kubernetes 的情況),集群管理員需要手工(通過 kubectl delete node your-node-name 命令)刪除 apiserver 中的節點對象。此時,Kubernetes 將刪除該節點上的所有Pod

Kubernetes v1.12 中,TaintNodesByCondition 特性進入 beta 階段,此時 node lifecycle controller 將自動創建該 Condition 對應的 污點。相應地,調度器在選擇合適的節點時,不再關注節點的 Condition,而是檢查節點的污點和 Pod 的容忍。

(4) 最極端的情況是,集群中一個健康的節點都沒有,此時節點控制器 master 節點的網絡連接出現故障,並停
止所有的驅逐 Pod 的動作,直到某些連接得到恢復。


3 示例

(1) 查看pod,分布在k8s-node2節點上

wps1[7]
(2) 停止k8s-node2主機
[root@k8s-node2 ~]# shutdown -h now
(4) 40s后節點狀態變為unknown
[root@k8s-admin ~]# kubectl describe node k8s-node2
wps2[10]
(5) 5m40s后,原k8s-node2節點上的pod被驅逐且狀態變為Terminating,此時在k8s-node1節點上
啟動了一個新的pod
wps3[4]
(6) 啟動k8s-node2節點,原k8s-node2節點上Terminating狀態的pod被刪除,只剩k8s-node1上的pod
# 查看k8s-node2節點狀態
[root@k8s-admin ~]# kubectl describe node k8s-node2
wps4[4]
# 查看當前pod分布節點
wps5[4]


免責聲明!

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



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