為何安裝 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 外掛程式安裝中存在於您的群集中,但在您移除或升級外掛程式時卻沒有正確移除。
解決問題
刪除錯誤訊息中顯示的資源,然後重試安裝。
-
刪除錯誤訊息中顯示的資源。
kubectl delete <resource_kind> <resource_name>刪除儲存類別資源的範例:
kubectl delete storageclass <storage_class_name> -
重試安裝。
-
如果繼續看到相同的錯誤,請找出並移除先前安裝的所有衝突資源。
-
取得
ibmcloud-object-storage-plugin所建立儲存類別的清單。kubectl get sc --all-namespaces \ -l app=ibmcloud-object-storage-plugin \ -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' -
取得
ibmcloud-object-storage-plugin所建立的叢集角色連結清單。kubectl get ClusterRoleBinding --all-namespaces \ -l app=ibmcloud-object-storage-plugin \ -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' -
取得
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}' -
取得
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}' -
取得
ibmcloud-object-storage-plugin所建立的叢集角色清單。kubectl get ClusterRole --all-namespaces \ -l app=ibmcloud-object-storage-plugin \ -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' -
取得
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}' -
取得
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}'
- 取得
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}'
- 取得
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}'
- 刪除前幾個步驟中找出的衝突資源。
kubectl delete <resource_kind> <resource_name>
-
刪除衝突的資源之後,請 重試安裝。
-
確認外掛程式安裝成功。
kubectl get pods -n kube-system | grep object-storage