我想删除部署到我的集群的 Pod
helm install
.
我用了3种方法:
helm uninstall <release name>
-> 从集群和 helm 列表中删除 podhelm delete <release name>
-> 从集群和 helm 列表中删除 podkubectl delete -n <namespace> deploy <deployment name>
-> 从集群中删除 pod,但不从 helm 列表中删除他们有什么区别? 一种做法比另一种更好吗?
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
将其删除。
我会补充一点,我们使用的很多。
helm uninstall/install/upgrade
有 hooks 附加到它的生命周期。这很重要,这是一个小例子。
我们有作为 job 的一部分运行的数据库脚本。假设您准备发布版本为
1.2.3
的版本,并且作为该版本的一部分,您在表中添加了一列 - 您有一个脚本(liquibase/flyway 等),该脚本将在安装图表时自动运行。用简单的英语helm install
允许你在这种情况下说:“在安装代码之前,升级数据库模式”。这太棒了,可以让您将此类脚本的生命周期与图表的生命周期联系起来。
同样适用于降级,你可以说当你降级时,恢复架构,或采取任何需要的行动。
kubectl delete
根本就没有这样的功能
对我来说是一样的:
uninstall, del, delete, and un
掌舵(检查别名):
$ helm del --help 此命令采用版本名称并卸载该版本。 它删除与图表的最后一个版本关联的所有资源 以及发布历史,释放它以供将来使用。 使用“--dry-run”标志查看哪些版本将被卸载而不实际 卸载它们。 用法: helm uninstall RELEASE_NAME [...] [标志] 别名: uninstall, del, 删除, un
helm delete 是旧命令,现在已被 helm uninstall 取代。这个命令基本上卸载了之前使用 helm install/upgrade 部署的 helm chart 中的所有资源。
Kubectl delete 将只删除资源,如果它是由 helm chart 部署的,它将再次重新部署。因此,如果您想重新部署 pod 或删除未使用 helm chart 方法部署的资源,这些命令很有用。