節點池節點恢復
更新時間 2025-01-08 18:49:55
最近更新時間: 2025-01-08 18:49:55
分享文章
本節介紹節點池節點恢復的用戶指南。
當節點發生異常時,云容器引擎會通過異常診斷、恢復決策,進而執行恢復任務,實現節點的故障恢復。本文主要介紹故障恢復的適用場景及恢復流程。
前提條件
部分診斷項目依賴node-problem-detecto插件和事件中心,請提前正確安裝NPD和事件中心。
診斷條件
云容器引擎會監控節點的健康狀態,依據節點的運行狀況(Condition)動態決策是否可以啟動節點恢復流程。通過執行 kubectl describe node命令,檢查節點的Condition字段,可以獲取詳細的運行狀態信息。一旦檢測到節點狀態異常,并且異常狀態持續時間超過了預設的閾值(即故障持續達到一定時間),在云容器引擎控制臺可以觸發節點恢復機制,修復節點故障,確保集群的穩定性和高可用性。
| 檢測項目 | 描述 | 檢測來源 | 故障等級 | 閾值時間 | 恢復行為 |
|---|---|---|---|---|---|
| KubeletNotReady(PLEG is not healthy) | PLEG健康檢查失敗或運行時異常,導致節點NotReady。 | kubernetes | 高 | 3min | 重啟containerd或Docker。 |
| NodeStatusUnknown(Kubelet stopped posting node status) | kubelet意外停止工作,導致節點NotReady。 | kubernetes | 高 | 3min | 重啟kubelet。 |
| RuntimeOffline | containerd或Docker停止工作,節點不可用。 | node-problem-detector | 高 | 3min | 重啟containerd或Docker。 |
| NTPProblem | 時間同步服務異常。 | node-problem-detector | 高 | 30s | 重啟ntpd或chronyd。 |
| ReadonlyFilesystem | 節點文件系統變為只讀。 | node-problem-detector | 高 | 90s | 用戶自行重啟節點實例。 |
| SystemdOffline | Systemd狀態異常,無法啟動、銷毀容器。 | node-problem-detector | 高 | 90s | 用戶自行重啟節點實例。 |
恢復流程
1、當節點運行異常,并持續一段時間,云容器引擎將判斷節點狀態,與診斷條件進行對比。控制臺會將符合診斷條件的異常節點進行展示,用戶可以選擇一個或多個節點進行故障恢復。
2、節點故障恢復會以任務形式執行,期間會形成任務事件,查看恢復進度:
當恢復任務完成,異常狀態解除,節點將恢復運行狀態;
當恢復任務完成,節點狀態依舊異常,事件將體現恢復失敗,可以提交工單進行手動修復
說明
同一節點池中的多個異常節點,故障恢復將以串行方式執行。期間一個節點恢復失敗,云容器引擎將停止對該節點池其余異常節點進行恢復;
多個節點池之間可以并行進行故障恢復。
恢復事件
故障恢復過程中,會將相應操作以任務事件形式記錄。可以在控制臺 故障恢復窗口查看恢復事件。事件類型包括:
| 事件 | 詳細描述 |
|---|---|
| NODE_REPAIR_START | 故障恢復開始 |
| NODE_REPAIR_DIAGNOSE_ISSUE | 故障診斷確認 |
| NODE_REPAIR_IGNORE | 故障恢復跳過,比如主機示例異常、故障未達到閾值時間 |
| NODE_REPAIR_ACTION | 執行故障恢復操作 |
| NODE_REPAIR_FAILED | 故障恢復失敗,可以提交工單進行手動修復 |
| NODE_REPAIR_SUCCEED | 故障恢復成功 |