Comment utiliser la commande docker node rm pour supprimer des nœuds d'un 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, vous apprendrez à gérer les nœuds (nodes) au sein d'un Docker Swarm en utilisant la commande docker node rm. Vous commencerez par lister les nœuds existants dans un swarm pour les identifier. Ensuite, vous tenterez de supprimer un nœud en cours d'exécution pour comprendre le comportement par défaut et les limitations de la commande.

Après cela, vous explorerez comment supprimer avec succès un nœud arrêté du swarm. Enfin, vous apprendrez à supprimer de force un nœud inaccessible, ce qui est crucial pour gérer les scénarios où un nœud n'est plus joignable. Cette expérience pratique vous fournira des connaissances pratiques pour maintenir votre cluster Docker Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") subgraph Lab Skills docker/ls -.-> lab-555185{{"Comment utiliser la commande docker node rm pour supprimer des nœuds d'un swarm"}} docker/ps -.-> lab-555185{{"Comment utiliser la commande docker node rm pour supprimer des nœuds d'un swarm"}} docker/rm -.-> lab-555185{{"Comment utiliser la commande docker node rm pour supprimer des nœuds d'un swarm"}} end

Lister les nœuds existants dans le swarm

Dans cette étape, vous apprendrez à lister les nœuds (nodes) qui font actuellement partie d'un Docker Swarm. Avant de lister les nœuds, nous devons initialiser un Docker Swarm.

Tout d'abord, initialisez un nouveau swarm sur la machine actuelle. Cette machine deviendra le nœud manager.

docker swarm init

Vous devriez voir un message indiquant que le swarm a été initialisé et fournissant une commande pour rejoindre d'autres nœuds en tant que workers.

Maintenant que le swarm est initialisé, vous pouvez lister les nœuds du swarm en utilisant la commande docker node ls.

docker node ls

Cette commande affichera un tableau montrant les nœuds du swarm. Au départ, vous ne verrez que le nœud manager que vous venez d'initialiser. La sortie inclura des informations telles que l'ID du nœud, le nom d'hôte, le statut, la disponibilité, le statut du manager et la version du moteur.

Par exemple, la sortie pourrait ressembler à ceci :

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
<node_id> *                   <hostname>          Ready     Active         Leader           20.10.21

Le * à côté de l'ID indique le nœud actuel sur lequel vous vous trouvez. La colonne MANAGER STATUS montre le rôle du nœud dans le swarm (par exemple, Leader, Reachable, Unavailable).

Tenter de supprimer un nœud en cours d'exécution du swarm

Dans cette étape, vous allez tenter de supprimer un nœud (node) qui est actuellement en cours d'exécution et fait partie du swarm. Cela démontrera que vous ne pouvez pas simplement supprimer un nœud en cours d'exécution sans le mettre hors service au préalable.

Tout d'abord, listons à nouveau les nœuds pour confirmer l'ID du nœud en cours d'exécution.

docker node ls

Identifiez l'ID du nœud que vous voulez tenter de supprimer. Dans ce cas, ce sera le seul nœud répertorié, qui est le nœud manager.

Maintenant, essayez de supprimer le nœud en utilisant la commande docker node rm suivie de l'ID du nœud. Remplacez <node_id> par l'ID réel que vous avez trouvé à l'étape précédente.

docker node rm <node_id>

Vous verrez probablement un message d'erreur indiquant que le nœud est un manager et ne peut pas être supprimé de cette manière, ou que le nœud est toujours actif. C'est un comportement attendu. Docker Swarm vous empêche de supprimer directement un nœud en cours d'exécution pour éviter de perturber les services.

Le message d'erreur pourrait ressembler à ceci :

Error response from daemon: node <node_id> is a swarm manager and cannot be removed without --force

Cela confirme que vous ne pouvez pas supprimer un nœud manager en cours d'exécution sans utiliser le drapeau --force, que nous explorerons dans une étape ultérieure. Pour les nœuds workers, vous devriez généralement vider le nœud (drain) avant de le supprimer.

Supprimer un nœud arrêté du swarm

Dans cette étape, vous apprendrez à supprimer d'un swarm un nœud (node) qui n'est plus en cours d'exécution ou accessible. Étant donné que nous n'avons qu'un seul nœud (le manager) dans notre swarm actuel, nous allons d'abord simuler un scénario où un nœud est arrêté en quittant le swarm sur le nœud actuel.

Tout d'abord, quittez le swarm sur le nœud actuel. Cela fera cesser la participation du démon Docker au swarm.

docker swarm leave

Vous serez invité à confirmer que vous souhaitez quitter le swarm. Tapez y puis appuyez sur Entrée.

Node left the swarm.

Maintenant, si vous étiez sur un autre nœud manager du même swarm, vous pourriez supprimer le nœud qui vient de quitter. Étant donné que nous sommes sur le seul nœud, nous allons réinitialiser le swarm pour simuler le fait d'être sur un autre manager.

docker swarm init

Vous verrez le message indiquant que le swarm est réinitialisé.

Maintenant, listons les nœuds du swarm. Vous ne verrez que le nœud actuel répertorié.

docker node ls

Pour démontrer la suppression d'un nœud arrêté, nous devons simuler la présence d'un autre nœud qui a quitté le swarm. Étant donné que nous ne pouvons pas ajouter un autre nœud dans cet environnement, nous passerons à l'étape suivante qui concerne la suppression forcée d'un nœud inaccessible, ce qui est un scénario plus courant pour supprimer des nœuds qui ne participent plus au swarm.

Supprimer de force un nœud inaccessible du swarm

Dans cette étape, vous apprendrez à supprimer de force d'un swarm un nœud (node) inaccessible ou non réactif. Cela est nécessaire lorsqu'un nœud a échoué et ne peut pas être supprimé de manière gracieuse.

Tout d'abord, listons à nouveau les nœuds du swarm pour obtenir l'ID du nœud.

docker node ls

Identifiez l'ID du nœud que vous voulez supprimer de force. Dans notre configuration actuelle, il s'agit du seul nœud, qui est le manager.

Pour supprimer de force un nœud, vous utilisez la commande docker node rm avec le drapeau --force, suivi de l'ID du nœud. Remplacez <node_id> par l'ID réel.

docker node rm --force <node_id>

Vous devriez voir un message indiquant que le nœud a été supprimé.

Node <node_id> removed from swarm

Maintenant, listez à nouveau les nœuds du swarm pour confirmer que le nœud a été supprimé.

docker node ls

Vous verrez un message d'erreur car vous avez supprimé le seul nœud (le manager) du swarm, et le démon Docker actuel ne fait plus partie d'un swarm.

Error: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to a swarm.

Cela confirme que le nœud a été supprimé avec succès du swarm, même s'il s'agissait du nœud manager. La suppression de force d'un nœud manager doit être effectuée avec prudence car cela peut avoir un impact sur la disponibilité de votre swarm s'il n'y a pas d'autres managers.

Résumé

Dans ce laboratoire (lab), vous avez appris à gérer les nœuds (nodes) au sein d'un Docker Swarm en utilisant la commande docker node rm. Vous avez commencé par initialiser un swarm et lister les nœuds existants à l'aide de docker node ls pour identifier leurs IDs et leurs états.

Ensuite, vous avez tenté de supprimer un nœud en cours d'exécution, démontrant qu'un nœud doit être mis hors service avant de pouvoir être supprimé. Vous avez ensuite réussi à supprimer un nœud arrêté et avez appris à supprimer de force un nœud inaccessible du swarm, couvrant différents scénarios de suppression de nœuds.