針對處於失敗狀態的 Azure Kubernetes Service 叢集或節點進行疑難解答
本文討論如何針對 Microsoft進入失敗狀態的 Azure Kubernetes Service (AKS) 叢集或節點進行疑難解答。
常見的原因
以下是失敗叢集或節點集區的常見原因:
原因 | 參考 |
---|---|
自定義腳本擴充功能 (CSE) 虛擬機 (VM) 擴充功能佈建錯誤 | 針對 CSE 錯誤所造成的節點未就緒失敗進行疑難解答 |
密鑰 Azure 資源無法使用 | |
VM 配置失敗,因為沒有區域性/區域容量 | |
VM 配置失敗,因為核心配額已超過 | Quotaexceeded 錯誤 |
客戶施加的限制 | |
工作負載問題 |
常見錯誤的基本疑難解答導致叢集/節點失敗
下表概述一些可能導致叢集或節點進入失敗狀態、其描述和基本疑難解答方法來解決這些錯誤的常見錯誤。
錯誤 | 描述 | 疑難解答方法 |
---|---|---|
OutboundConnFailVMExtensionError | 此錯誤表示 VM 擴充功能因為缺少輸出連線而無法安裝或更新。 | 檢查 VM 或 VM 擴充集的網路安全組 (NSG) 規則和防火牆設定。 請確定 VM 或 VM 延伸集可以存取這些端點: https://aka.ms/aks/outbound 、 https://aka.ms/aks/ssh 、 https://aka.ms/aks/agent 和 https://aka.ms/aks/containerinsights 。 |
清空錯誤 | 此錯誤表示節點在升級作業之前無法清空。 | 使用 kubectl 命令檢查節點上的 Pod 狀態和事件: kubectl get pods --all-namespaces -o wide 和 kubectl describe pod <pod-name> -n <namespace> 。 尋找任何停滯在終止或未知狀態的 Pod,或在事件中出現任何錯誤或警告。 您可能需要強制刪除 Pod,或重新啟動節點上的 kubelet 服務。 |
SubscriptionNotRegistered 錯誤 | 此錯誤表示訂用帳戶未註冊為使用 AKS 資源提供者。 | 使用 命令註冊訂用 az provider register --namespace Microsoft.ContainerService 帳戶。 |
RequestDisallowedByPolicy 錯誤 | 此錯誤表示作業遭到套用至訂用帳戶或資源群組的原則封鎖。 | 檢閱原則詳細數據和原則指派範圍。 若要允許作業,您可能需要修改或排除原則。 |
QuotaExceeded 錯誤 | 此錯誤表示作業超過資源類型或區域的配額限制。 | 使用 Azure 入口網站、Azure CLI 或 Azure PowerShell 檢查資源類型或區域的目前配額使用量和配額限制。 您可能需要刪除一些未使用的資源,或要求增加配額。 |
PublicIPCountLimitReached 錯誤 | 此錯誤表示作業達到可在訂用帳戶或區域中建立的公用IP位址數目上限。 | 使用 Azure 入口網站、Azure CLI 或 Azure PowerShell 檢查訂用帳戶或區域的目前公用 IP 位址使用量和限制。 您可能需要刪除某些未使用的公用IP位址,或要求增加公用IP位址限制。 |
OverconstrainedAllocationRequest error | 此錯誤表示作業無法在區域中配置要求的 VM 大小。 | 使用 Azure 入口網站、Azure CLI 或 Azure PowerShell 檢查區域中 VM 大小的可用性。 您可能需要選擇不同的 VM 大小或不同的區域。 |
ReadOnlyDisabledSubscription 錯誤 | 此錯誤表示訂用帳戶目前已停用,並設定為唯讀。 | 檢閱並調整訂用帳戶許可權,因為訂用帳戶可能因為計費問題、信用額度過期或原則違規而暫停。 |
其他可能問題的基本疑難解答導致叢集/節點失敗
下表說明其他可能導致叢集或節點進入失敗狀態、其描述,以及修正這些問題的解決方案的其他可能問題。
問題 | 描述 | 解決方案 |
---|---|---|
子網大小太小 | 作業無法建立或更新叢集,因為子網沒有足夠的空間容納所需的節點數目。 | 刪除節點集區,並使用 Azure 入口網站、Azure CLI 或 Azure PowerShell 建立具有較大子網大小的新集區。 |
虛擬網路遭到封鎖 | 作業無法與叢集 API 伺服器或 Kubernetes 控制平面通訊,因為防火牆或自定義功能變數名稱系統 (DNS) 設定會封鎖來自節點的輸出連線。 | 允許防火牆上的節點流量,並使用 Azure 入口網站、Azure CLI 或 Azure PowerShell 來設定 Azure 的 DNS 解析。 |
PDB 問題 | 作業無法更新叢集,因為 PDB 已停止移除一或多個 Pod。 PDB 是一項資源,可限制在特定期間內可自願終止多少 Pod。 | 暫時移除 PDB、協調叢集,然後使用 kubectl 命令行工具再次新增 PDB。 |
基礎結構問題 | 作業無法更新叢集,因為 Azure Resource Manager (ARM) 服務有內部問題,可管理 Azure 中的資源。 | 針對每個節點集區執行代理程式集區對帳,並使用 Azure CLI 或 Azure PowerShell 對帳受控叢集。 |
API 伺服器錯誤 | 作業無法連線到叢集 API 伺服器或 Kubernetes 控制平面,因為發生中斷或錯誤。 | 向 AKS 支援小組報告,並提供相關的記錄和診斷資訊。 您可以使用 Azure 入口網站、Azure CLI 或 Azure PowerShell 來取得記錄和診斷資訊。 |
注意
- 上表所述的作業是指從用戶端觸發的任何更新 (
PUT
) 作業。 - 在 Kubernetes 中,控制器內有元件。 它可確保世界的實際狀態,包括叢集狀態和潛在的外部狀態,例如執行 Kubelet 的容器或雲端提供者的負載平衡器。 它會與物件中指定的所需狀態對齊。 此對齊程式是控制器的主要功能。 針對 AKS,此元件可確保 AKS 叢集的狀態與所需的設定一致。 若要手動觸發它,請執行
az resource update --ids <AKS cluster id>
。 您可以執行az aks show -n <cluster name> -g <cluster resource group> -o json --query id
來取得 AKS 叢集識別碼。 如果實際狀態與所需狀態之間有任何差異,請採取必要的動作來更正這些差異。
布建狀態檢查
若要檢查叢集狀態,請選取 [ 布建狀態檢查]。 然後,會顯示叢集和代理程式集區的布建狀態。
案例 1:叢集處於失敗狀態
若要解決此問題,請取得導致失敗的作業,並找出錯誤。 以下是兩個可能導致叢集失敗的常見作業失敗:
- 叢集建立失敗
- 叢集升級失敗
如果最近建立或升級的叢集處於失敗狀態,請使用下列方法來針對失敗進行疑難解答:
檢查活動記錄檔,以識別失敗的根本原因。
您可以使用 Azure 入口網站、Azure CLI 或 Azure PowerShell 來檢視活動記錄。
活動記錄檔會顯示與失敗相關聯的錯誤碼和訊息。 如需特定錯誤的詳細資訊,請參閱 常見錯誤的基本疑難解答導致叢集/節點失敗 一節。
使用 AKS 診斷和解決問題功能 ,針對常見問題進行疑難解答和解決。
注意
此功能僅適用於 Azure 入口網站和 Azure CLI。
使用 Azure 入口網站 檢視失敗叢集的活動記錄檔
若要從 Azure 入口網站 檢視失敗叢集的活動記錄,請遵循下列步驟:
在 Azure 入口網站 中,移至 [資源群組] 頁面,然後選取包含叢集的資源群組。
在 [概 觀] 頁面上,從資源清單中選取叢集名稱。
在叢集頁面上,從左側功能表中選取 [活動記錄 ]。
在 [活動記錄] 頁面上,您可以依 [狀態]、[時間範圍]、[事件起始的事件] 和 [事件] 類別來篩選事件。 例如,您可以從 [狀態] 下拉式清單中選取 [失敗],只查看失敗的事件。
若要檢查事件的詳細數據,請從清單中選取事件名稱。 新的窗格隨即開啟,其中包含事件摘要、屬性和 JSON 數據。 您也可以將 JSON 數據下載為檔案。
若要檢查與事件相關聯的錯誤碼和訊息,請向下卷動至 事件摘要中的 [狀態 ] 區段。 您也可以在屬性和 JSON 數據區段中找到錯誤資訊。
使用 Azure CLI 檢視失敗叢集的活動記錄
如果您想要使用 Azure CLI 來檢視失敗叢集的活動記錄檔,請遵循下列步驟:
在您的電腦上安裝 Azure CLI,並使用您的 Azure 帳戶登入。
使用 命令列出訂用
az group list
帳戶中的資源群組,並尋找包含叢集的資源群組名稱。使用
az resource list
命令搭配--resource-group
參數列出資源群組中的資源,並尋找叢集的名稱。使用
az monitor activity-log list
命令搭配--resource-group
和--resource
參數,列出叢集的活動記錄。 您也可以使用--status
、--start-time
、--end-time
、--caller
和--filter
參數,依不同的準則來篩選事件。 例如,您可以使用--status Failed
來只查看失敗的事件。使用
az monitor activity-log show
命令搭配--resource-group
、--resource
和--event-id
參數,顯示特定事件的詳細數據。 您可以從上一個命令的輸出中找到事件識別碼。 輸出會包含事件摘要、屬性和 JSON 資料。 您也可以使用--output
參數來變更輸出格式。若要查看與事件相關聯的錯誤碼和訊息,請在命令輸出中尋找
statusMessage
字段。 您也可以在屬性和 JSON 數據區段中找到錯誤資訊。
針對失敗的叢集使用 AKS 診斷和解決問題功能
在 Azure 入口網站 中,流覽至您的 AKS 叢集資源,然後從左側功能表中選取 [診斷並解決問題]。 您會看到類別和案例清單,您可以選取以執行診斷檢查並取得建議的解決方案。
在 Azure CLI 中,使用 az aks collect
命令搭配 --name
和 --resource-group
參數,從叢集節點收集診斷數據。 您也可以使用 --storage-account
和 --sas-token
參數來指定將上傳數據的 Azure 儲存體 帳戶。 輸出會包含 [診斷和解決問題] 刀鋒視窗的連結,您可以在其中檢視結果和建議的動作。
在 [ 診斷和解決問題] 刀鋒視窗中,您可以選取 [叢集問題 ] 作為類別。 如果偵測到任何問題,您會看到您可以遵循的可能解決方案清單來修正問題。
案例 2:節點處於失敗狀態
在極少數情況下,Azure 磁盤中斷鏈接作業可能會部分失敗,這會讓節點 VM 處於失敗狀態。
若要解決此問題,請使用下列其中一種方法手動更新 VM 狀態:
針對以可用性設定組為基礎的叢集,請執行下列 az vm update 命令:
az vm update --resource-group <resource-group-name> --name <vm-name>
針對以 VM 擴展集為基礎的叢集,請執行下列 az vmss update-instances 命令:
az vmss update-instances --resource-group <resource-group-name> --name <scale-set-name> --instance-id <vm-or-scale-set-id>
案例 3:節點集區處於失敗狀態
當備份節點集的 VM 擴展集或可用性設定組在布建、調整或更新期間發生錯誤時,就會發生此問題。 此問題可能是因為容量、配額限制、網路問題、原則違規、資源鎖定或其他因素而導致無法正確配置或設定 VM。
若要疑難排解此問題,請執行下列步驟:
- 使用
az aks nodepool show
命令檢查節點集區的狀態。 如果布建狀態為Failed
,您可以在輸出中看到錯誤訊息和程序代碼。 - 使用
az vmss show
或az vm availability-set show
命令檢查 VM 擴展集或可用性設定組的狀態。 如果布建狀態為Failed
,您可以在輸出中看到錯誤訊息和程序代碼。 - 使用
az vmss list-instances
或az vm list
命令檢查節點集區中個別 VM 的狀態。 如果有任何 VM 處於Failed
或Unhealthy
狀態,您可以在輸出中看到錯誤訊息和程式代碼。 - 檢查 VM 擴展集或可用性設定組的活動記錄檔和診斷設定,以查看指出失敗原因的任何事件或警示。 您可以使用 Azure 入口網站、Azure CLI 或 Azure 監視器 API 來存取活動記錄和診斷設定。
- 檢查部署節點集區的區域和訂用帳戶配額和容量。 您可以使用
az vm list-usage
命令或 Azure 入口網站 來檢查配額和容量。 如果達到配額或容量限制,您可以要求增加或刪除一些未使用的資源。 - 檢查節點集區的原則和角色指派。 您可以使用
az policy
和az role
命令或 Azure 入口網站 來檢查原則定義、指派、合規性和豁免。 您也可以使用az role assignment
命令或 Azure 入口網站 來檢查節點集區的角色指派和許可權。 - 檢查節點集區的資源鎖定。 您可以使用
az lock
命令或 Azure 入口網站 來檢查鎖定層級、範圍和附註。 您也可以視需要刪除或更新鎖定。
其他記錄和診斷工具
如果先前的疑難解答方法無法解決問題,您可以使用下列記錄和診斷工具來收集詳細資訊並找出根本原因:
適用於容器的 Azure 監視器:
此服務會從 AKS 叢集和節點收集及分析計量和記錄。 適用於容器的 Azure 監視器可以監視叢集和節點健康情況、效能和可用性。 您也可以使用它來檢視容器記錄、kubelet 記錄和節點開機診斷記錄。
-
此工具會從AKS 叢集收集節點和Pod記錄、網路資訊和叢集組態,並將其上傳至 Azure 記憶體帳戶。 此工具可協助您針對常見的叢集問題進行疑難解答,例如 DNS 解析、網路連線和節點狀態。 您也可以使用它來產生支援要求,並附加收集的記錄。
AKS 診斷
此工具會在 AKS 叢集和節點上執行一系列檢查,並提供常見問題的建議和補救步驟。 此工具可協助您針對叢集建立、升級、調整、網路、記憶體和安全性相關的問題進行疑難解答。 您也可以使用它來產生附加診斷結果的支援要求。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。