本頁面說明使用 Backup for GKE 時可能遇到的權限錯誤、執行動作時應注意的事項,以及如何解決錯誤。
錯誤 100010101:無法備份 PersistentVolumeClaim - 缺少租戶專案的 IAM 繫結
嘗試備份 PersistentVolumeClaim
時,如果租戶專案缺少 Identity and Access Management 繫結,就會發生 100010101
錯誤,並顯示 Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project
錯誤訊息。
Backup for GKE 會建立 GKE 叢集永久磁碟的快照。快照會存放在您的 Google Cloud 專案 (也稱為消費端專案) 中,並在管理的租戶專案中建立快照。 Google Cloud 租戶專案位於 google.com
機構內,與您自己的機構分開。
租戶專案中的服務代理需要特定權限,才能使用客戶自行管理的加密金鑰 (CMEK),為叢集 PersistentVolumeClaim
參照的 Persistent Disk 加密。這項權限會加密及解密快照資料。如果服務代理程式在磁碟的 CMEK 上缺少 roles/cloudkms.cryptoKeyEncrypterDecrypter
角色,備份作業就會失敗。service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
如要解決這項錯誤,請按照下列說明操作:
確認您具備足夠的 IAM 權限,可在 Google Cloud 控制台中修改 Cloud Key Management Service 金鑰的 IAM 政策,例如
roles/cloudkms.admin
或roles/owner
。使用備份作業失敗時
status reason
訊息中的TENANT_PROJECT_NUMBER
值,找出租戶專案的 Compute Engine 服務代理程式。例如:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
。找出用於加密永久磁碟的下列 CMEK 資訊:
金鑰名稱:加密金鑰的名稱。
金鑰環:金鑰所在金鑰環的名稱。
位置:金鑰所在位置。 Google Cloud 例如
global
或us-central1
。
如要將 CMEK 的
roles/cloudkms.cryptoKeyEncrypterDecrypter
角色授予租戶專案的 Compute Engine 服務代理人,請使用 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.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
更改下列內容:
KEY_NAME
:加密金鑰的名稱。KEY_RING
:金鑰環的名稱。LOCATION
:金鑰的位置。 Google Cloud 例如global
或us-central1
。TENANT_PROJECT_NUMBER
:從備份作業失敗的status reason
訊息中取得的租戶專案編號。
如果指令執行成功,輸出內容會與下列內容類似:
- members: - serviceAccount:service-987654321098@compute-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
」錯誤訊息。
Backup for GKE 會建立 GKE 叢集永久磁碟的快照。快照會存放在您的 Google Cloud 專案 (也稱為消費者專案) 中,並在 Google Cloud管理的租戶專案中建立。租戶專案位於 google.com
機構內,與您自己的機構分開。
機構政策會規定您可以在何處建立儲存空間資源。Constraint constraints/compute.storageResourceUseRestrictions violated
這項錯誤表示資源或快照違反政策,因為是在不屬於允許的機構結構的租戶專案中建立。由於租戶專案位於 Google 的機構內,因此超出您定義的政策範圍,導致備份失敗。
如要解決這項錯誤,請按照下列說明操作:
找出實作
constraints/compute.storageResourceUseRestrictions
限制的機構政策。如要進一步瞭解如何使用 Google Cloud 控制台查看機構政策,請參閱「查看機構政策」。修改
constraints/compute.storageResourceUseRestrictions
政策,將 Backup for GKE 使用的folders/77620796932
租戶專案資料夾納入允許清單。將資料夾新增至允許清單後,請儲存政策變更。
機構政策更新並傳播後 (通常需要幾分鐘),請重新測試備份作業。備份作業應繼續進行,且不得違反儲存空間資源使用限制。如果作業仍未成功,請與 Cloud Customer Care 團隊聯絡,尋求進一步的協助。
錯誤 100010106:無法備份 PersistentVolumeClaim - Backup for GKE 服務代理人缺少 IAM 繫結
嘗試備份 PersistentVolumeClaim
時,如果 Backup for GKE 服務代理程式缺少身分與存取權管理繫結,就會發生錯誤 100010106
,並顯示 Failed to backup PVC - Missing IAM binding for Backup for GKE service agent
錯誤訊息。
Backup for GKE 需要權限,才能使用 BackupPlan
的客戶自行管理加密金鑰 (CMEK) 加密及解密磁碟區永久磁碟。如果 GKE 備份服務代理在 BackupPlan
CMEK 上缺少 roles/cloudkms.cryptoKeyEncrypterDecrypter
角色,備份作業就會失敗。
如要解決這項錯誤,請按照下列說明操作:
找出專案專屬的 Google 代管 GKE 備份服務代理。例如:
service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com
。您可以透過下列方法找出專案編號:使用 Google Cloud 控制台中的 Google Cloud 專案資訊主頁。
使用 Google Cloud CLI 執行
gcloud projects describe
指令:gcloud projects describe PROJECT_ID –format="value(projectNumber)"
將
PROJECT_ID
替換為專案的專屬名稱。
找出下列 CMEK 詳細資料:
金鑰名稱:加密金鑰的名稱。
金鑰環:金鑰所在金鑰環的名稱。
位置:CMEK 所在的 Google Cloud 位置
BackupPlan
。例如global
或us-central1
。
如要授予 Backup for GKE 服務代理人 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-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
更改下列內容:
KEY_NAME
:加密金鑰的名稱。KEY_RING
:金鑰環的名稱。LOCATION
:金鑰的位置。 Google Cloud 例如global
或us-central1
。PROJECT_NUMBER
:您的 Google Cloud 專案編號。
確認您對 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.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.iam.gserviceaccount.com
格式) 是 GKE 叢集與 Google Cloud服務互動的必要條件。備份計畫使用客戶自行管理的加密金鑰 (CMEK)。這個服務代理程式需要使用您的 CMEK 加密及解密備份資料的權限。如果備份方案在 CMEK 上缺少 roles/cloudkms.cryptoKeyEncrypterDecrypter
角色,從叢集啟動的備份作業就會失敗,並顯示 permission denied
錯誤。
如要解決這項錯誤,請按照下列疑難排解說明操作:
確認您具備修改 Cloud Key Management Service 金鑰 IAM 政策的正確權限。例如
cloudkms.admin
或roles/owner
。找出 Google Kubernetes Engine 叢集服務代理程式。這項服務代理程式是由 Google Cloud 自動建立及管理,適用於您的 GKE 叢集。例如:
service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
。您需要專案編號才能組成完整的服務帳戶。您可以使用下列其中一種方法找出專案編號:使用 Google Cloud 控制台中的 Google Cloud 專案資訊主頁。
使用 Google Cloud CLI 執行
gcloud projects describe
指令:gcloud projects describe PROJECT_ID –-format="value(projectNumber)"
將
PROJECT_ID
替換為您的專案 ID。
找出下列 CMEK 資訊:
金鑰名稱:加密金鑰的名稱。
金鑰環:金鑰所在金鑰環的名稱。
位置:金鑰所在位置。 Google Cloud 例如
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.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
更改下列內容:
KEY_NAME
:加密金鑰的名稱。KEY_RING
:金鑰環的名稱。LOCATION
:金鑰的位置。 Google Cloud 例如global
或us-central1
。PROJECT_NUMBER
:專案名稱。
輸出結果會與下列內容相似:
- members: - serviceAccount:service-123456789012@container-engine-robot.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter ```
重新嘗試 Backup for GKE 作業。如果作業持續失敗,請與 Cloud Customer Care 團隊聯絡,以取得進一步協助。
錯誤 100020101:無法備份 PersistentVolumeClaim - PersistentVolumeClaim 繫結至不支援的 PersistentVolume 類型
如果嘗試備份 PersistentVolumeClaim
時發生錯誤 100020101
,可能是因為 PersistentVolumeClaim
繫結至不支援的 PersistentVolume
類型。這個錯誤會導致下列錯誤訊息:
PersistentVolumeClaims are bound to PersistentVolumes of unsupported types and cannot be backed up.
如果 Backup for GKE 作業遇到繫結至 PersistentVolume
的 PersistentVolumeClaim
,而該 PersistentVolume
使用的磁碟區類型不支援 Backup for GKE 資料備份,就會發生這項錯誤。Backup for GKE 主要支援備份永久磁碟磁碟區中的資料。如果 PersistentVolumeClaim
繫結至非永久磁碟的 PersistentVolume
,PersistentVolumeClaim
的資料備份作業就會失敗。
如要解決這項錯誤,請按照下列疑難排解說明操作:
執行
kubectl get pvc
指令,列出所有PersistentVolumeClaims
和繫結至這些PersistentVolumeClaims
的PersistentVolumes
。請查看這份清單,找出由不支援的磁碟區類型備份的PersistentVolumes
。kubectl get pvc --all-namespaces -o wide
執行
kubectl describe pv
指令,判斷由 Backup for 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
。
請使用下列其中一種方法解決錯誤:
遷移至 Persistent Disk 磁碟區:建議使用這個方法完整備份資料。如要備份實際磁碟區資料,必須使用永久磁碟,也就是將資料從不支援的磁碟區類型遷移至新的永久磁碟 CSI 磁碟區。如需遷移 Persistent Disk 磁碟區的相關協助,請與 Cloud Customer Care 團隊聯絡。
在 Backup for GKE 中啟用寬鬆模式:如果不需要備份不支援的磁碟區資料,建議使用這個方法。如果遷移資料不可行或不必要 (例如磁碟區是由外部服務備份,且您打算在還原作業期間重新附加),可以將 Backup for GKE 備份方案設為允許備份作業以寬鬆模式進行。如要進一步瞭解如何啟用寬容模式,請參閱「啟用備份方案的寬容模式」。
重新嘗試 Backup for GKE 作業。根據您選擇的錯誤解決方法,Backup for GKE 作業的行為如下:
如果您已遷移至永久磁碟磁碟區,備份作業應會成功,包括磁碟區資料。
如果啟用寬鬆模式,備份作業應該會成功,但系統不會備份不支援磁碟區的資料。
如果作業持續失敗,請與 Cloud Customer Care 團隊聯絡,尋求進一步協助。
錯誤 100020104:無法備份 PersistentVolumeClaim - PersistentVolumeClaim 未繫結至 PersistentVolume
嘗試備份 PersistentVolumeClaim
時,如果 PersistentVolumeClaim
未繫結至 PersistentVolume
,就會發生錯誤 100020104
。錯誤會導致下列錯誤訊息:Failed to backup PVC - PVC Not Bound to a Persistent Volume
。
如果 Backup for 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
的原因,或是無法解決已識別的問題,可以在備份計畫中啟用寬鬆模式。如要進一步瞭解如何啟用寬容模式,請參閱「啟用備份方案的寬容模式」。