為何安裝 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