Comment exécuter des commandes d'administration sur un nœud non-leader dans Docker Swarm

DockerBeginner
Pratiquer maintenant

Introduction

Docker Swarm est un puissant outil d'orchestration qui vous permet de gérer un cluster d'hôtes Docker comme un seul système. Dans un Swarm, un nœud est désigné comme leader, responsable de la gestion de l'état du cluster et de la prise de décisions. Cependant, il peut y avoir des moments où vous avez besoin d'exécuter des commandes administratives sur des nœuds non-leaders. Ce tutoriel vous guidera à travers le processus d'identification du nœud leader et d'exécution de commandes d'administration sur des nœuds non-leaders dans un Docker Swarm.

Comprendre l'architecture de Docker Swarm

Docker Swarm est un outil d'orchestration de conteneurs qui vous permet de gérer un cluster d'hôtes Docker, appelé « swarm ». Dans un Docker Swarm, vous avez deux types de nœuds : les nœuds managers et les nœuds workers.

Nœuds Managers

Les nœuds managers sont responsables de la gestion globale du swarm. Ils s'occupent de tâches telles que :

  • Le planning et le déploiement des conteneurs
  • Le maintien de l'état souhaité du swarm
  • La fourniture d'une API pour interagir avec le swarm

Les nœuds managers peuvent également exécuter des conteneurs, mais leur rôle principal est de gérer le swarm.

Nœuds Workers

Les nœuds workers sont responsables de l'exécution des conteneurs réels. Ils reçoivent des instructions des nœuds managers et les exécutent. Les nœuds workers peuvent être ajoutés ou retirés du swarm selon les besoins pour mettre à l'échelle le cluster.

graph LR
    subgraph Docker Swarm
        Manager[Nœud Manager] --- Worker[Nœud Worker]
        Manager --- Worker
    end

L'architecture de Docker Swarm assure la haute disponibilité et la tolérance aux pannes en permettant à plusieurs nœuds managers de faire partie du swarm. De cette façon, si un nœud manager échoue, le swarm peut continuer à fonctionner avec les nœuds managers restants.

Identification du Nœud Leader dans Docker Swarm

Dans un Docker Swarm, l'un des nœuds managers est élu leader. Le nœud leader est responsable de la prise de toutes les décisions critiques et de la coordination des actions des autres nœuds managers.

Vérification du Nœud Leader

Pour identifier le nœud leader dans votre Docker Swarm, vous pouvez utiliser la commande suivante :

docker node ls

Cette commande affichera tous les nœuds du swarm, et le nœud leader sera marqué par un symbole *.

Alternativement, vous pouvez utiliser la commande docker node inspect pour obtenir des informations plus détaillées sur un nœud spécifique :

docker node inspect < node-id > --pretty

Cela affichera le rôle, le statut et d'autres informations pertinentes du nœud, y compris s'il s'agit du nœud leader.

Compréhension de l'élection du Leader

Docker Swarm utilise l'algorithme de consensus Raft pour élire un leader parmi les nœuds managers. Le leader est responsable de la prise de décisions et de la coordination des actions des autres nœuds managers.

Si le nœud leader actuel échoue ou devient indisponible, un nouveau leader sera automatiquement élu parmi les nœuds managers restants. Cela garantit que le swarm peut continuer à fonctionner même si un nœud manager échoue.

graph LR
    subgraph Docker Swarm
        Manager1[Nœud Manager 1] --- Manager2[Nœud Manager 2]
        Manager1 --- Manager3[Nœud Manager 3]
        Manager2 --- Manager3
        Manager1 -- Leader --> Manager2
        Manager2 -- Follower --> Manager3
    end

Exécution de commandes d'administration sur des nœuds non-leaders

Dans un Docker Swarm, le nœud leader est responsable de la prise de toutes les décisions critiques et de la coordination des actions des autres nœuds managers. Cependant, il peut y avoir des situations où vous devez exécuter des commandes d'administration sur les nœuds non-leaders, par exemple pour le dépannage ou la maintenance.

Accès aux nœuds non-leaders

Pour accéder à un nœud non-leader dans votre Docker Swarm, vous pouvez utiliser la commande docker node ssh. Cette commande vous permet d'établir une connexion SSH vers un nœud spécifique du swarm.

docker node ssh <node-id>

Remplacez <node-id> par l'ID du nœud non-leader auquel vous souhaitez accéder.

Exécution de commandes d'administration

Une fois que vous avez établi une connexion SSH au nœud non-leader, vous pouvez exécuter les commandes d'administration nécessaires. Voici quelques commandes d'administration courantes que vous pourriez vouloir exécuter :

  • Vérification du statut et du rôle du nœud :
    docker node inspect < node-id > --pretty
    
  • Affichage des journaux du nœud :
    docker node logs <node-id>
    
  • Exécution d'une commande sur le nœud :
    docker exec -it <container-id> <command>
    

Gardez à l'esprit que si vous pouvez exécuter des commandes d'administration sur des nœuds non-leaders, les modifications ou actions que vous effectuez n'affecteront pas l'état global du swarm. Le nœud leader est toujours responsable du maintien de l'état souhaité du cluster.

Limitations

Il est important de noter que l'exécution de commandes d'administration sur des nœuds non-leaders présente certaines limitations. Par exemple, vous ne pouvez pas utiliser les commandes docker service ou docker stack sur des nœuds non-leaders, car ces commandes nécessitent l'accès à l'état du swarm, qui est géré par le nœud leader.

Si vous devez effectuer des actions nécessitant l'accès à l'état du swarm, vous devez le faire sur le nœud leader ou utiliser la commande docker node exec pour exécuter la commande sur le nœud leader à partir d'un nœud non-leader.

Résumé

À la fin de ce tutoriel, vous aurez une meilleure compréhension de l'architecture de Docker Swarm et serez capable d'exécuter efficacement des commandes d'administration sur les nœuds non-leaders. Ces connaissances vous aideront à maintenir une haute disponibilité et à gérer efficacement vos applications conteneurisées dans un environnement Docker Swarm.