IBM Cloud Docs
PVC が保留状態のままになるのはなぜですか?

PVC が保留状態のままになるのはなぜですか?

PVC を作成して kubectl get pvc <pvc_name> を実行すると、しばらく待機した後も PVC は 保留中 状態のままになります。

PVC の作成時およびバインド時に、IBM Cloud Object Storage プラグインによってさまざまなタスクが実行されます。 各タスクが失敗し、異なるエラー・メッセージが表示されることがあります。

PVC の詳細を表示し、一般的なエラー・メッセージを確認します。

  1. PVC が Pending の状態のままになっている根本原因を探します。
    kubectl describe pvc <pvc_name> -n <namespace>
    
  2. 一般的なエラー・メッセージの説明と解決方法を確認します。
ブロック・ストレージのエラー・メッセージ
エラー・メッセージ 説明 解決のための手順
can't get credentials: can't get secret <secret_name>: secrets "<secret_name>" not found IBM Cloud Object Storage サービス資格情報を保持する Kubernetes シークレットが、PVC またはポッドと同じ名前空間に存在しません。 Kubernetes シークレットが見つからないため、PVC またはポッドの作成が失敗するを参照してください。
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 シークレットを編集して、typeibm/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 で、PVC を削除するときにデータ、バケット、および PV を自動的に削除するように ibm.io/auto-delete-bucket: true を設定しました。 このオプションでは、ibm.io/auto-create-buckettrue に設定し、同時に 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 で、PVC を削除するときにデータ、バケット、および PV を自動的に削除するように ibm.io/auto-delete-bucket: true を設定しました。 このオプションでは、ibm.io/auto-create-buckettrue に設定し、同時に 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 サービス・インスタンスにアクセスする場合は、IBM Cloud Object Storage サービス・インスタンスの API キーと ID を Kubernetes シークレットに保管する必要があります。 オブジェクト・ストレージ・サービス資格情報用のシークレットの作成を参照してください。
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: trueibm.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 にエンコードします。 kubectl 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 Cloud Object Storage で自動的にバケットを作成するように ibm.io/auto-create-bucket: true を指定しましたが、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 credentials
can'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 オプションを設定します。