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

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

在本文中,您將了解自動節點修復功能對 Windows 和 Linux 節點的運作方式。

AKS 如何檢查 NotReady 節點

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

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

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

自動修復的運作方式

注意

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

如果 AKS 發現狀況不良的節點維持狀況不良達分鐘,AKS 會執行下列動作:

  1. 嘗試重新啟動節點。
  2. 如果節點重新啟動失敗,AKS 會重新映像節點。
  3. 如果重新映像失敗,而且它是 Linux 節點,則 AKS 會重新部署節點。

AKS 工程師會在自動修復失敗時調查替代補救措施。

注意

如果節點上有下列污點,則不會觸發自動修復: node.cloudprovider.kubernetes.io/shutdownToBeDeletedByClusterAutoscaler

整個自動修復程序最多可能需要一小時才能完成。 AKS 會針對每個步驟重試最多 3 次。

節點自動清空

排程的事件可以在任何節點集區的基礎 VM 上發生。 針對現成節點集區,排程的事件可能會導致節點的「先占」節點事件。 某些節點事件,例如先佔 (preempt),會導致 AKS 節點自動清空,嘗試封鎖並清空受影響的節點。 此程序可針對該節點上任何受影響的工作負載重新排程。 您可能會注意到節點收到具有 "remediator.kubernetes.azure.com/unschedulable" 的污點,因為 "kubernetes.azure.com/scalesetpriority: spot"

下表顯示節點事件,以及其針對 AKS 節點自動清空所造成的動作:

事件 描述 動作
凍結 VM 會排定暫停幾秒鐘的時間。 CPU 和網路連線可能會暫止,但不會影響記憶體或已開啟的檔案。 不進行動作。
重新啟動 VM 會排定重新開機。 VM 的非持續性記憶體會遺失。 不進行動作。
重新部署 VM 已排定移到其他節點。 VM 的暫時性磁碟會遺失。 隔離和清空。
Preempt 正在刪除現成 VM。 VM 的暫時性磁碟會遺失。 隔離和清空
終止 VM 已排程進行刪除。 隔離和清空。

限制

在許多情況下,AKS 可以判斷節點是否狀況不良,並嘗試修復問題。 不過,在某些情況下,AKS 無法修復問題或偵測到問題存在。 例如,AKS 無法偵測下列範例案例中的問題:

  • 因為網路組態發生錯誤,所以不會報告節點狀態。
  • 一個節點一開始無法註冊為狀況良好的節點。

Node Autodrain 是盡力而為的服務,無法保證在所有案例中都能完美運作

下一步

使用可用性區域提高 AKS 叢集工作負載的高可用性。