介绍
在 Helm 中,该
helm upgrade [release-name] [chart]
命令可让你将版本升级到新版本。但是,尝试升级你的版本有时会产生“
helm has no deploy release ”错误。
如何修复helm has no deployed releases错误 ?
在本教程中,我们将介绍“ helm has no deploy release ”错误的原因以及几种可能的解决方案。
先决条件
访问终端/命令行
一个 Kubernetes 集群设置并运行
Helm 安装和配置
什么原因导致“helm 没有部署的版本”错误?
从 Helm 2.7.1 开始,
helm upgrade [release-name] [chart]
在之前失败的版本上运行该命令会产生以下错误:
Error: UPGRADE FAILED: [release-name] has no deployed releases
Helm 2 将当前部署清单与新部署清单进行比较以应用必要的补丁。但是,它不会比较清单之间的资源状态。
如果之前的部署失败,则集群很可能缺少一些资源。在 Helm 2.7.1 之前,Helm 会尝试在不安装缺失资源的情况下升级部署。为了防止这种情况,从 2.7.1 版本开始,Helm 使用最新的成功部署作为升级的基线。如果没有发现部署成功,系统会返回“
helm has no deployedreleases ”错误信息。
helm has no deployed releases解决办法
有几种方法可以修复
“helm has no deployed release” 错误,其中大部分方法侧重于更改导致问题的失败部署的状态:
解决方案 1:更改部署状态
在 Helm 2 中,将发布状态更改为已部署可让你绕过该问题:
kubectl -n kube-system patch configmap [release name].[release version] --type=merge -p '{"metadata":{"labels":{"STATUS":"DEPLOYED"}}}'
其中:
[release name]
是你要更新的版本的名称。
[release version]
是你发布的当前版本。
注意: 请记住,上述解决方案仅用于绕过该问题。你仍然需要进行手动调整以添加缺少的资源。
由于 Helm 3 将部署历史存储为Kubernetes secrets。检查部署机密:
kubectl get secrets
找到与失败部署相关的secrets,然后使用以下命令更改部署状态:
kubectl patch secret [name-of-secret-related-to-deployment] --type=merge -p '{"metadata":{"labels":{"status":"deployed"}}}'
解决方案 2:清理失败的部署
如何修复helm has no deployed releases错误?删除当前版本并从头开始创建一个新版本可以解决此问题。要使用 Helm 2 执行此操作,请使用:
helm delete --purge [release name]
其中:
[release name]
是要删除的版本的名称。
从 Helm 3 开始,删除版本需要以下
uninstall
命令:
helm uninstall [release name]
1. 删除失败发布的另一种方法是首先检查你的部署状态:
helm list -a
2. 如果你的发布状态不是
deployed
,请检查部署机密:
kubectl get secrets
3. 描述secrets列表上的最后一项以检查其状态:
kubectl describe secret [secret name]
其中:
[secret name]
是你要检查的机密的名称。
4. 如果机密与失败的部署具有相同的状态,请使用以下命令将其删除:
kubectl delete secret [secret name]
5. 升级你的版本:
helm upgrade [release name]
解决方案 3:强制升级
如何修复helm has no deployed releases错误?解决此问题的另一种方法是使用以下命令强制升级:
helm upgrade [release name] --force
其中:
[release name]
是要升级的版本的名称。
在幕后,这与 执行类似的工作
helm delete --purge
,在安装新版本之前删除以前的版本。这可能会导致服务中断,使其不适用于某些版本。
结论
遵循本教程后,你应该知道helm has no deployed releases解决办法,并能够将你的发行版升级到新版本,而不会收到“
helm has no installed versions ”错误。