Azure Kubernetes Service (AKS) 節點自動修復

適用於: ✔️ AKS 自動化 ✔️ AKS 標準

Azure Kubernetes Service (AKS) 會持續監視背景工作節點的健全狀態,並在狀況不良時,自動執行節點修復。 Azure 虛擬機器 (VM) 平台會在發生問題的 VM 上進行維護。 AKS 和 Azure VM 一起運作,以將叢集的服務中斷降至最低。

對於大多數生產工作負載,AKS Automatic 是 AKS 建議的生產就緒預設體驗。 AKS Automatic 與 AKS Standard 叢集皆預設節點自動修復功能。

本文將介紹節點自動修復的運作方式、修復行動何時觸發、適用的限制,以及如何監控修復事件。

節點透過叢集模式的自動修復行為

兩種 AKS 叢集模式皆預先設定節點自動修復功能:

  • AKS Automatic:已預先設定為 AKS Automatic 可投入生產環境的預設設定之一。
  • AKS 標準:在 AKS Standard 叢集上預先配置,無需額外設定。

這兩種模式都使用本文所述的相同節點健康檢查及相同的修復程序。

欲了解更多關於 AKS 自動平台預設值的資訊,請參閱 What is Azure Kubernetes Service (AKS) Automatic?

AKS 如何檢查 NotReady 節點

AKS 會使用下列規則來判斷節點是否狀況不良,並需要修復:

  • 在 10 分鐘的時間範圍內進行的連續檢查中,節點會報告 NotReady 狀態。
  • 節點不會在 10 分鐘內報告任何狀態。

您可以使用 kubectl get nodes 命令手動檢查節點的健全狀態。

自動修復的運作方式

附註

AKS 會使用使用者帳戶 aks-remediator 起始修復作業。

如果 AKS 偵測到某個不健康的節點持續處於不健康狀態至少五分鐘,AKS 會執行下列動作:

  1. AKS 會重新啟動節點。
  2. 若節點在重新啟動後仍處於不健康狀態,AKS 會重新建立該節點的映像。
  3. 如果重映像後節點仍不健康,且是 Linux 節點,AKS 會重新部署該節點。

如果節點仍然不健康,AKS 會重試重啟、重構和重新部署序列最多三次。 整個汽車維修過程可能需要長達一小時。

生產考量

節點自動修復是核心的韌性機制,但應搭配工作負載層級的韌性實務:

  • 用多個副本執行關鍵工作負載。
  • 使用 PodDisruptionBudgets 和就緒探針來降低使用者可察覺的影響。
  • 監控修復活動與錯誤事件,以偵測節點反覆出現的問題。
  • 將自動修復時機納入 SLO/SLA 及事件應變規劃中。

限制

AKS 節點自動修復是一項盡力而為的服務。 AKS 並不保證每個情境下節點都能恢復健康狀態。 若節點仍不健康,則進行手動調查。 欲了解更多資訊,請參閱 故障排除節點 NotReady 狀態。

AKS 可能在以下情況下無法自動修復:

  • 網路設定錯誤會阻止節點狀態的報告。
  • 節點未能註冊為健康節點。
  • 節點具有以下任一種污染:
    • node.cloudprovider.kubernetes.io/shutdown
    • ToBeDeletedByClusterAutoscaler
  • 節點正在升級,並具有以下註解:
    • "cluster-autoscaler.kubernetes.io/scale-down-disabled": "true"
    • "kubernetes.azure.com/azure-cluster-autoscaler-scale-down-disabled-reason": "upgrade"

透過 Kubernetes 事件監控節點的自動修復

當 AKS 執行節點自動修復時,會從 aks-auto-repair 來源發出 Kubernetes 事件。 當自動修復發生時,節點物件上會出現以下事件。

若要深入了解如何存取、儲存及針對 Kubernetes 事件設定警示,請參閱 使用 Kubernetes 事件對 AKS 進行疑難排解。

原因 事件訊息 描述
NodeRebootStart Node 自動修復是因為 NotReady 狀態持續超過五分鐘而啟動重新啟動動作。 當您的節點即將重新啟動時,此事件會通知您。 此動作是整體節點自動修復順序中的第一個動作。
NodeRebootEnd 節點自動修復的重新啟動動作已完成。 在節點完成重新啟動後會發出。 此事件不會指出執行重新啟動之後節點的健康情況狀態(狀況良好或狀況不良)。
NodeReimageStart 由於節點處於 NotReady 狀態持續超過五分鐘,節點自動修復正在啟動重新安裝映像動作。 當系統即將對你的節點執行重新映像時,這個事件會通知你。
NodeReimageEnd 節點自動修復的重新映像動作已完成。 在節點完成重新映像後會發出。 執行重新映像之後,此事件不會指出節點的健康情況狀態(狀況良好或狀況不良)。
NodeRedeployStart Node 自動修復因 NotReady 狀態持續超過五分鐘而啟動重新部署動作。 此事件會在即將對您的節點執行重新部署時通知您。 重新部署是節點自動修復順序中的最後一個動作。
NodeRedeployEnd 節點自動修復的重新部署動作已完成。 在節點完成重新部署後會發出。 執行重新部署之後,此事件不會指出節點的健康情況狀態(狀況良好或狀況不良)。

若節點自動修復過程中發生錯誤,AKS 會發出以下事件並逐字錯誤訊息。 欲了解更多資訊,請參閱常見 節點自動修復錯誤故障排除。

附註

以下事件訊息中的錯誤代碼會根據報告的錯誤而有所不同。

原因 事件訊息 描述
NodeRebootError 節點自動修復重新啟動動作因作業失敗而失敗。 請參閱這裡的錯誤詳細數據: 錯誤碼 當重新啟動動作發生錯誤時發出。
NodeReimageError 節點自動修復重新映像操作因為執行過程出錯而未成功。 請參閱這裡的錯誤詳細數據: 錯誤碼 當重新映像動作發生錯誤時會發出。
NodeRedeployError 節點自動修復重新部署動作因作業失敗而失敗。 請參閱這裡的錯誤詳細數據: 錯誤碼 重新部署動作發生錯誤時發出。