【问题标题】:Helm 3 install for resouces that existHelm 3 安装现有资源
【发布时间】:2020-04-14 01:32:41
【问题描述】:

当运行helm install (helm 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 entity 和结果 kubectl get PodSecurityPolicy --all-namespaces 是:

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

【问题讨论】:

  • 能否将kubectl get PodSecurityPolicy --all-namespaces的结果添加到问题正文中?
  • @KamolHasan - 请查看我的更新
  • 您是否已经将这个或类似的图表安装到您的集群中?你用的是什么图表?您使用的是 Minikube 还是 Kubeadm?

标签: kubernetes kubernetes-helm


【解决方案1】:

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

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

$ helm list --all --all-namespaces

要卸载版本,请使用:

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

您也可以使用--no-hooks 跳过命令的运行钩子:

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

如果卸载没有解决你的问题,你可以试试下面的命令清理一下:

$ 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 repo 名称(即 stable)。 Helm 将使用目录中的 mon 图表。

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

【讨论】:

  • 非常感谢,这给了我一些方向。如果我使用当前目录. 安装 helm 图表,例如 `helm upgrade --install mon--namespace mon 。 -f values.yaml`,在这种情况下我应该如何删除它?
  • 我遇到了类似的错误。 helm lint 提出了我必须解决的问题。
【解决方案2】:

我对 CRDs 对象有同样的错误。我在 Github 上使用了这个图表,为了防止这个错误,我使用了 --skip-crds 标志。也许您正在使用的项目是这样的: https://github.com/helm/charts/tree/master/incubator/sparkoperator#configuration

【讨论】:

  • 谢谢,这个答案解决了我的问题。 CRD 也有同样的问题。如果我想使用集群中已经存在的 crd 安装图表,helm 失败并显示错误消息rendered manifests contain a resource that already exists. Unable to continue with install。我已经尝试过--skip-crds,但没有考虑到,包含 crd 定义的相应 helm 模板必须放在名为crds 的文件夹中。您的链接将我引向了正确的方向:)
【解决方案3】:

对于我的情况,我可以使用 --force 成功升级我的构建

Mulhasans-MacBook-Pro:helm-tuts mulhasan$ helm upgrade --install --force  api-streamingserver ./api-streamingserver

如果您正在使用不同的版本,这将有助于同一版本为冲突资源选择不同的名称,因为目前 Helmv3.x 没有 CRD 选项 --skip-crds 在 Helmv3.x 中被删除

【讨论】:

    【解决方案4】:

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

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

    当全部删除并启动时,它起作用了。

    【讨论】:

      【解决方案5】:

      所以--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
      

      然后再次运行部署。

      【讨论】:

        【解决方案6】:

        如果您要升级到 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

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

        【讨论】:

          【解决方案7】:

          我花了很多时间来解决与错误相关的错误:

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

          我有 3 个简单的结论:

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

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

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

          【讨论】:

            猜你喜欢
            • 2021-12-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-05-23
            • 2020-12-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多