全部產品
Search
文件中心

Container Service for Kubernetes:託管節點池節點自動回復

更新時間:Jun 19, 2024

託管節點池自動監控節點狀態,確保節點正常運行。當節點發生異常時,ACK會自動執行恢複操作。將節點池設定為託管模式會為所有節點同時開啟自動回復功能。本文介紹節點自動回復的應用情境和處理流程。

前提條件

觸發條件

重要

當您開啟了當節點故障時重啟節點開關,節點自動回復的過程中則可能涉及節點的排水、替盤等操作,建議將資料儲存在資料盤中。

ACK會根據節點的運行狀態condition等資訊判斷是否發起自動回復任務。您可以執行kubectl describe node命令,通過condition欄位查看節點的運行狀態。當節點的健全狀態異常,且異常期間超過閾值時間時,ACK會發起節點自動回復行為。

具體觸發條件如下表所示。

檢測專案

描述

風險等級

閾值時間

自動回復行為

KubeletNotReady(KubeletHung)

kubelet意外停止工作,導致節點NotReady。

180s

  1. 重啟kubelet。

  2. 如果開啟了當節點故障時重啟節點開關,則重啟ECS執行個體。

KubeletNotReady(PLEG)

PLEG健全狀態檢查失敗,導致節點NotReady。

180s

  1. 重啟containerd或Docker。

  2. 重啟kubelet。

  3. 如果開啟了當節點故障時重啟節點開關,則重啟ECS執行個體。

KubeletNotReady(SandboxError)

PodSandbox not found,導致kubelet無法正常啟動。

180s

  1. 刪除對應的Sandbox容器。

  2. 重啟kubelet。

RuntimeOffline

containerd或Docker停止工作,節點不可用。

90s

  1. 重啟containerd或Docker。

  2. 如果開啟了當節點故障時重啟節點開關,則重啟ECS執行個體。

NTPProblem

時間同步服務(ntpd或chronyd)異常。

10s

重啟ntpd或chronyd。

SystemdOffline

Systemd狀態異常,無法啟動、銷毀容器。

90s

如果開啟了當節點故障時重啟節點開關,則重啟ECS執行個體。

ReadonlyFilesystem

節點檔案系統變為唯讀。

90s

如果開啟了當節點故障時重啟節點開關,則重啟ECS執行個體。

恢複流程

節點的自愈功能包括問題診斷、恢複決策和恢複任務。

重要

節點診斷依賴NPD組件和事件中心。使用自愈功能前,請確保已正確安裝NPD和事件中心。具體操作,請參見事件監控

一個完整的恢複流程中,節點會在以下狀態流轉。

  • 正常:當前節點不存在可被發現的故障。

  • 故障:當前節點發現故障。

  • 恢複失敗:當前節點無法恢複。

節點自動回復.png

  1. 當節點的運行狀態發生變化並持續一段時間後,ACK將判定該狀態符合故障狀態,存在節點故障。

  2. 當發現節點故障時,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控制台移除和添加節點。