Helm 3安装用于存在的资源

时间:2019-12-22 11:32:16

标签: kubernetes kubernetes-helm

运行helm install(头盔3.0.2)时

我收到以下错误:错误: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: kind: PodSecurityPolicy, namespace: , name: po-kube-state-metrics

但是我找不到它,并且在无法获得ns的错误中,我该如何删除它?

运行kubectl get all --all-namespaces时,我看到了所有资源,但没有看到po-kub-state-metrics……其他资源也发生了,有什么想法吗?

我对monitoring-grafana实体和的结果有相同的错误 kubectl get PodSecurityPolicy --all-namespaces是:

monitoring-grafana false RunAsAny RunAsAny RunAsAny RunAsAny false configMap,emptyDir,projected,secret,do

7 个答案:

答案 0 :(得分:2)

我的案例能够使用--force成功升级我的版本

if($_GET['g1'] == "no")
    //Norwegian language
else if($_GET['g1'] == "about-us")
    //About us page
else
    //Page doesn't exist

如果您使用不同的发行版,则这将对相同的发行版有所帮助。从现在起,Helmv3.x尚无CRD选项,请为冲突的资源选择其他名称-在Helmv3.x中删除了skip-crds

答案 1 :(得分:2)

在部署Istio时遇到了同样的问题。所以我做到了

kubectl get clusterrole
kubectl get clusterrolebinging
kubectl delete mutatingwebhookconfiguration istio-sidecar-injector
kubectl delete validatingwebhookconfiguration istio-galley
kubectl delete namespace <istio-namespace>

,然后全部删除并开始运行。

答案 2 :(得分:1)

首先,在重新安装之前,您需要确保已成功卸载头盔release

要列出所有版本,请使用:

$ helm list --all --all-namespaces

要卸载发行版,请使用:

$ helm uninstall <release-name> -n <namespace>

如果卸载不能解决问题,则可以尝试使用以下命令进行清理:

$ helm template <NAME> <CHART> --namespace <NAMESPACE> | kubectl delete -f - 

示例:

$ helm template happy-panda stable/mariadb --namespace kube-system | kubectl delete -f -

现在,尝试重新安装。

更新

让我们考虑您的图表名称为mon,而发布名称为po。由于您位于图表目录(.)中,如下所示:

.
├── mon
│   ├── Chart.yaml
│   ├── README.md
│   ├── templates
│   │   ├── one.yaml
│   │   ├── two.yaml
│   │   ├── three.yaml
│   │   ├── _helpers.tpl
│   │   ├── NOTES.txt
│   └── values.yaml

然后,您可以在helm template命令中跳过头盔仓库名称(即稳定版)。 Helm将使用目录中的mon图表。

$ helm template po mon --namespace mon | kubectl delete -f -

答案 3 :(得分:0)

我对CRD对象有同样的错误。我在Github上使用了这张图表,为了防止出现此错误,我可以使用--skip-crds标志。也许您正在使用的项目具有类似的功能。 https://github.com/helm/charts/tree/master/incubator/sparkoperator#configuration

答案 4 :(得分:0)

--force或其他选项也无济于事。这是我遇到的错误。

Release "develop-myrelease" does not exist. Installing it now.
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: namespace: , name: develop-myrelease, existing_kind: rbac.authorization.k8s.io/v1beta1, Kind=ClusterRoleBinding, new_kind: rbac.authorization.k8s.io/v1beta1, Kind=ClusterRoleBinding

所以我只删除clusterrolebinding及其工作。

kubectl get clusterrolebinding | grep develop-myrelease
kubectl delete clusterrolebinding develop-myrelease

然后再次运行部署。

答案 5 :(得分:0)

如果您要升级到 helm 3,请确保可以分别运行 helm 2 和 helm 3。示例

helm2 list
helm3 list

此后,如果您尝试在 helm 3 中安装 helm chart,则会弹出该错误,因为它存在于 helm 2 中。

使用 helm2to3 插件升级到 Helm3: https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3

我完全遵循这一点,我没有遇到任何问题

答案 6 :(得分:0)

我花了很多时间处理与错误相关的错误:

<块引用>

错误:呈现的清单包含一个已经存在的资源...

我有 3 个简单的结论:

1 ) 来自之前部署(通过 kubectl 或 helm)的资源可能存在于集群中。

2 ) 使用 k9sLens 等高级管理/调试工具查看所有集群资源(而不是 kubectl get / helm ls)。

3 ) 通常,错误中指定的资源名称是有含义的 - 直接搜索它们,看看它们是否可以删除。