Comment utiliser la commande docker node demote pour rétrograder un gestionnaire de Swarm

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), nous allons explorer comment gérer les rôles des nœuds (nodes) au sein d'un Docker Swarm. Plus précisément, nous allons nous concentrer sur l'utilisation de la commande docker node demote pour changer le rôle d'un nœud manager en celui d'un worker.

Le laboratoire vous guidera tout au long du processus d'initialisation d'un Docker Swarm, d'identification des nœuds manager actuels, d'exécution de la commande de déclassement (demotion), et enfin de vérification du nouveau rôle du nœud pour confirmer le déclassement réussi. Cette expérience pratique vous fournira des connaissances concrètes sur la gestion des nœuds Docker Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/ls -.-> lab-555180{{"Comment utiliser la commande docker node demote pour rétrograder un gestionnaire de Swarm"}} docker/ps -.-> lab-555180{{"Comment utiliser la commande docker node demote pour rétrograder un gestionnaire de Swarm"}} docker/exec -.-> lab-555180{{"Comment utiliser la commande docker node demote pour rétrograder un gestionnaire de Swarm"}} docker/version -.-> lab-555180{{"Comment utiliser la commande docker node demote pour rétrograder un gestionnaire de Swarm"}} end

Initialiser un Docker Swarm

Dans cette étape, nous allons initialiser un Docker Swarm. Un Docker Swarm est un groupe de machines exécutant Docker et réunies en un cluster. Après avoir rejoint un Swarm, vous pouvez continuer à exécuter les commandes Docker auxquelles vous êtes habitué, mais elles sont désormais exécutées par un gestionnaire (manager) de Swarm. Les machines dans un Swarm peuvent être des gestionnaires (managers) ou des travailleurs (workers). Les gestionnaires gèrent les tâches de gestion du cluster, tandis que les travailleurs exécutent les services.

Avant d'initialiser le Swarm, vérifions la version actuelle de Docker.

docker version

Vous devriez voir une sortie similaire à celle-ci, indiquant la version de Docker installée sur la machine virtuelle (VM) LabEx :

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.16.20
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:18 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.20
  Git commit:       363bd3c
  Built:            Tue Oct 25 17:59:50 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b4bd5d2b3d85c5e9b15588d67616e19a2a3a495d
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Maintenant, initialisons le Docker Swarm sur cette machine. Comme il s'agit du premier nœud (node) du Swarm, il deviendra automatiquement un nœud gestionnaire (manager). Nous allons utiliser la commande docker swarm init.

docker swarm init

Vous devriez voir une sortie indiquant que le Swarm a été initialisé et fournissant une commande pour rejoindre d'autres nœuds en tant que travailleurs (workers). La sortie ressemblera à ceci :

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

La sortie confirme que le Swarm est initialisé et que le nœud actuel est un gestionnaire (manager). Les xxxxxxxxxxxx seront remplacés par l'identifiant réel du nœud.

Lister les nœuds (nodes) du Swarm pour identifier les gestionnaires (managers)

Dans cette étape, nous allons lister les nœuds (nodes) du Docker Swarm pour identifier quels nœuds sont des gestionnaires (managers) et quels sont des travailleurs (workers). Étant donné que nous venons d'initialiser le Swarm avec un seul nœud, nous nous attendons à ne voir qu'un seul nœud dans la liste, et son rôle devrait être "Manager".

Pour lister les nœuds du Swarm, nous utilisons la commande docker node ls.

docker node ls

Vous devriez voir une sortie similaire à celle-ci :

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx *                labex-vm            Ready     Active         Leader           20.10.21

Décortiquons la sortie :

  • ID : L'identifiant unique du nœud. L'astérisque (*) à côté de l'ID indique le nœud actuel sur lequel vous exécutez la commande.
  • HOSTNAME : Le nom d'hôte du nœud. Dans ce cas, c'est labex-vm.
  • STATUS : Le statut du nœud. Ready signifie que le nœud est en bonne santé et prêt à accepter des tâches.
  • AVAILABILITY : Indique si le nœud est disponible pour planifier des tâches. Active signifie qu'il est disponible.
  • MANAGER STATUS : Montre le rôle du nœud dans le Swarm. Leader indique que ce nœud est le gestionnaire principal (primary manager) dans le Swarm. S'il y avait d'autres gestionnaires, ils afficheraient Reachable. Les nœuds travailleurs (worker nodes) auraient ce champ vide.
  • ENGINE VERSION : La version du moteur Docker (Docker Engine) exécutée sur le nœud.

Comme prévu, nous voyons notre seul nœud dans la liste, et son MANAGER STATUS est Leader, confirmant qu'il s'agit d'un nœud gestionnaire (manager node).

Rétrograder un nœud gestionnaire (manager node)

Dans cette étape, nous allons rétrograder le nœud gestionnaire (manager node) actuel en nœud travailleur (worker node). Rétrograder un nœud gestionnaire signifie changer son rôle de gestion du Swarm à l'exécution simple de tâches en tant que travailleur. Cela est utile dans les scénarios où vous avez besoin de réduire le nombre de gestionnaires ou de changer le rôle d'un nœud spécifique.

Pour rétrograder un nœud gestionnaire, nous utilisons la commande docker node demote suivie de l'identifiant du nœud (node ID) ou du nom d'hôte (hostname). À partir de l'étape précédente, nous savons que le nom d'hôte est labex-vm.

docker node demote labex-vm

Vous devriez voir une sortie confirmant la rétrogradation :

Node labex-vm was demoted from a manager to a worker.

Cette sortie indique que le nœud labex-vm a été rétrogradé avec succès d'un rôle de gestionnaire à un rôle de travailleur au sein du Swarm.

Vérifier le rôle du nœud après la rétrogradation

Dans cette étape finale, nous allons vérifier que le rôle du nœud a été modifié avec succès de gestionnaire (manager) à travailleur (worker) après l'opération de rétrogradation. Nous allons de nouveau utiliser la commande docker node ls pour lister les nœuds (nodes) du Swarm et vérifier la colonne MANAGER STATUS pour notre nœud.

docker node ls

Après avoir exécuté la commande, vous devriez voir une sortie similaire à celle-ci :

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx                  labex-vm            Ready     Active                          20.10.21

Notez que la colonne MANAGER STATUS pour le nœud labex-vm est maintenant vide. Cela indique que le nœud n'est plus un gestionnaire et agit maintenant comme un nœud travailleur (worker node) dans le Swarm. L'astérisque (*) est toujours à côté de l'identifiant car c'est le nœud sur lequel vous exécutez la commande, mais son rôle a changé.

Cela confirme que la rétrogradation a été un succès.

Résumé

Dans ce laboratoire (lab), nous avons appris à gérer les nœuds (nodes) Docker Swarm en initialisant un Swarm et en identifiant les nœuds gestionnaires (manager nodes). Nous avons ensuite pratiqué l'utilisation de la commande docker node demote pour changer le rôle d'un nœud gestionnaire en nœud travailleur (worker node). Enfin, nous avons vérifié la réussite de la rétrogradation en listant les nœuds du Swarm et en observant le rôle mis à jour.