helm uninstall、helm delete和kubectl delete有什么区别

问题描述 投票:0回答:4

我想删除部署到我的集群的 Pod

helm install
.

我用了3种方法:

  1. helm uninstall <release name>
    -> 从集群和 helm 列表中删除 pod
  2. helm delete <release name>
    -> 从集群和 helm 列表中删除 pod
  3. kubectl delete -n <namespace> deploy <deployment name>
    -> 从集群中删除 pod,但不从 helm 列表中删除

他们有什么区别? 一种做法比另一种更好吗?

kubernetes kubernetes-helm kubectl
4个回答
17
投票

helm delete
helm uninstall
的别名,您可以在检查
--help
语法时看到这一点:

$ helm delete --help
...
Usage:
  helm uninstall RELEASE_NAME [...] [flags]

kubectl delete ...
只是删除集群中的资源。

执行

helm uninstall ... 
不仅会删除 pod,还会删除 helm 在安装图表时创建的所有资源。对于单个 pod,这可能与使用
kubectl delete...
没有什么不同,但是当您有数十或数百个不同的资源和依赖图表时,通过执行
kubectl delete...
手动完成所有这些变得麻烦、耗时且容易出错。

通常,如果您要从集群中删除某些内容,请使用与最初安装它相同的方法。如果您使用 helm 将其安装到集群中,请使用 helm 将其删除。如果您使用

kubectl create
kubectl apply
,请使用
kubectl delete
将其删除。


4
投票

我会补充一点,我们使用的很多。

helm uninstall/install/upgrade
hooks 附加到它的生命周期。这很重要,这是一个小例子。

我们有作为 job 的一部分运行的数据库脚本。假设您准备发布版本为

1.2.3
的版本,并且作为该版本的一部分,您在表中添加了一列 - 您有一个脚本(liquibase/flyway 等),该脚本将在安装图表时自动运行。用简单的英语
helm install
允许你在这种情况下说:“在安装代码之前,升级数据库模式”。这太棒了,可以让您将此类脚本的生命周期与图表的生命周期联系起来。

同样适用于降级,你可以说当你降级时,恢复架构,或采取任何需要的行动。

kubectl delete
根本就没有这样的功能


0
投票

对我来说是一样的:

uninstall, del, delete, and un
掌舵(检查别名):

$ helm del --help

此命令采用版本名称并卸载该版本。

它删除与图表的最后一个版本关联的所有资源
以及发布历史,释放它以供将来使用。

使用“--dry-run”标志查看哪些版本将被卸载而不实际
卸载它们。

用法:
  helm uninstall RELEASE_NAME [...] [标志]

别名:
  uninstall, del, 删除, un

0
投票

helm delete 是旧命令,现在已被 helm uninstall 取代。这个命令基本上卸载了之前使用 helm install/upgrade 部署的 helm chart 中的所有资源。

Kubectl delete 将只删除资源,如果它是由 helm chart 部署的,它将再次重新部署。因此,如果您想重新部署 pod 或删除未使用 helm chart 方法部署的资源,这些命令很有用。

© www.soinside.com 2019 - 2024. All rights reserved.