如何修复helm has no deployed releases错误?解决办法

2021年11月20日16:45:09 发表评论 2,570 次浏览

介绍

在 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 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 has no deployed releases错误?解决办法
从 Helm 3 开始,删除版本需要以下uninstall命令:
helm uninstall [release name]
如何修复helm has no deployed releases错误?解决办法
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 ”错误。
木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: