68
votes

Kubernetes Helm coincé avec une mise à jour en cours

J'ai essayé d'exécuter une mise à niveau du casque avant d'exécuter Helm Repo Update et maintenant il semble être coincé en permanence dans "Status: En attente de mise à niveau" et je ne me laisserai pas essayer d'exécuter la mise à niveau .

Essayer de courir: HELM APPLICATION - NAMESPACE CODER --Install --Force --atomic --Wait --version 1.13.2 --values ​​./coder.yaml coder / codeur

Sorties: Erreur: la mise à niveau a échoué: une autre opération (installation / mise à niveau / rollback) est en cours


0 commentaires

8 Réponses :


4
votes

Je suis confronté à la même chose. J'ai utilisé Helm 3.4.1 ... Cela se produit lorsque le déploiement est en attente et que vous utilisez - atomique (ce qui, dans Helm3, implique également --wait).

Je n'ai pas pu obtenir de mise à niveau. Le pire, c'est que même Helm -N Code List n'a rien affiché, donc je ne pouvais pas faire:

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

car Helm3 détient ces informations dans les secrets, Nettoyez simplement le (s) secret (s) respectif et installez (ou mise à niveau - installer, mais sans - atomique). Dans votre cas, quelque chose comme

helm -n code code 

(où le dernier v1 est le numéro de version, alors peut-être répertorier et supprimer tout si vous êtes d'accord avec ça).

et Afterwars Helm Install.

Remarque: Les anciens objets (pods, etc.) seront là, donc la nouvelle installation essaiera de fusionner les choses. Ça s'est bien passé pour moi, mais note -> c'est un hack :)

plus sur: https://github.com/helm/helm/issues/5595


0 commentaires

67
votes

TLDR: Vous devez d'abord faire reculer vers une autre version, puis HELM Metred Again:

rollback de la barre --Namespace


Cela peut se produire pour plusieurs raisons, mais cela se produit finalement lorsqu'il y a une interruption pendant le processus de mise à niveau / d'installation. Généralement, vous sigkill ( ctrl c ) pendant que le déploiement est en cours.

Vous remarquerez que si vous Helm ls --Namespace Bien qu'il soit bloqué dans Status: En attente de mise à niveau , vous verrez ce qui suit sans aucune autre information:

NAME    NAMESPACE   REVISION    UPDATED STATUS  CHART   APP VERSION


3 commentaires

Mais que faites-vous si c'est la première révision? Il n'y a rien à revenir.


J'ai également eu ce problème mais en utilisant un flux, et cette solution a également fonctionné pour cela


Pour obtenir la liste d'application Stuck par Helm Utilisez Helm LS --Namespace -all



22
votes

En cas de cas, est utile à quelqu'un, et en réponse au commentaire d'ExplicitSoul, ce qui me l'a corrigé était juste:

helm delete <release> -n <namespace>

qui a supprimé l'installation en attente (dans mon cas, le premier SO Je n'avais pas une version précédente pour revenir), puis j'ai pu exécuter l'installation.

Ce qui a provoqué le processus bloqué dans mon cas était un Ctrl-C annulant la commande d'installation, alors Don ' T fais ça.


0 commentaires

74
votes

Cette solution a fonctionné pour moi:

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


5 commentaires

Cette réponse explique pourquoi, mais celle-ci a résolu mon problème. J'ai annulé un pipeline exécuté au milieu d'une commande mise à niveau et il n'y avait pas de version enregistrée dans Helm à faire rollback ou uninstall . La suppression du secret de la libération de la barre était le seul moyen de passer à autre chose. +1


Cela a également fonctionné pour moi.


Excellente solution!


Juste pour ajouter - j'ai dû ajouter --Namespace aux deux commandes kubectl pour les faire fonctionner pour mon déploiement (sinon il suppose l'espace de noms par défaut)


Cela a également fonctionné pour moi, dans les étiquettes secrètes, vous devriez voir "Statut: en attente"



21
votes

voici ce qui a fonctionné pour moi

  • Liste des casques - tout Cela répertorie toutes les versions avec leur statut
  • 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     
    
    1. Notez que Rel2 a le statut en attente de mise à jour. C'est arrivé parce que je a fait un ctrl + c alors que la mise à niveau était en cours
    2. Tout ce que j'avais à faire était de retourner à la révision précédente dans ce cas 28 HELM ROLLBACK REL2 28 - Namespace Default
    3. 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      
      


    0 commentaires

    1
    votes

    kubectl obtenez des secrets Kubectl Delete Secret Sh.helm.release.v1. .v

    En utilisant la commande ci-dessus, il supprimera les secrets existants au milieu de la mise à niveau du casque qui s'exécutera et supprimera la mise à niveau de la barre bloquée et il générera le nouveau pour procéder à la nouvelle mise à niveau.


    0 commentaires

    2
    votes

    Ce sont les étapes qui ont fonctionné pour moi:

  • Voir l'état de votre déploiement (ma était en attente tout le temps)

    Liste de barre - all

  • Rollback à la version précédente, pour moi fonctionnait déjà ici, la prochaine étape facultative

    Helm Rollback --namespace

  • au cas où vous souhaitez de nouveau / un autre déploiement

    mise à niveau de la barre. . .


  • 1 commentaires

    Ne devrait-il pas être HELM Rollback ... au lieu de ?



    1
    votes

    Afin de revenir à la version précédente , vous pouvez simplement passer le nom de version :

    helm rollback <RELEASE_NAME>
    

    release_name peut être vu lorsque vous Exécuter Helm List --tl -> Sous la colonne nom .

    (*) Add - namespace code > Si le contexte du terminal n'est pas défini sur l'espace de noms.


    0 commentaires