Docker node

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Sous-commande Swarm — gestion des nœuds
Portée À exécuter sur un manager
Usage principal Étiquetage (labels) et contraintes de placement
Voir aussi Docker swarm · Docker service

docker node regroupe les sous-commandes de gestion des nœuds d'un cluster Swarm. Son usage le plus courant est l'attribution d'étiquettes (labels) aux nœuds, qui servent ensuite à contraindre ou orienter le placement des tâches d'un service — par exemple pour répartir des répliques entre zones de disponibilité.

Lister les nœuds

docker node ls

Étiquettage des nœuds

Ajouter un label à un nœud :

docker node update --label-add availability_zone=east <NOM_NOEUD>
docker node update --label-add availability_zone=west <NOM_NOEUD>

Consulter les labels d'un nœud :

docker node inspect --pretty <NOM_NOEUD>

Utiliser les labels pour le placement

Les labels de nœuds n'ont d'effet que combinés à des règles de placement lors de la création d'un service.

Contrainte — le service ne se déploie que sur les nœuds correspondant (ou ne correspondant pas) au label :

docker service create --name nginx-east \
  --constraint node.labels.availability_zone==east \
  --replicas 3 nginx
docker service ps nginx-east

docker service create --name nginx-west \
  --constraint node.labels.availability_zone!=east \
  --replicas 3 nginx
docker service ps nginx-west

Préférence de répartition — plutôt qu'une contrainte stricte, on peut demander à Swarm de répartir les répliques aussi uniformément que possible entre les valeurs d'un label :

docker service create --name nginx-spread \
  --placement-pref spread=node.labels.availability_zone \
  --replicas 3 nginx
docker service ps nginx-spread

Ce mécanisme est notamment utilisé pour garantir qu'un service répliqué ne se retrouve pas concentré sur une seule zone de disponibilité (voir la section « Haute disponibilité » de Docker swarm).

Voir aussi