web-dev-qa-db-fra.com

Comment résoudre ce problème «aucun nœud approprié (contraintes de planification non satisfaites sur 1 nœud)» dans l'essaim de dockers lors du déploiement du registre?

J'ai un essaim de docker dans une machine virtuelle avec 2 core 4 Go de RAM Centos.

Dans l'essaim lorsque je déploie le registre privé Docker (registre 2.6.4), il affiche l'état du service comme en attente pour toujours. J'ai utilisé docker service ps <<registry_name>>

Et quand j'inspecte en utilisant docker inspect <<task_id>> dans le message, j'ai obtenu ceci "pas de nœud approprié (contraintes de planification non satisfaites sur 1 nœud)".

J'ai essayé le redémarrage et le redéploiement du service.

Comment régler ceci?

10
Arul Ranjith

Je rencontre souvent ce problème lorsqu'il y a une incompatibilité entre les étiquettes de noeud définies dans le fichier de composition et celles définies dans le noeud réel, soit parce que j'ai défini une mauvaise étiquette (par exemple une faute de frappe), soit simplement oublié d'étiqueter les noeuds.

Pour étiqueter les nœuds:

1) Pour chaque nœud cible, procédez comme suit:

docker-machine ssh <manager_node_name> 'docker node update --label-add <label_name>=<label_value> <target_node_name>'

2) Assurez-vous qu'ils correspondent à ceux définis dans le fichier de composition.

3) Redémarrez le service Docker dans le nœud du gestionnaire

par exemple:

composer un fichier:

 dummycontainer:
    image: group/dummyimage
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.labels.dummy_label == dummy]
      restart_policy:
        condition: on-failure

en supposant que je souhaite déployer cette réplique dans un nœud appelé dummy_node :

docker-machine ssh manager_node 'docker node update --label-add dummy_label=dummy dummy_node'

et redémarrez docker dans le nœud du gestionnaire.

Enfin, si vous déployez, vous devez vous attendre à ce que dummycontainer s'exécute dans dummy_node, en supposant que l'étiquette a été correctement définie dans les deux étapes. Sinon, il est prévisible de voir l'erreur que vous obtenez.

Meilleures salutations

7
João Matos