web-dev-qa-db-fra.com

Juju enlever les unités bloquées en train de mourir pour que je puisse recommencer?

J'ai des machines fonctionnant sur MaaS utilisant Juju. Le déploiement de certains d’entre eux a échoué car un hook n’a pas été exécuté à cause d’un paramètre (non valide) que j’ai défini dans la configuration. Dans l'interface utilisateur de Jju, j'ai essayé de les marquer comme résolus, puis d'essayer de les supprimer (et de les répéter au cours de quelques cycles passant au vert puis au rouge).

(Je pense que résoudre + supprimer fera en sorte que juju ne reste pas bloqué sur le fait que le crochet ne fonctionne pas et laisse juju juste se débarrasser de la machine.)

Maintenant, j'ai des unités qui semblent bloquées et disent

    agent-state: error
    agent-state-info: 'hook failed: "install"'
    agent-version: 1.16.0.1
    life: dying

en statut juju. J'ai essayé de détruire les unités et leurs machines. Y a-t-il un moyen d'abandonner ces unités et de recycler les machines allumées pour un autre essai?

J'ai également essayé de marquer les unités comme résolues sur la ligne de commande, mais je reçois des messages contradictoires. Je reçois ERROR cannot set resolved mode for unit "ceph-osd/1": already resolved lorsque j'essayais de le marquer comme résolu, mais le statut indique le même message d'erreur ci-dessus après celui-ci lorsque j'exécute juju status.

    agent-state: error
    agent-state-info: 'hook failed: "install"'
    life: dying

Mise à jour: Je reviens à peine après une heure ou deux et j'ai constaté que l'une des unités avec laquelle j'avais des problèmes est partie. Donc, attendre a fonctionné.

5
Azendale

Le seul moyen que j'ai trouvé de les tuer (rapidement) est de détruire l'environnement.

juju destroy-environment

Bien sûr, étant donné que la reconstruction de l’environnement à partir de rien pourrait être assez radicale, je suggérerais d’attendre un moment avant de le faire. Parfois, cela prend juste un certain temps pour que tous les crochets finissent d’exécuter et, espérons-le, que le service ne soit plus bloqué dans un état moribond. Notez que pour libérer réellement la machine, après avoir détruit l'unité (juju destroy-unit), vous devez exécuter le juju destroy-machine (avec le numéro de la machine) pour le libérer. Notez que juju destroy-machine ne mettra pas fin à une machine qui agit actuellement en tant qu'unité. Par conséquent, il ne libérera pas une unité si elle est en train de mourir.

Je suppose que vous commenciez à créer votre environnement. Il serait utile de consulter les fichiers journaux des machines (je les vérifie aussi, mais pas pour savoir pourquoi elles ne meurent pas, mais pourquoi elles ne sont pas terminées).

1
Braiam

J'ai eu le même problème, voici la solution:

1) Redémarrez Node dans MAAS
2) Les icônes vont passer à l'état d'erreur
3) juju résolu "votre unité"
4) juju destroy-service "votre service"
Cela a fonctionné pour moi!

3
Rastin

Sauvegardez la base de données Juju avant de déployer un service. Si les choses tournent mal et que vous ne pouvez pas y remédier, restaurez simplement Juju à partir de la base de données de sauvegarde.

1
wenjianhn