Share via


對 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。

解決方式:若要解決此問題,請增加叢集中的節點數目,讓 Pod 能夠產生足夠的計算和記憶體。 若要在 Azure 入口網站上調整節點集區,請遵循下列步驟:

  1. 在 Azure 入口網站上,開啟「AKS 叢集」
  2. 在 [設定] 下,移至 [節點集區]
  3. 選取 [調整節點集區],然後更新 [節點計數範圍] 上的「最小值」和「最大值」
  4. 選取套用

案例 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-exceptionAzurePodIdentityException 會新增至 kube-system 命名空間。 AzurePodIdentityException 可讓具有特定標籤的 Pod 存取 NMI 伺服器不會攔截 Azure 實例元數據服務 (IMDS) 端點。

延伸模組 Pod 不會得到豁免,而且需要手動啟用 Microsoft Entra Pod 身分識別。

解決方法:在 AKS 叢集中建立 pod-identity 例外狀況 (僅適用於 dataprotection-microsoft 命名空間,以及適用於非 kube-system)。 深入了解

  1. 執行以下命令:

    az aks pod-identity exception add --resource-group shracrg --cluster-name shractestcluster --namespace dataprotection-microsoft --pod-labels app.kubernetes.io/name=dataprotection-microsoft-kubernetes
    
  2. 若要驗證叢集中的 Azurepodidentityexceptions,請執行下列命令:

    kubectl get Azurepodidentityexceptions --all-namespaces
    
  3. 若要將 儲存體 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 覆寫」,才能通過公用網路。

  1. 在您的叢集中取得現有的 CoreDNS 自定義 YAML (將它儲存在您的本機以供稍後參考)::

    kubectl get configmap coredns-custom -n kube-system -o yaml
    
  2. 覆寫 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
    
  3. 若要強制重新載入 coredns Pod,請執行下列命令:

    kubectl delete pod --namespace kube-system -l k8s-app=kube-dns
    
  4. 若要從 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
    
  5. 若要檢查 ExtensionAgent Pod 的記錄,請執行下列命令:

    kubectl logs pod/extension-agent-<pod guid that’s there in your cluster> -n kube-system --tail=200
    
  6. 刪除並重新安裝備份延伸模組以起始備份。

備份延伸模組安裝後相關錯誤

這些錯誤碼會出現,因為 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 的狀態變更為「執行中」。 如果問題持續發生,請刪除並重新安裝延伸模組。

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,在儲存體帳戶上重新指派此遺漏的權限。

保存庫備份型錯誤

當您啟用 AKS 備份,將備份儲存在保存庫標準資料存放區時,可能會出現此錯誤碼。

DppUserErrorVaultTierPolicyNotSupported

原因:針對所在區域不支援此資料存放區的備份保存庫,當使用針對其保存庫標準資料存放區定義的保留規則建立備份原則時,此錯誤碼就會出現,。

建議動作:使用 Azure 入口網站上定義的保存庫標準持續時間更新保留規則:

  1. 選取規則旁邊的 [編輯] 圖示。

    此螢幕快照顯示如何編輯 AKS 備份的保留期間。

  2. 清除 [保存庫標準] 旁邊的核取方塊,然後選取 [更新]

    顯示清除保存庫標準複選框的螢幕快照。

  3. 建立作業層備份的備份原則 (僅限 AKS 叢集的快照集)。

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

原因:持續性磁碟區的基礎儲存媒體遺失。

建議的動作:檢查並附加具有實際儲存媒體的新永續性磁碟區。

UserError 儲存體 ClassMissingForPVC

錯誤碼:UserError 儲存體 ClassMissingForPVC

原因:AKS 備份會檢查所使用的記憶體類別,並因為類別無法使用而略過永續性磁碟區來擷取快照集。

建議的動作:使用使用的儲存類別更新PVC 規格。

UserErrorSourceandTargetClusterCRDVersionMismatch

錯誤碼:UserErrorSourceandTargetClusterCRDVersionMismatch

原因:還原期間的來源 AKS 叢集和目標 AKS 叢集具有不同版本的 FlowSchemaPriorityLevelConfigurations CRS。 某些 Kubernetes 資源不會還原,因為叢集版本不符。

建議的動作:針對目標叢集使用與來源叢集相同的叢集版本,或手動套用 PR。

下一步