我尝试在运行
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
这个解决方案对我有用:
kubectl get secrets
kubectl delete secret sh.helm.release.v1.<RELEASE_NAME>.v<LATEST_REVISION>
遵循此问题
中描述的解决方案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>
万一对某人有用,并且响应explicitsoul的评论,对我来说修复它的是:
helm delete <release> -n <namespace>
这删除了挂起的安装(在我的例子中,是第一个安装,因此我没有可以回滚到的先前版本),然后我能够再次运行安装。
在我的例子中导致进程卡住的原因是 CTRL-C 取消了安装命令,所以不要这样做。
这对我有用
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
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
我也面临同样的情况。我用的是头盔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 等)将在那里,因此新安装将尝试合并内容。对我来说没问题,但请注意 -> 这是一个黑客:)
为了回滚到以前的版本您只需传递版本名称即可:
helm rollback <RELEASE_NAME>
运行
RELEASE_NAME
-> 在 helm list --all
列下可以看到 NAME
。
(*) 如果终端上下文未设置为命名空间,请添加
--namespace <namespace>
。
这些是对我有用的步骤:
查看部署的状态(我的一直处于待处理状态)
helm list --all
回滚到以前的版本,对我来说已经在这里工作了,下一步可选
helm rollback <NAMESPACE_NAME> <Previous Version> --namespace <NAMESPACE_NAME>
如果您想要新的/另一个部署
helm upgrade . . .
kubectl 获取秘密
kubectl 删除秘密 sh.helm.release.v1.
通过使用上述命令,它将在 Helm 升级过程中删除现有的 Secret,该升级将运行并删除卡住的 Helm 升级,并生成新的 Secret 以继续新的升级。