IBM Cloud Object Storage プラグインのインストールが失敗するのはなぜですか?

仮想プライベートクラウド クラシック・インフラストラクチャー

以前のインストールでリソースが競合したため、 IBM Cloud Object Storage プラグインのインストールに失敗しました。

ibm-object-storage-plugin をインストールすると、インストールに失敗する。

次の例のようなエラーメッセージが表示されます:

Error: rendered manifest contains a resource that already exists. Unable to continue with install. Existing resource conflict: namespace: , name: ibmc-s3fs-smart-cross-region, existing_kind: storageClass, new_kind: storage.k8s.io/v1, Kind=StorageClass
Error: plugin "ibmc" exited with error

インストール中、 IBM Cloud Object Storage プラグインは、ストレージクラスやクラスタロールバインディングの作成など、さまざまなタスクを実行します。 一部のリソースは、 IBM Cloud Object Storage プラグインを以前にインストールしたときにクラスタに既に存在しており、プラグインを削除またはアップグレードしたときに適切に削除されなかった可能性があります。

問題の解決

エラーメッセージに表示されているリソースを削除し、インストールを再試行してください。

  1. エラー・メッセージに表示されているリソースを削除します。

    kubectl delete <resource_kind> <resource_name>
    

    ストレージ・クラスのリソースを削除する例:

    kubectl delete storageclass <storage_class_name>
    
  2. インストールを再試行します。

  3. 同じエラーが表示され続ける場合は、以前のインストールで競合したリソースをすべて特定し、削除してください。

  4. ibmcloud-object-storage-plugin で作成されたストレージ・クラスのリストを取得します。

    kubectl get sc --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  5. ibmcloud-object-storage-plugin で作成されたクラスター役割バインディングのリストを取得します。

    kubectl get ClusterRoleBinding --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  6. ibmcloud-object-storage-driver で作成された役割バインディングのリストを取得します。

    kubectl get RoleBinding --all-namespaces \
        -l app=ibmcloud-object-storage-driver \
        -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
    
  7. ibmcloud-object-storage-plugin で作成された役割バインディングのリストを取得します。

    kubectl get RoleBinding --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
    
  8. ibmcloud-object-storage-plugin で作成されたクラスター役割のリストを取得します。

    kubectl get ClusterRole --all-namespaces \
        -l app=ibmcloud-object-storage-plugin \
        -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  9. ibmcloud-object-storage-plugin で作成されたデプロイメントのリストを取得します。

    kubectl get deployments --all-namespaces \
        -l app=ibmcloud-object-storage-plugin \
        -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
    
  10. ibmcloud-object-storage-driver で作成されたデーモン・セットのリストを取得します。

kubectl get DaemonSets --all-namespaces \
    -l app=ibmcloud-object-storage-driver \
    -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
  1. ibmcloud-object-storage-driver で作成されたサービス・アカウントのリストを取得します。
kubectl get ServiceAccount --all-namespaces \
    -l app=ibmcloud-object-storage-driver \
    -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
  1. ibmcloud-object-storage-plugin で作成されたサービス・アカウントのリストを取得します。
kubectl get ServiceAccount --all-namespaces \
    -l app=ibmcloud-object-storage-plugin \
    -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
  1. 前のステップで特定された競合リソースを削除する。
kubectl delete <resource_kind> <resource_name>
  1. 競合しているリソースを削除したら、インストールを再試行します

  2. プラグインが正常にインストールされていることを確認する。

kubectl get pods -n kube-system | grep object-storage