託管節點池自動監控節點狀態,確保節點正常運行。當節點發生異常時,ACK會自動執行恢複操作。將節點池設定為託管模式會為所有節點同時開啟自動回復功能。本文介紹節點自動回復的應用情境和處理流程。
前提條件
觸發條件
當您開啟了必要時重啟節點以修複CVE漏洞開關,節點自動回復的過程中則可能涉及節點的排水、替盤等操作,建議將資料儲存在資料盤中。
ACK會根據節點的運行狀態condition
等資訊判斷是否發起自動回復任務。您可以執行kubectl describe node
命令,通過condition
欄位查看節點的運行狀態。當節點的健全狀態異常,且異常期間超過閾值時間(即故障發生多長時間後會觸發自動回復任務)時,ACK會發起節點自動回復行為。
具體觸發條件如下表所示。
檢測專案 | 描述 | 風險等級 | 閾值時間 | 自動回復行為 |
KubeletNotReady(KubeletHung) | kubelet意外停止工作,導致節點NotReady。 | 高 | 180s |
|
KubeletNotReady(PLEG) | PLEG健全狀態檢查失敗,導致節點NotReady。 | 中 | 180s |
|
KubeletNotReady(SandboxError) | PodSandbox not found,導致kubelet無法正常啟動。 | 高 | 180s |
|
RuntimeOffline | containerd或Docker停止工作,節點不可用。 | 高 | 90s |
|
NTPProblem | 時間同步服務(ntpd或chronyd)異常。 | 高 | 10s | 重啟ntpd或chronyd。 |
SystemdOffline | Systemd狀態異常,無法啟動、銷毀容器。 | 高 | 90s | 如果開啟了必要時重啟節點以修複CVE漏洞開關,則重啟ECS執行個體。 |
ReadonlyFilesystem | 節點檔案系統變為唯讀。 | 高 | 90s | 如果開啟了必要時重啟節點以修複CVE漏洞開關,則重啟ECS執行個體。 |
恢複流程
節點的自愈功能包括問題診斷、恢複決策和恢複任務。
節點診斷依賴NPD組件和事件中心。使用自愈功能前,請確保已正確安裝NPD和事件中心。具體操作,請參見事件監控。
一個完整的恢複流程中,節點會在以下狀態流轉。
正常:當前節點不存在可被發現的故障。
故障:當前節點發現故障。
恢複失敗:當前節點無法恢複。
當節點的運行狀態發生變化並持續一段時間後,ACK將判定該狀態符合故障狀態,存在節點故障。
當發現節點故障時,ACK會根據故障原因觸發對應恢複任務,並記錄相應的事件。
當恢複任務完成後,故障狀態解除,節點恢複正常狀態。
當恢複任務完成後,故障狀態依然存在,節點會被置為恢複失敗狀態。
如果叢集中存在多個節點池,節點池之間的節點自動回復可以並存執行。
如果一個節點池存在多個異常節點,自動回復會以串列的方式逐個恢複。一旦某個節點恢複失敗,ACK將停止對該節點池中其他故障節點的恢複。
當節點處於恢複失敗狀態時,該節點不會再觸發自動回復操作。相應的故障解除後,該節點才能再次進行自動回復操作。
自動回復事件
ACK觸發自動回復時,會將相關的事件寫入事件中心。您可以在叢集資訊頁面選擇
,查看自動回復的記錄和具體操作。內容 | 層級 | 詳細描述 |
NodeRepairStart | Normal | 節點開始恢複。 |
NodeRepairAction | Normal | 節點恢複操作,例如重啟kubelet。 |
NodeRepairSucceed | Normal | 節點恢複成功。 |
NodeRepairFailed | Warning | 節點恢複失敗。 如遇相關問題,請參見常見問題。 |
NodeRepairIgnore | Normal | 節點恢複跳過,當ECS處於非運行狀態時,不對節點進行操作。 |
常見問題
自動回復失敗怎麼辦?
由於故障的複雜性,自動回復任務無法修複所有的故障情境。當節點自動回復任務執行失敗,或者恢複任務執行完畢後故障並未解除,ACK會將節點標記為恢複失敗狀態。
如果託管節點池中恢複某個節點失敗,在損毀修復前,該節點池不會再觸發自動回復操作。您可以提交工單聯絡支援人員,手動修複故障。
如何忽略某節點的自動回復?
如果託管節點池中的某個節點需要暫時忽略自動回復,您可以為該節點添加以下Label。
alibabacloud.com/repair.policy=disable
相關文檔
如果您想通過移除故障節點並重新添加的方式解決問題,請在Container Service管理主控台的節點池頁面操作。詳細資料,請參見移除節點、添加已有節點。
請勿執行以下操作:
通過
kubectl delete node
方式移除節點。通過ECS控制台、ESS控制台移除和添加節點。