Kubernetes Helm 陷入正在进行的更新

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

我尝试在运行

helm repo update
之前运行 Helm 升级,但现在它似乎永久陷入“状态:待升级”状态,并且不允许我再次尝试运行升级。

尝试运行:

helm upgrade --namespace coder --install --force --atomic --wait --version 1.13.2 --values ./coder.yaml coder coder/coder

输出:

Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress

kubernetes kubernetes-helm
8个回答
111
投票

这个解决方案对我有用:

kubectl get secrets
kubectl delete secret sh.helm.release.v1.<RELEASE_NAME>.v<LATEST_REVISION>

遵循此问题

中描述的解决方案

100
投票

TLDR:您需要先回滚到另一个版本,然后再次

helm upgrade

helm rollback <release> <revision> --namespace <namespace>


发生这种情况的原因有多种,但最终会在升级/安装过程中出现中断时发生。通常,您会在部署过程中

SIGKILL
(
Ctrl C
)。

您会注意到,如果您

helm ls --namespace <namespace>
当它陷入
STATUS: pending-upgrade
状态时,您将看到以下内容,而没有任何其他信息:

NAME    NAMESPACE   REVISION    UPDATED STATUS  CHART   APP VERSION

目前最好的解决方法是回滚到另一个版本,然后再次

helm upgrade

helm rollback <release> <revision> --namespace <namespace>

revision
是可选的,但您应该尝试提供它。

更多资源:


编辑

如果这是您的第一次修订,请使用:

helm delete <release> -n <namespace>

31
投票

万一对某人有用,并且响应explicitsoul的评论,对我来说修复它的是:

helm delete <release> -n <namespace>

这删除了挂起的安装(在我的例子中,是第一个安装,因此我没有可以回滚到的先前版本),然后我能够再次运行安装。

在我的例子中导致进程卡住的原因是 CTRL-C 取消了安装命令,所以不要这样做。


26
投票

这对我有用

  1. helm list --all
    这将列出所有版本及其状态
NAME  NAMESPACE       REVISION        UPDATED                                 STATUS               CHART                   APP VERSION
rel1  default         1               2021-06-04 14:15:37.652066 +0530 IST    deployed             rel1-3.32.0             0.46.0     
rel2  default         29              2021-06-18 11:02:38.779801 +0530 IST    pending-upgrade      rel2-0.0.1                     
rel3  default         3               2021-06-17 11:27:14.608042 +0530 IST    deployed             rel3-0.0.1      
  1. 请注意 rel2 的状态为待更新。发生这件事是因为我 升级过程中按下 Ctrl+C
  2. 在本例中我所要做的就是回滚到之前的修订版 28
    helm rollback rel2 28 --namespace default
NAME   NAMESPACE       REVISION        UPDATED                                 STATUS          CHART          APP VERSION
rel1   default         1               2021-06-04 14:15:37.652066 +0530 IST    deployed        rel1-3.32.0    0.46.0     
rel2   default         30              2021-06-18 11:26:07.555547 +0530 IST    deployed        rel2-0.0.1                     
rel3   default         3               2021-06-17 11:27:14.608042 +0530 IST    deployed        rel3-0.0.1     

5
投票

我也面临同样的情况。我用的是头盔3.4.1... 当部署处于挂起状态并且您使用 --atomic (在 helm3 中也意味着 --wait)时,就会发生这种情况。

我无法进行升级。最糟糕的是连

helm -n code list
都没有显示任何东西,所以我无法做到:

helm -n code code 

由于 helm3 将此类信息保存在机密中,因此只需清理相应的机密并进行安装(或升级 --install ,但不带 --atomic)。 在你的情况下类似

helm delete --namespace code secret sh.helm.release.v1.code.v1

(其中最后一个 v1 是版本号,因此如果您同意的话,可以列出并删除所有内容)。

战后安装头盔。

注意:旧对象(pod 等)将在那里,因此新安装将尝试合并内容。对我来说没问题,但请注意 -> 这是一个黑客:)

更多信息:https://github.com/helm/helm/issues/5595


4
投票

为了回滚到以前的版本您只需传递版本名称即可:

helm rollback <RELEASE_NAME>

运行

RELEASE_NAME
-> 在
helm list --all
列下可以看到
NAME

(*) 如果终端上下文未设置为命名空间,请添加

--namespace <namespace>


3
投票

这些是对我有用的步骤:

  1. 查看部署的状态(我的一直处于待处理状态)

    helm list --all

  2. 回滚到以前的版本,对我来说已经在这里工作了,下一步可选

    helm rollback <NAMESPACE_NAME> <Previous Version> --namespace <NAMESPACE_NAME>

  3. 如果您想要新的/另一个部署

    helm upgrade . . .


1
投票

kubectl 获取秘密 kubectl 删除秘密 sh.helm.release.v1..v

通过使用上述命令,它将在 Helm 升级过程中删除现有的 Secret,该升级将运行并删除卡住的 Helm 升级,并生成新的 Secret 以继续新的升级。

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