簡體   English   中英

Kubernetes Helm 卡住了正在進行的更新

[英]Kubernetes Helm stuck with an update in progress

我嘗試在運行helm repo update之前運行 Helm 升級,現在它似乎永久卡在“STATUS:pending-upgrade”中,並且不會讓我再次嘗試運行升級。

嘗試運行: 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

TLDR:您需要先回滾到另一個版本,然后再次進行helm upgrade

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


發生這種情況可能有幾個原因,但最終會在升級/安裝過程中出現中斷時發生。 通常,您在部署進行時SIGKILL ( Ctrl C )。

您會注意到,如果您helm ls --namespace <namespace>而它卡在STATUS: pending-upgrade state 中,您將看到以下內容而沒有任何其他信息:

NAME    NAMESPACE   REVISION    UPDATED STATUS  CHART   APP VERSION

目前最好的解決方法是回滾到另一個版本,然后再次helm upgrade

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

revision是可選的,但您應該嘗試提供它。

更多資源:

這個解決方案對我有用:

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

遵循此問題中描述的解決方案

萬一對某人有用,並且響應explicitsoul的評論,對我來說固定它的只是:

helm delete <release> -n <namespace>

這刪除了掛起的安裝(在我的情況下,第一個,所以我沒有回滾到以前的版本),然后我能夠再次運行安裝。

在我的情況下導致卡住的過程是 CTRL-C 取消安裝命令,所以不要這樣做。

我也面臨同樣的情況。 我使用了 helm 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 等)將在那里,因此新安裝將嘗試合並事物。 對我來說一切正常,但請注意 -> 這是一個 HACK :)

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

這對我有用

  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     

kubectl 獲取秘密 kubectl 刪除秘密 sh.helm.release.v1.<RELEASE_NAME>.v<LATEST_REVISION>

通過使用上述命令,它將在 helm upgrade 運行過程中刪除現有的秘密,並刪除卡住的 helm upgrade 並生成新的秘密以繼續進行新的升級。

這些是對我有用的步驟:

  1. 查看您的部署狀態(我一直處於掛起狀態)

    helm list --all

  2. 回滾到以前的版本,對我來說已經在這里工作了,下一步可選

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

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

    helm upgrade. . .

為了回滾到以前的版本,您只需傳遞版本名稱

helm rollback <RELEASE_NAME>

當您在NAME列下運行helm list --all -> 時,可以看到RELEASE_NAME

(*) 如果終端上下文未設置為命名空間,則添加--namespace <namespace>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM