適用於: ✔️ 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 會執行下列動作:
- AKS 會重新啟動節點。
- 若節點在重新啟動後仍處於不健康狀態,AKS 會重新建立該節點的映像。
- 如果重映像後節點仍不健康,且是 Linux 節點,AKS 會重新部署該節點。
如果節點仍然不健康,AKS 會重試重啟、重構和重新部署序列最多三次。 整個汽車維修過程可能需要長達一小時。
生產考量
節點自動修復是核心的韌性機制,但應搭配工作負載層級的韌性實務:
- 用多個副本執行關鍵工作負載。
- 使用 PodDisruptionBudgets 和就緒探針來降低使用者可察覺的影響。
- 監控修復活動與錯誤事件,以偵測節點反覆出現的問題。
- 將自動修復時機納入 SLO/SLA 及事件應變規劃中。
限制
AKS 節點自動修復是一項盡力而為的服務。 AKS 並不保證每個情境下節點都能恢復健康狀態。 若節點仍不健康,則進行手動調查。 欲了解更多資訊,請參閱 故障排除節點 NotReady 狀態。
AKS 可能在以下情況下無法自動修復:
- 網路設定錯誤會阻止節點狀態的報告。
- 節點未能註冊為健康節點。
- 節點具有以下任一種污染:
node.cloudprovider.kubernetes.io/shutdownToBeDeletedByClusterAutoscaler
- 節點正在升級,並具有以下註解:
"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 | 節點自動修復重新部署動作因作業失敗而失敗。 請參閱這裡的錯誤詳細數據: 錯誤碼 | 重新部署動作發生錯誤時發出。 |