對 Azure Kubernetes Service 備份和還原進行疑難排解
本文提供疑難排解步驟,協助您解決 Azure Kubernetes Service (AKS) 備份、還原和管理錯誤。
AKS 備份延伸模組安裝錯誤解決方法
實例 1
錯誤訊息:
{Helm installation from path [] for release [azure-aks-backup] failed with the following error: err [release azure-aks-backup failed, and has been uninstalled due to atomic being set: failed post-install: timed out waiting for the condition]} occurred while doing the operation: {Installing the extension} on the config"`
原因:延伸模組已成功安裝,但 Pod 未產生,因為 Pod 無法獲得所需的計算值和記憶體。
解決方法:若要解決此問題,請增加叢集中的節點數目,以確保有足夠的計算值和記憶體可供 Pod 產生。 若要在 Azure 入口網站上調整節點集區,請遵循下列步驟:
- 在 Azure 入口網站上,開啟「AKS 叢集」。
- 在 [設定] 下,移至 [節點集區]。
- 選取 [調整節點集區],然後更新 [節點計數範圍] 上的「最小值」和「最大值」。
- 選取套用。
案例 2
錯誤訊息:
BackupStorageLocation "default" is unavailable: rpc error: code = Unknown desc = azure.BearerAuthorizer#WithAuthorization: Failed to refresh the Token for request to https://management.azure.com/subscriptions/e30af180-aa96-4d81-981a-b67570b0d615/resourceGroups/AzureBackupRG_westeurope_1/providers/Microsoft.Storage/storageAccounts/devhayyabackup/listKeys?%24expand=kerb&api-version=2019-06-01: StatusCode=404 -- Original Error: adal: Refresh request failed. Status Code = '404'. Response body: no azure identity found for request clientID 4e95##### REDACTED #####0777`
Endpoint http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=4e95dcc5-a769-4745-b2d9-
原因:當您在 AKS 叢集上啟用 Pod 受控識別時,名為 aks-addon-exception 的 AzurePodIdentityException 會新增至 kube-system 命名空間。 AzurePodIdentityException 可讓具有特定標籤的 Pod 存取 Azure 執行個體中繼資料服務 (IMDS) 端點,而不會遭到 NMI 伺服器攔截。
延伸模組 Pod 不會得到豁免,而且需要手動啟用 Microsoft Entra Pod 身分識別。
解決方法:在 AKS 叢集中建立 pod-identity 例外狀況 (僅適用於 dataprotection-microsoft 命名空間,以及適用於非 kube-system)。 深入了解。
執行以下命令:
az aks pod-identity exception add --resource-group shracrg --cluster-name shractestcluster --namespace dataprotection-microsoft --pod-labels app.kubernetes.io/name=dataprotection-microsoft-kubernetes
若要驗證叢集中的 Azurepodidentityexceptions,請執行下列命令:
kubectl get Azurepodidentityexceptions --all-namespaces
若要將儲存體 Blob 資料參與者角色指派給延伸模組身分識別,請執行下列命令:
az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name aksclustername --resource-group aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Blob Data Contributor' --scope /subscriptions/subscriptionid/resourceGroups/storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/storageaccountname
案例 3
錯誤訊息:
{"Message":"Error in the getting the Configurations: error {Post \https://centralus.dp.kubernetesconfiguration.azure.com/subscriptions/ subscriptionid /resourceGroups/ aksclusterresourcegroup /provider/managedclusters/clusters/ aksclustername /configurations/getPendingConfigs?api-version=2021-11-01\: dial tcp: lookup centralus.dp.kubernetesconfiguration.azure.com on 10.63.136.10:53: no such host}","LogType":"ConfigAgentTrace","LogLevel":"Error","Environment":"prod","Role":"ClusterConfigAgent","Location":"centralus","ArmId":"/subscriptions/ subscriptionid /resourceGroups/ aksclusterresourcegroup /providers/Microsoft.ContainerService/managedclusters/ aksclustername ","CorrelationId":"","AgentName":"ConfigAgent","AgentVersion":"1.8.14","AgentTimestamp":"2023/01/19 20:24:16"}`
原因:在 AKS 叢集中使用叢集延伸模組,需要特定的 FQDN/應用程式規則。 深入了解。
由於缺少這些 FQDN 規則而出現此錯誤,因為無法取得叢集延伸模組服務中的設定資訊。
解決方法:若要解決此問題,您必須為 DP 端點建立「CoreDNS-custom 覆寫」,才能通過公用網路。
在您的叢集中取得現有的 CoreDNS 自定義 YAML(將它儲存在您的本機以供稍後參考):
kubectl get configmap coredns-custom -n kube-system -o yaml
覆寫 centralus DP 端點與公用 IP 的對應 (使用下面的 YAML):
apiVersion: v1 kind: ConfigMap metadata: name: coredns-custom namespace: kube-system data: aksdp.override: | hosts { 20.40.200.153 centralus.dp.kubernetesconfiguration.azure.com fallthrough }
現在執行以下命令來套用更新 yaml 檔案:
kubectl apply -f corednsms.yaml
若要強制重新載入
coredns
Pod,請執行下列命令:kubectl delete pod --namespace kube-system -l k8s-app=kube-dns
若要從 ExtensionAgent Pod 執行
NSlookup
,以檢查 coreDNS-custom 是否運作中,請執行下列命令:kubectl exec -i -t pod/extension-agent-<pod guid that's there in your cluster> -n kube-system -- nslookup centralus.dp.kubernetesconfiguration.azure.com
若要檢查 ExtensionAgent Pod 的記錄,請執行下列命令:
kubectl logs pod/extension-agent-<pod guid that’s there in your cluster> -n kube-system --tail=200
刪除並重新安裝備份延伸模組以起始備份。
備份延伸模組安裝後相關錯誤
這些錯誤碼會出現,因為 AKS 叢集中安裝的備份延伸模組上發生問題。
KubernetesBackupListExtensionsError:
原因:備份保存庫作為驗證的一部分,其會檢查叢集是否已安裝備份延伸模組。 為此,保存庫 MSI 需要 AKS 叢集的讀者權限,允許其列出叢集中安裝的所有延伸模組。
建議動作:將讀者角色重新指派給保存庫 MSI (移除現有的角色指派,並再次指派讀者角色),因為指派的讀者角色中缺少 list-extension 權限。 如果重新指派失敗,請使用不同的備份保存庫來設定備份。
UserErrorKubernetesBackupExtensionNotFoundError
原因:備份保存庫作為驗證的一部分,其會檢查叢集是否已安裝備份延伸模組。 保存庫會執行一項作業,以列出叢集中安裝的延伸模組。 如果清單中沒有備份延伸模組,此錯誤就會出現。
建議動作:使用 CL 或 Azure 入口網站用戶端刪除延伸模組,然後再次安裝延伸模組。
UserErrorKubernetesBackupExtensionHasErrors
原因:叢集中安裝的備份延伸模組有一些內部錯誤。
建議動作:使用 CL 或 Azure 入口網站用戶端刪除延伸模組,然後再次安裝延伸模組。
UserErrorKubernetesBackupExtensionIdentityNotFound
原因:AKS 備份需要在叢集中安裝備份延伸模組。 擴充模組及其安裝建立了稱為延伸模組 MSI 的使用者身分識別。 此 MSI 建立於資源群組中,其中包含 AKS 叢集的節點集區。 此 MSI 會取得為了存取備份儲存位置而指派的必要角色。 錯誤碼表明遺漏延伸模組身分識別。
建議動作:使用 CLI 或 Azure 入口網站用戶端刪除延伸模組,然後再次安裝延伸模組。 新的身分識別會隨著延伸模組一起建立。
KubernetesBackupCustomResourcesTrackingTimeOutError
原因:適用於 AKS 的 Azure 備份需要在叢集中安裝備份延伸模組。 若要執行備份和還原作業,會在叢集中建立自訂資源。 透過這些 CR 執行備份相關作業的延伸模組繁衍 Pod。 當延伸模組無法更新這些 CR 的狀態時,就會發生此錯誤。
建議動作:必須透過執行 kubectl get pods -n dataprotection.microsoft
命令來驗證延伸模組的健康情況。 如果 Pod 未處於執行中狀態,則將叢集中的節點數目增加 1 或增加計算限制。 然後,等候幾分鐘並再次執行命令,這應該會將 Pod 的狀態變更為「執行中」。 如果問題持續發生,請刪除並重新安裝延伸模組。
BackupPluginPodRestartedDuringBackupError
原因:AKS 叢集中的備份延伸模組 Pod (dataprotection-microsoft-kubernetes-agent) 由於其目前節點上的 CPU/記憶體資源不足而不穩定,進而導致 OOM (記憶體不足) 終止事件。 這可能是因為備份延伸模組 Pod 所要求的計算值較低。
建議的動作:若要解決此問題,建議您增加配置給此 Pod 的計算值。 如此一來,它會自動在 AKS 叢集內的不同節點上佈建,並提供充足的計算資源。
此 Pod 目前的計算值為:
resources.requests.cpu 為 500m ; resources.requests.memory 為 128Mi。請透過更新 'resources.requests.memory' 參數將記憶體配置修改為 512Mi。 如果問題持續存在,建議在記憶體配置後將 'resources.requests.cpu' 參數增加到 900m。 您可以遵循以下步驟來增加參數的值:
- 瀏覽至 Azure 入口網站中的 [AKS 叢集] 刀鋒視窗。
- 按一下 [延伸模組+應用程式] 並選取 [azure-aks-backup] 延伸模組。
- 新增以下索引鍵/值組來更新入口網站中的組態設定。 resources.requests.cpu 900m resources.requests.memory 512Mi
BackupPluginDeleteBackupOperationFailed
原因:備份延伸模組應該執行中以刪除備份。
建議動作:如果叢集執行中,請驗證延伸模組是否正在良好狀態下執行。 檢查延伸模組 Pod 是否正在繁衍,否則請增加節點。 如果失敗,請嘗試刪除並重新安裝延伸模組。 如果已刪除備份的叢集,請手動刪除快照集和中繼資料。
ExtensionTimedOutWaitingForBackupItemSync
原因:備份延伸模組會等候備份項目與儲存體帳戶同步。
建議動作:如果出現此錯誤碼,請重試備份作業或重新安裝延伸模組。
備份儲存位置型錯誤
這些錯誤碼會出現,因為 AKS 叢集中安裝的備份延伸模組上發生問題。
UserErrorDeleteBackupFailedBackupStorageLocationReadOnly
原因:備份延伸模組安裝期間作為輸入提供的記憶體帳戶處於「唯讀」狀態,不允許從 Blob 容器中刪除備份資料。
建議動作:將儲存體帳戶狀態從「唯讀」變更為「寫入」。
UserErrorDeleteBackupFailedBackupStorageLocationNotFound
原因:在延伸模組安裝期間,會提供備份儲存位置作為輸入,其中包含儲存體帳戶和 Blob 容器。 如果在延伸模組安裝期間刪除或未正確新增位置,此錯誤就會出現。
建議動作:刪除備份延伸模組,然後使用正確的儲存體帳戶和 Blob 容器作為輸入,重新安裝備份延伸模組。
UserErrorBackupFailedBackupStorageLocationReadOnly
原因:備份延伸模組安裝期間作為輸入提供的記憶體帳戶處於「唯讀」狀態,不允許在 Blob 容器上寫入備份資料。
建議動作:將儲存體帳戶狀態從「唯讀」變更為「寫入」。
UserErrorNoDefaultBackupStorageLocationFound
原因:在延伸模組安裝期間,會提供備份儲存位置,作為輸入,其中包含儲存體帳戶和 Blob 容器。 如果在延伸模組安裝期間刪除或未正確輸入位置,此錯誤就會出現。
建議動作:刪除備份延伸模組,然後使用正確的儲存體帳戶和 Blob 容器作為輸入,重新安裝備份延伸模組。
UserErrorExtensionMSIMissingPermissionsOnBackupStorageLocation
原因:備份延伸模組應對備份儲存體位置 (儲存體帳戶) 具有「儲存體 Blob 資料參與者」角色。 延伸模組身分識別會獲指派此角色。
建議動作:如果遺漏此角色,請使用 Azure 入口網站或 CLI,在儲存體帳戶上重新指派此遺漏的權限。
UserErrorBackupStorageLocationNotReady
原因:在延伸模組安裝期間,會提供備份儲存位置作為輸入,其中包含儲存體帳戶和 Blob 容器。 備份延伸模組應對備份儲存體位置 (儲存體帳戶) 具有「儲存體 Blob 資料參與者」角色。 延伸模組身分識別會獲指派此角色。
建議動作:如果延伸模組身分識別沒有存取儲存體帳戶的正確權限,此錯誤就會出現。 如果在設定保護作業時第一次安裝 AKS 備份延伸模組,此錯誤就會出現。 在授與的權限傳播到 AKS 備份延伸模組所花費的時間內會發生這種情況。 因應措施是等候一小時,然後重試保護設定。 否則,請使用 Azure 入口網站或 CLI,在儲存體帳戶上重新指派此遺漏的權限。
UserErrorSnapshotResourceGroupHasLocks
原因:當快照資源群組上套用刪除或讀取鎖定作為備份延伸模組的輸入時,就會顯示此錯誤碼。
建議的動作:如果您要設定新的備份執行個體,請使用資源群組,而不需刪除或讀取鎖定。 如果備份執行個體已設定,請從快照資源群組中移除鎖定。
保存庫備份型錯誤
當您啟用 AKS 備份以將備份儲存在保存庫標準資料存放區中時,可能會出現這些錯誤碼。
DppUserErrorVaultTierPolicyNotSupported
原因:針對所在區域不支援此資料存放區的備份保存庫,當使用針對其保存庫標準資料存放區定義的保留規則建立備份原則時,此錯誤碼就會出現,。
建議動作:使用 Azure 入口網站上定義的保存庫標準持續時間更新保留規則:
AKS 備份和還原作業已完成,但出現警告
UserErrorPVSnapshotDisallowedByPolicy
錯誤碼:UserErrorPVSnapshotDisallowedByPolicy
原因:透過訂閱指派了一個 Azure 原則,而該原則會停止 CSI 驅動程式擷取磁碟區快照。
建議的動作:移除停止磁碟區快照作業的 Azure 原則,然後執行隨選備份。
UserErrorPVSnapshotLimitReached
錯誤碼:UserErrorPVSnapshotLimitReached
原因:某個時間點可以存在的持續性磁碟區的快照數目有限。 對於基於 Azure 磁碟的持續性磁碟區,限制為 500 個快照。 當因存在高於支援限制的快照數而未擷取特定持續性磁碟區的快照時,就會出現此錯誤。
建議的動作:更新備份原則以減少保留期間,並等候備份保存庫刪除較舊的復原點。
CSISnapshottingTimedOut
錯誤碼:CSISnapshottingTimedOut
原因:快照失敗,因為 CSI 驅動程式在擷取快照控點時逾時。
建議的動作:檢閱記錄並透過執行隨選備份重試該作業以取得成功的快照,或等待下一次排程的備份。
UserErrorHookExecutionFailed
錯誤碼:UserErrorHookExecutionFailed
原因:當套用於與備份和還原一起執行的勾點時遇到錯誤,且未成功套用。
建議的動作:檢閱記錄、更新勾點,然後重試備份/還原作業。
UserErrorNamespaceNotFound
錯誤碼:UserErrorNamespaceNotFound
原因:執行備份時,備份組態中所提供的命名空間遺失。 命名空間提供錯誤或已刪除。
建議的動作:請檢查是否正確提供了要備份的命名空間。
UserErrorPVCHasNoVolume
錯誤碼:UserErrorPVCHasNoVolume
原因:內容中的持續性磁碟區索取 (PVC) 沒有連結到它的持續性磁碟區。 因此,不會備份 PVC。
建議的動作:如果需要備份,請將磁碟區連結到 PVC。
UserErrorPVCNotBoundToVolume
錯誤碼:UserErrorPVCNotBoundToVolume
原因:內容中的 PVC 處於擱置中的狀態,且沒有連結到它的持續性磁碟區。 因此,不會備份 PVC。
建議的動作:如果需要備份,請將磁碟區連結到 PVC。
UserErrorPVNotFound
錯誤碼:UserErrorPVNotFound
原因:持續性磁碟區的基礎儲存媒體遺失。
建議的動作:檢查並連結一個已連結實際儲存媒體的新持續性磁碟區。
UserErrorStorageClassMissingForPVC
錯誤碼:UserErrorStorageClassMissingForPVC
原因:AKS 備份會檢查所使用的儲存類別,並因該類別無法使用而略過對持續性磁碟區擷取快照。
建議的動作:使用所使用的儲存類別來更新 PVC 規格。
UserErrorSourceandTargetClusterCRDVersionMismatch
錯誤碼:UserErrorSourceandTargetClusterCRDVersionMismatch
原因:還原期間來源 AKS 叢集和目標 AKS 叢集具有不同版本的 FlowSchema 和 PriorityLevelConfigurations CRs。 由於叢集版本不相符,部分 Kubernetes 資源未還原。
建議的動作:對目標叢集使用與來源叢集相同的叢集版本,或手動套用 CR。
LinkedAuthorizationFailed
錯誤碼:LinkedAuthorizationFailed
原因:若要執行還原作業,用戶必須具有 已備份 AKS 叢集的讀取 許可權。
建議的動作:在來源 AKS 叢集上指派讀取者角色,然後繼續執行還原作業。