插件安装失败,提示The release name is already exist如何解决?
问题现象
当安装插件失败,返回 The release name is already exist 错误。
问题原因
当安装插件返回The release name is already exist错误时,表示kuberneters集群中有残留该插件release记录,一般由于集群etcd做过备份恢复或者该插件之前安装删除异常导致。
解决方案
通过kubectl对接集群,手动清理该插件release对应的secret及configmap。以下以清理autoscaler插件release为示例。
- 配置kubectl对接集群后,执行以下命令查看插件相关的release的secret列表。
kubectl get secret -A |grep cceaddon
插件release的secret名称为"sh.helm.release.v1.cceaddon-{插件名称}.v*"格式,可能有多个版本,删除时多个版本同时删除。
- 执行删除release secret命令。
如删除上图中的autoscaler插件对应的release secret
kubectl delete secret sh.helm.release.v1.cceaddon-autoscaler.v1 sh.helm.release.v1.cceaddon-autoscaler.v2 -nkube-system
- 若该插件为helm v2时创建,cce会在查看插件列表及插件详情等操作中自动将configmap中的v2 release转换至secret中的v3 release,原configmap中的v2 release不会删除。可执行以下命令查看插件相关的release的configmap列表。
kubectl get configmap -A | grep cceaddon
插件release的configmap名称为"cceaddon-{插件名称}.v*"格式,可能有多个版本,删除时多个版本同时删除。
- 执行删除release configmap命令。
如删除上图中的autoscaler插件对应的release configmap
kubectl delete configmap cceaddon-autoscaler.v1 cceaddon-autoscaler.v2 -nkube-system
删除kube-system下资源属高风险操作,请确保命令正确后再执行,以免出现误删资源。
- 在CCE控制台安装插件,然后再卸载保证之前的残留的插件资源清理干净,卸载完成后再进行第二次安装插件,安装成功即可。
第一次安装插件是可能因之前的插件残留资源而导致安装后插件状态异常,属正常现象,这时在控制台卸载插件能保证这些残留资源清理干净,再次安装插件能正常运行。