本頁說明使用 GKE 備份時可能遇到的權限錯誤、執行動作時應注意的事項,以及如何解決錯誤。
錯誤 100010101:無法備份 PersistentVolumeClaim,因為缺少租戶專案的 IAM 繫結
嘗試備份 PersistentVolumeClaim 時,如果由於租戶專案缺少 Identity and Access Management 繫結而失敗,就會發生錯誤 100010101,並顯示 Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project 錯誤訊息。
GKE 備份會為 GKE 叢集的永久磁碟建立快照。快照會儲存在您的 Cloud de Confiance by S3NS 專案 (也稱為用戶專案) 中,而 Cloud de Confiance by S3NS 會在代管的租戶專案中建立快照。租戶專案位於google.com
機構內,與您自己的機構分開。
租戶專案中的服務代理需要特定權限,才能使用客戶自行管理的加密金鑰 (CMEK),加密叢集 PersistentVolumeClaim 參照的永久磁碟。這項權限會加密及解密快照資料。如果service-TENANT_PROJECT_NUMBER@compute-system.s3ns-system.iam.gserviceaccount.com服務代理程式在磁碟的 CMEK 上缺少 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色,備份作業就會失敗。
如要解決這項錯誤,請按照下列指示操作:
確認您具備足夠的 IAM 權限,可在 Cloud de Confiance 控制台修改 Cloud Key Management Service 金鑰的 IAM 政策,例如
roles/cloudkms.admin或roles/owner。使用備份作業失敗的
status reason訊息中的TENANT_PROJECT_NUMBER值,找出租戶專案的 Compute Engine 服務代理程式。例如:service-TENANT_PROJECT_NUMBER@compute-system.s3ns-system.iam.gserviceaccount.com。找出用於加密 Persistent Disk 的 CMEK 資訊:
金鑰名稱:加密金鑰的名稱。
金鑰環:金鑰所在金鑰環的名稱。
位置: Cloud de Confiance by S3NS 金鑰所在的位置。 例如
global或us-central1。
如要授予租戶專案的 Compute Engine 服務代理程式 CMEK 的
roles/cloudkms.cryptoKeyEncrypterDecrypter角色,請使用 Google Cloud CLI 執行gcloud kms keys add-iam-policy-binding指令:gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-TENANT_PROJECT_NUMBER@compute-system.s3ns-system.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter更改下列內容:
KEY_NAME:加密金鑰名稱。KEY_RING:金鑰環的名稱。LOCATION:金鑰的 Cloud de Confiance by S3NS 位置。例如global或us-central1。TENANT_PROJECT_NUMBER:從失敗備份作業的status reason訊息取得的租戶專案編號。
如果指令執行成功,輸出內容會如下所示:
- members: - serviceAccount:service-987654321098@compute-system.s3ns-system.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter重新測試備份作業。如果作業仍未成功,請聯絡 Cloud Customer Care 團隊尋求進一步協助。
錯誤 100010104:無法備份 PersistentVolumeClaim,建立快照時違反組織政策限制
建立快照時,如果因違反組織政策限制,導致備份 PersistentVolumeClaim 的嘗試失敗,就會發生錯誤 100010104,並顯示錯誤訊息 Failed to backup PersistentVolumeClaim - Org policy constraint violation while creating snapshot。
GKE 備份會建立 GKE 叢集永久磁碟的快照。快照會位於 Cloud de Confiance by S3NS 專案 (也稱為消費者專案) 中,並在 Cloud de Confiance by S3NS管理的租戶專案中建立。租戶專案位於google.com
機構內,與您自己的機構分開。
組織政策會規定您可以在何處建立儲存空間資源。Constraint constraints/compute.storageResourceUseRestrictions violated 錯誤表示資源或快照是在不屬於允許組織結構的租戶專案中建立,因此違反政策。由於租戶專案位於 Google 的組織內,因此不屬於您定義的政策範圍,導致備份失敗。
如要解決這項錯誤,請按照下列指示操作:
找出實作
constraints/compute.storageResourceUseRestrictions限制的組織政策。如要進一步瞭解如何使用 Cloud de Confiance 控制台查看組織政策,請參閱「查看組織政策」。修改
constraints/compute.storageResourceUseRestrictions政策,將 Backup for GKE 使用的folders/77620796932租戶專案資料夾加入允許清單。將資料夾加入允許清單後,請儲存政策變更。
組織政策更新並傳播後 (通常需要幾分鐘),請重新測試備份作業。備份作業應繼續進行,且不得違反儲存空間資源使用限制。如果作業仍未成功,請與 Cloud Customer Care 團隊聯絡,尋求進一步協助。
錯誤 100010106:無法備份 PersistentVolumeClaim - GKE 備份服務代理缺少 IAM 繫結
如果嘗試備份 PersistentVolumeClaim 時,因缺少 GKE 備份 服務代理的 Identity and Access Management 繫結而失敗,就會發生錯誤 100010106,並顯示 Failed to backup PVC - Missing IAM binding for Backup for GKE service agent 錯誤訊息。
GKE 備份需要權限,才能使用您的BackupPlan客戶自行管理的加密金鑰 (CMEK) 加密及解密磁碟區 Persistent Disks。如果 GKE 備份服務代理帳戶在 BackupPlan CMEK 中缺少 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色,備份作業就會失敗。
如要解決這項錯誤,請按照下列指示操作:
找出專案專用的 Google 代管 GKE 備份服務代理。例如:
service-PROJECT_NUMBER@gcp-sa-gkebackup.s3ns-system.iam.gserviceaccount.com。您可以透過下列方法找出專案編號:使用 Cloud de Confiance 控制台中的 Cloud de Confiance by S3NS 專案資訊主頁。
使用 Google Cloud CLI 執行
gcloud projects describe指令:gcloud projects describe PROJECT_ID –format="value(projectNumber)"將
PROJECT_ID替換為專案的專屬名稱。
找出下列 CMEK 詳細資料:
金鑰名稱:加密金鑰的名稱。
金鑰環:金鑰所屬金鑰環的名稱。
位置:
BackupPlanCMEK 所在的 Cloud de Confiance by S3NS 位置。例如global或us-central1。
如要將 CMEK 的
roles/cloudkms.cryptoKeyEncrypterDecrypter角色授予 GKE 備份 服務代理,請使用 Google Cloud CLI 執行gcloud kms keys add-iam-policy-binding指令:gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.s3ns-system.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter更改下列內容:
KEY_NAME:加密金鑰名稱。KEY_RING:金鑰環的名稱。LOCATION:金鑰的 Cloud de Confiance by S3NS 位置。例如global或us-central1。PROJECT_NUMBER:您的 Cloud de Confiance by S3NS 專案編號。
確認您具備 Cloud Key Management Service 金鑰所需的 Identity and Access Management 權限。例如
roles/cloudkms.admin或roles/owner。確認您已獲得權限。在先前
gcloud kms keys add-iam-policy-binding指令的輸出內容中,尋找類似以下的項目:-members: -serviceAccount:service-123456789012@gcp-sa-gkebackup.s3ns-system.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter授予必要權限後,請重新測試備份作業。如果作業無法順利完成,請與 Cloud Customer Care 團隊聯絡,尋求進一步協助。
錯誤 100010107:無法備份 PersistentVolumeClaim - 缺少 IAM 繫結 - 代理程式服務帳戶 (KCP)
當您嘗試執行 Backup for GKE 備份作業,但 Google Kubernetes Engine 叢集服務代理程式無法存取客戶管理的加密金鑰 (CMEK) 時,就會發生錯誤 100010107,並顯示 Failed to backup PVC - Missing IAM binding - agent service account (KCP) 訊息。
Google Kubernetes Engine 叢集服務代理程式 (通常格式為 service-PROJECT_NUMBER@container-engine-robot.s3ns-system.iam.gserviceaccount.com) 是 GKE 叢集與 Cloud de Confiance by S3NS服務互動的必要條件。備份方案使用客戶自行管理的加密金鑰 (CMEK)。這個服務代理程式需要權限,才能使用 CMEK 加密及解密備份資料。如果備份方案缺少 CMEK 的 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色,從叢集啟動的備份作業會失敗,並顯示 permission denied 錯誤。
如要解決這項錯誤,請按照下列疑難排解說明操作:
確認您具備正確權限,可修改 Cloud Key Management Service 金鑰的 IAM 政策。例如
cloudkms.admin或roles/owner。找出 Google Kubernetes Engine 叢集服務代理。這項服務代理程式是由 Cloud de Confiance by S3NS 為 GKE 叢集自動建立及管理,例如:
service-PROJECT_NUMBER@container-engine-robot.s3ns-system.iam.gserviceaccount.com。您需要專案編號才能組成完整的服務帳戶。您可以透過下列任一方法找出專案編號:使用 Cloud de Confiance 控制台中的 Cloud de Confiance by S3NS 專案資訊主頁。
使用 Google Cloud CLI 執行
gcloud projects describe指令:gcloud projects describe PROJECT_ID –-format="value(projectNumber)"將
PROJECT_ID替換為專案 ID。
找出下列 CMEK 資訊:
金鑰名稱:加密金鑰的名稱。
金鑰環:金鑰所屬金鑰環的名稱。
位置: Cloud de Confiance by S3NS 金鑰所在的位置。 例如
global或us-central1。
在 CMEK 層級授予
roles/cloudkms.cryptoKeyEncrypterDecrypter角色。Google Kubernetes Engine 服務代理程式需要加密金鑰的權限。如要授予 CMEK 的roles/cloudkms.cryptoKeyEncrypterDecrypter角色,請使用 Google Cloud CLI 執行gcloud kms key add-iam-policy-binding指令:gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.s3ns-system.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter更改下列內容:
KEY_NAME:加密金鑰名稱。KEY_RING:金鑰環的名稱。LOCATION:金鑰的 Cloud de Confiance by S3NS 位置。例如global或us-central1。PROJECT_NUMBER:專案名稱。
輸出結果會與下列內容相似:
- members: - serviceAccount:service-123456789012@container-engine-robot.s3ns-system.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter ```重新嘗試 GKE 備份作業。如果作業持續失敗,請與 Cloud Customer Care 團隊聯絡,取得進一步協助。
錯誤 100010109:無法備份 PersistentVolumeClaim,因為 DiskSettings 政策不允許目標備份區域
如果DiskSettings存取位置政策不允許目標備份區域,就會發生錯誤 100010109。
瞭解錯誤
如果客戶將DiskSettings存取位置政策設為SPECIFIC_REGIONS,且叢集中有部分磁碟位置受到這項政策限制,就會發生這個錯誤。由於這項存取位置政策僅允許特定區域做為有效的快照建立位置,因此如果目標儲存空間位置不在這份清單中,備份就會遭到拒絕。如果發生這種情況,快照建立作業會失敗,並顯示類似下列內容的訊息:
No permission to read source disk in us-central1 from target snapshot in us-east1.
疑難排解步驟
- 找出來源和目標區域:查看錯誤訊息,找出遭拒的來源磁碟位置 (例如
us-central1) 和目標快照區域 (例如us-east1)。 更新 DiskSettings 政策:如要修正問題,請更新
DiskSettings,允許叢集參照的磁碟位置使用目標儲存空間位置。如要達成這個目標,請使用 Google Cloud CLI,將目標區域新增至存取位置許可清單。如果是可用區磁碟 (例如將
us-east1新增為us-central1-a中磁碟允許的可用區):gcloud beta compute disk-settings update --access-location-policy=specific-regions --add-access-locations=us-east1 --zone=us-central1-a如果是區域磁碟 (例如在
us-central1中新增us-east1做為磁碟允許的區域):gcloud beta compute disk-settings update --access-location-policy=specific-regions --add-access-locations=us-east1 --region=us-central1
重新測試備份作業:更新
DiskSettings以允許目標備份區域後,請重新嘗試備份作業。
錯誤 100020101:無法備份 PersistentVolumeClaim - PersistentVolumeClaim 繫結至不支援的 PersistentVolume 類型
如果嘗試備份 PersistentVolumeClaim 時失敗,可能是因為 PersistentVolumeClaim 繫結至不支援的 PersistentVolume 類型,這時就會發生 100020101 錯誤。因此系統顯示以下錯誤訊息:
PersistentVolumeClaims are bound to PersistentVolumes of unsupported types and cannot be backed up.
如果 GKE 備份作業遇到繫結至 PersistentVolume 的 PersistentVolumeClaim,而該 PersistentVolume 使用的磁碟區類型不支援 GKE 備份資料備份,就會發生這個錯誤。GKE 備份主要支援備份 Persistent Disk 磁碟區的資料。如果 PersistentVolumeClaim 繫結至非 Persistent Disk 的 PersistentVolume,PersistentVolumeClaim 的資料備份作業就會失敗。
如要解決這項錯誤,請按照下列疑難排解說明操作:
執行
kubectl get pvc指令,列出所有與PersistentVolumeClaims和PersistentVolumes繫結的 。請查看這份清單,找出由不支援磁碟區類型支援的PersistentVolumes。kubectl get pvc --all-namespaces -o wide執行
kubectl describe pv指令,判斷由 GKE 備份 不支援的磁碟區類型支援的PersistentVolume磁碟區類型:kubectl describe pv PERSISTENT_VOLUME_NAME更改下列內容:
PERSISTENT_VOLUME_NAME:PersistentVolume的名稱,其中包含不支援的磁碟區類型,並列為上一個步驟輸出內容中的資料欄VOLUME。在輸出內容中,使用
Source和Driver欄位取得磁碟區佈建工具詳細資料:支援的永久磁碟:輸出內容類似於
Source.Driver: pd.csi.storage.gke.io或Source.Type:GCEPersistentDisk。對於導致錯誤的不支援類型:輸出內容會是「非永久磁碟」驅動程式,例如
Source.Driver:filestore.csi.storage.gke.io。
請使用下列其中一種方法解決錯誤:
遷移至永久磁碟磁碟區:建議使用這個方法備份所有資料。如要備份實際磁碟區資料,必須使用永久磁碟,也就是將資料從不支援的磁碟區類型遷移至新的永久磁碟 CSI 磁碟區。如需遷移 Persistent Disk 磁碟區的相關協助,請與 Cloud Customer Care 團隊聯絡。
在 GKE 備份中啟用寬鬆模式:如果不需要備份不支援磁碟區的資料,建議採用這個方法。如果無法或不需要遷移資料 (例如磁碟區由外部服務支援,且您打算在還原作業期間重新附加),可以設定 Backup for GKE 備份方案,允許備份在寬鬆模式下進行。如要進一步瞭解如何啟用寬容模式,請參閱「啟用備份方案的寬容模式」。
重新嘗試 GKE 備份作業。根據您選擇的錯誤解決方法,GKE 備份 作業的行為如下:
如果您遷移至 Persistent Disk 磁碟區,備份作業應會成功,包括磁碟區及其資料。
如果啟用寬鬆模式,備份作業應該會成功,但系統不會備份不支援磁碟區的資料。
如果作業持續失敗,請與 Cloud Customer Care 團隊聯絡,尋求進一步協助。
錯誤 100020104:無法備份 PersistentVolumeClaim - PersistentVolumeClaim 未繫結至 PersistentVolume
如果 PersistentVolumeClaim 未繫結至 PersistentVolume,嘗試備份 PersistentVolumeClaim 時就會失敗,並發生錯誤 100020104。錯誤會導致下列錯誤訊息:Failed to backup PVC - PVC Not Bound to a Persistent Volume。
如果 GKE 備份 作業嘗試備份未成功繫結至 PersistentVolume 的 PersistentVolumeClaim,就會發生這個錯誤。PersistentVolumeClaim 必須繫結至 PersistentVolume,才能供 Pod 等耗用工作負載使用,並由 GKE 備份服務備份。如果 PersistentVolumeClaim 仍處於 Pending 狀態,表示沒有合適的 PersistentVolume 可用,或無法佈建或繫結,導致備份作業失敗。如果相關聯的 StorageClass 使用 WaitForFirstConsumer 繫結模式,但沒有 Pod 或其他工作負載嘗試使用 PersistentVolumeClaim,PersistentVolumeClaim 就會保持未繫結狀態。
如要解決這項錯誤,請按照下列疑難排解說明操作:
如要檢查叢集中所有
PersistentVolumeClaims的狀態,並找出未繫結的PersistentVolumeClaim,請執行kubectl get pvc指令:kubectl get pvc --all-namespaces | grep `Pending`找出未繫結至
PersistentVolume的PersistentVolumeClaim後,請執行kubectl describe pvc指令,擷取未繫結PersistentVolumeClaim的相關資訊:kubectl describe pvc PVC_NAME -n NAMESPACE_NAME更改下列內容:
PVC_NAME:備份失敗的PersistentVolumeClaim名稱。NAMESPACE_NAME:PersistentVolumeClaim所在的命名空間名稱。
說明顯示後,請使用
Status和Events欄位,判斷PersistentVolumeClaim是否繫結至PersistentVolume。如果還是無法判斷PersistentVolumeClaim未繫結至PersistentVolume的原因,或是無法解決已識別的問題,可以在備份計畫中啟用寬鬆模式。如要進一步瞭解如何啟用寬容模式,請參閱「啟用備份方案的寬容模式」。