簡體   English   中英

Statefulset pod 卡在終止 state 以防節點處於 NotReady 狀態 state

[英]Statefulset pod stuck in terminating state in case node is in NotReady state

我為 jenkins 部署了一個帶有 1 個副本的狀態集。幾天前,運行 jenkins pod 的節點進入 NotReady State。一旦節點進入 NotReady state,Jenkins pod 進入終止狀態並返回那里很長時間,直到 882714148374准備就緒 State。

理想情況下,我的 Jenkins pod 應該被重新安排到一個健康的節點,以防我當前的節點不健康。 由於這個原因,我的 jenkins 應用程序因時間節點處於未就緒狀態 State 而停機。

在這種情況下可以做些什么來防止 statefulset pod 中的這種停機

Kubectl 版本:

客戶端版本:version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.13", GitCommit:"53c7b65d4531a749cd3a7004c5212d23daa044a9", GitTreeState:"clean", BuildDate:"2021-07-15T20:58: 11Z", GoVersion:"go1.15.14", Compiler:"gc", Platform:"linux/amd64"} 服務器版本: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.13 ", GitCommit:"53c7b65d4531a749cd3a7004c5212d23daa044a9", GitTreeState:"clean", BuildDate:"2021-07-15T20:53:19Z", GoVersion:"go1.15.14", Compiler:"gc", Platform:"linux/amd64"}

您的問題可能是因為集群沒有足夠的資源,或者是因為 pod 調度程序無法做出決定,因為節點上沒有足夠的標簽。 您可能想要查看 Kube.netes 調度程序的日志以查明在這種情況下究竟發生了什么。 為了更好地分配工作負載,您可能需要考慮擴展集群的大小或在集群上的資源不足時添加額外的節點。 此外,您可能希望確保集群的所有節點都具有准確的標簽,以便 pod 調度程序知道哪個節點最適合運行您的 Jenkins pod。

可以設置 Jenkins statefulset 部署清單中的節點親和性規則,以防止因節點進入未就緒狀態 state 而導致停機。pod 只會為與特定 label 匹配的節點調度,例如“Ready=true”,如下所示結果。 此外,您可以使用其他標簽來指示親和性規則中集群節點的健康狀態。 每當節點以這種方式進入 Not Ready state 時,pod 將被重新調度到健康節點。 最后但同樣重要的是,您可能需要考慮為您的 statefulset 使用 pod 中斷預算。 這將降低 pod 在節點不健康時被逐出節點的可能性。

附上配套的blog-1blog-2供參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM