为什么安装 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