為何我的 PVC 仍處於擱置狀態?
針對 Cloud Object Storage 中持續處於「待處理」狀態的持久性卷聲明進行疑難排解。
本疑難排解主題僅適用於執行 3.11 版本的 Red Hat OpenShift 集群。
當您建立一個 PVC 並執行 oc get pvc <pvc_name>`` 時,即使等待了一段時間,該 PVC 仍會保持在 「待處理 」狀態。
在 PVC 建立和連結期間,IBM Cloud Object Storage 外掛程式會執行許多不同的作業。 每個作業都可能失敗並導致不同的錯誤訊息。
說明 PVC 並檢閱一般錯誤訊息。
- 尋找 PVC 維持在 Pending 狀況的主要原因。
oc describe pvc <pvc_name> -n <namespace> - 檢閱一般錯誤訊息說明及解決方法。
| 錯誤訊息 | 說明 | 解決的步驟 |
|---|---|---|
can't get credentials: can't get secret <secret_name>: secrets "<secret_name>" not found |
用於保存 IBM Cloud Object Storage 服務認證的 Kubernetes 密碼不在 PVC 或 Pod 所在的名稱空間中。 | 請參閱由於找不到 Kubernetes 密碼,PVC 或 Pod 建立失敗。 |
can't get credentials: Wrong Secret Type.Provided secret of type XXXX.Expected type ibm/ibmc-s3fs |
為 IBM Cloud Object Storage 服務實例建立的 Kubernetes 密碼不包含 type: ibm/ibmc-s3fs。 |
編輯用於保存 IBM Cloud Object Storage 認證的 Kubernetes 密碼,以新增或變更 type 為 ibm/ibmc-s3fs。 |
Bad value for ibm.io/object-store-endpoint XXXX: scheme is missing. Must be of the form http://<hostname> or https://<hostname> Bad value for ibm.io/iam-endpoint XXXX: scheme is missing. Must be of the form http://<hostname> or https://<hostname> |
s3fs API 或 IAM API 端點的格式錯誤,或者無法根據叢集位置擷取到 s3fs API 端點。 | 請參閱由於錯誤的 s3fs API 端點,PVC 建立失敗。 |
object-path can't be set when auto create is enabled |
您使用 ibm.io/object-path 註釋指定了儲存區中您要裝載至 PVC 的現有子目錄。 若您設定了子目錄,則必須停用儲存桶自動建立功能。 |
在 PVC 中,設定 ibm.io/auto-create-bucket: "false",並在 ibm.io/bucket 中提供現有儲存區的名稱。 |
bucket auto-create must be enabled when bucket auto-delete is enabled |
在 PVC 中,您設定 ibm.io/auto-delete-bucket: true 以便在移除 PVC 時自動刪除資料、儲存區及 PV。 此選項需要同時將 ibm.io/auto-create-bucket 設定為 true``,並將 ibm.io/bucket 設定為 "" 。 |
在 PVC 中,設定 ibm.io/auto-create-bucket: true 及 ibm.io/bucket: "",以便自動以 tmp-s3fs-xxxx 格式的名稱建立儲存區。 |
bucket can't be set when auto-delete is enabled |
在 PVC 中,您設定 ibm.io/auto-delete-bucket: true 以便在移除 PVC 時自動刪除資料、儲存區及 PV。 此選項需要同時將 ibm.io/auto-create-bucket 設定為 true``,並將 ibm.io/bucket 設定為 "" 。 |
在 PVC 中,設定 ibm.io/auto-create-bucket: true 及 ibm.io/bucket: "",以便自動以 tmp-s3fs-xxxx 格式的名稱建立儲存區。 |
can't create bucket using API key without service-instance-id |
如果要使用 IAM API 金鑰來存取 IBM Cloud Object Storage 服務實例,您必須在 Kubernetes 密碼中儲存 API 金鑰和 IBM Cloud Object Storage 服務實例 ID。 | 請參閱為 Object Storage 服務認證建立密碼。 |
object-path “<subdirectory_name>” not found inside bucket <bucket_name> |
您使用 ibm.io/object-path 註釋指定了儲存區中您要裝載至 PVC 的現有子目錄。 在指定的儲存區中找不到此子目錄。 |
驗證在 ibm.io/object-path 中指定的儲存區中是否存在 ibm.io/bucket 中指定的子目錄。 |
BucketAlreadyExists: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again. |
您設定了 ibm.io/auto-create-bucket: true 並同時指定了儲存區名稱,或者指定了 IBM Cloud Object Storage 中已存在的儲存區名稱。 儲存區名稱在 IBM Cloud Object Storage 中的所有服務實例和地區中必須是唯一的。 |
確保設定 ibm.io/auto-create-bucket: false,並確保提供在 IBM Cloud Object Storage 中唯一的儲存區名稱。 如果要使用 IBM Cloud Object Storage 外掛程式自動建立儲存區名稱,請設定 ibm.io/auto-create-bucket: true 和 ibm.io/bucket: ""。 這將使用格式為
tmp-s3fs-xxxx 的唯一名稱來建立儲存區。 如果您要為自動建立的儲存區指定儲存區名稱,請設定 ibm.io/auto-create-bucket: true 及 ibm.io/auto-delete-bucket: false 和 ibm.io/bucket: "<bucket_name>"。 |
can't access bucket <bucket_name>: NotFound: Not Found |
您嘗試存取一個並非由您建立的儲存桶,或者您指定的儲存類別與 s3fs API 端點,與建立該儲存桶時所使用的儲存類別及 s3fs API 端點不符。 | 請參閱 無法存取現有儲存區。 |
Put https://s3-api.dal-us-geo.objectstorage.service.networklayer.com/<bucket_name>: net/http: invalid header field value "AWS4-HMAC-SHA256 Credential=1234a12a123a123a1a123aa1a123a123 \n/20190412/us-standard/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=12aa1abc123456aabb12aas12aa123456sb123456abc" for key Authorization |
Kubernetes 密碼中的值未正確編碼為 Base64。 | 檢閱 Kubernetes 密碼中的值,並將每個值編碼為 Base64。 您還可以使用 oc create secret 指令來建立新密碼,並讓 Kubernetes 自動將值編碼為 Base64。 |
can't access bucket <bucket_name>: Forbidden: Forbidden |
您已指定 ibm.io/auto-create-bucket: false 並嘗試存取未建立的儲存區,IBM Cloud Object Storage HMAC 認證的秘密存取金鑰或存取金鑰 ID 不正確,或儲存區的地區端點已變更。 |
您無法存取非您所建立的儲存桶。 請改為設定 ibm.io/auto-create-bucket: true 和 ibm.io/bucket: ""``,以自動建立儲存桶。 如果您是儲存區的擁有者,請參閱PVC 建立失敗,因為認證錯誤或拒絕存取來檢查認證。 |
can't create bucket <bucket_name>: AccessDenied: Access Denied |
您指定了 ibm.io/auto-create-bucket: true 以在 IBM Cloud Object Storage 中自動建立儲存區,但為 Kubernetes 密碼中提供的認證指派的是 IAM 讀者服務存取角色。 這個角色不容許在 IBM Cloud Object Storage 建立儲存區。 |
請參閱 PVC 建立失敗,因為認證錯誤或拒絕存取。 |
can't create bucket <bucket_name>: AccessForbidden: Access Forbidden |
您指定了 ibm.io/auto-create-bucket: true,並在 ibm.io/bucket 中提供了現有儲存區的名稱。 此外,還為 Kubernetes 密碼中提供的認證指派了 IAM 讀者服務存取角色。 這個角色不容許在 IBM Cloud Object Storage 建立儲存區。 |
若要使用現有儲存區,請設定 ibm.io/auto-create-bucket: false,並在 ibm.io/bucket 中提供現有儲存區的名稱。 若要使用現有 Kubernetes 密碼自動建立儲存區,請設定 ibm.io/bucket: "",並遵循由於錯誤的認證或存取遭拒,PVC 建立失敗,以驗證
Kubernetes 密碼中的認證。 |
can't create bucket <bucket_name>: SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. For more information, see REST Authentication and SOAP Authentication for details |
Kubernetes 密碼中提供的 HMAC 認證的 IBM Cloud Object Storage 秘密存取金鑰不正確。 | 請參閱 PVC 建立失敗,因為認證錯誤或拒絕存取。 |
can't create bucket <bucket_name>: InvalidAccessKeyId: The AWS Access Key ID you provided does not exist in our records |
Kubernetes 密碼中提供的 HMAC 認證的 IBM Cloud Object Storage 存取金鑰 ID 或秘密存取金鑰不正確。 | 請參閱 PVC 建立失敗,因為認證錯誤或拒絕存取。 |
can't create bucket <bucket_name>: CredentialsEndpointError: failed to load credentialscan't access bucket <bucket_name>: CredentialsEndpointError: failed to load credentials |
IAM 認證的 IBM Cloud Object Storage API 金鑰和 IBM Cloud Object Storage 服務實例的 GUID 不正確。 | 請參閱 PVC 建立失敗,因為認證錯誤或拒絕存取。 |
TokenManagerRetrieveError: error retrieving the token |
當您在沒有公用出埠存取權的叢集上使用 IAM 認證建立 PVC 時,會發生此錯誤。 | 如果您的叢集沒有公用出埠存取權,請 建立使用 HMAC 認證的 IBM Cloud Object Storage 實例。 |
set-access-policy not supported for classic cluster |
當您在「標準」叢集中安裝 ibm-object-storage-plugin 並設定 bucketAccessPolicy=true 選項時,會發生此錯誤。 bucketAccessPolicy=true 選項僅與 VPC 叢集搭配使用。 |
安裝外掛程式 並設定 bucketAccessPolicy=false 選項。 |