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 會執行下列動作:
- 嘗試重新啟動節點。
- 如果節點重新啟動失敗,AKS 會重新映像節點。
- 如果重新映像失敗,而且它是 Linux 節點,則 AKS 會重新部署節點。
AKS 工程師會在自動修復失敗時調查替代補救措施。
注意
如果節點上有下列污點,則不會觸發自動修復: node.cloudprovider.kubernetes.io/shutdown
、ToBeDeletedByClusterAutoscaler
。
整個自動修復程序最多可能需要一小時才能完成。 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 叢集工作負載的高可用性。