Cómo usar el comando docker node promote para elevar un nodo trabajador

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo elevar un nodo trabajador (worker node) a un nodo administrador (manager node) en un clúster Docker Swarm. Comenzará inicializando un clúster Docker Swarm en una máquina virtual (VM) de LabEx y uniendo un nodo trabajador a él.

Después de la configuración, identificará el nodo trabajador dentro del clúster y luego utilizará el comando docker node promote para cambiar su rol a administrador. Finalmente, verificará el nuevo rol del nodo para confirmar que la promoción fue exitosa. Este ejercicio práctico demostrará un aspecto clave de la gestión de Docker Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/ls -.-> lab-555183{{"Cómo usar el comando docker node promote para elevar un nodo trabajador"}} docker/version -.-> lab-555183{{"Cómo usar el comando docker node promote para elevar un nodo trabajador"}} docker/system -.-> lab-555183{{"Cómo usar el comando docker node promote para elevar un nodo trabajador"}} end

Inicializar un clúster Docker Swarm

En este paso, inicializará un clúster Docker Swarm en su máquina virtual (VM) de LabEx. Un clúster Docker Swarm es un grupo de hosts de Docker que se ejecutan en modo swarm. El modo swarm le permite gestionar un grupo de nodos Docker como un solo sistema virtual.

Antes de inicializar el clúster, veamos la versión actual de Docker instalada en la VM.

docker version

Debería ver una salida similar a esta, lo que indica que la versión de Docker es 20.10.21:

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 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.18.9
  Git commit:       363bd3a
  Built:            Tue Oct 25 17:59:35 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b4bd5d2bb63a5d10182b7e90689158e7c7b9b06b
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Ahora, inicialicemos el clúster Docker Swarm. Cuando se inicializa un clúster, el nodo actual se convierte en el primer nodo administrador (manager node). Los nodos administradores se encargan de las tareas de gestión del clúster, como mantener el estado del clúster, programar servicios y servir la API del modo swarm.

Utilice el comando docker swarm init para inicializar el clúster. Especificaremos la dirección de anunciación (advertise address) para garantizar que otros nodos puedan unirse al clúster utilizando la dirección IP de la VM. Reemplace YOUR_VM_IP_ADDRESS con la dirección IP real de su VM de LabEx. Puede encontrar esta dirección IP en los detalles del entorno de LabEx.

docker swarm init --advertise-addr YOUR_VM_IP_ADDRESS

Después de ejecutar el comando, verá una salida que indica que el clúster se ha inicializado y que proporciona un comando para que otros nodos se unan al clúster como nodos trabajadores (worker nodes). Guarde este comando de unión a mano, ya que lo necesitará en el siguiente paso.

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

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

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

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

Unir un nodo trabajador (worker node) al clúster

En el paso anterior, inicializó un clúster Docker Swarm y el nodo actual se convirtió en el administrador (manager). Ahora, simulará la adición de un nodo trabajador a este clúster. En un escenario del mundo real, realizaría este paso en una máquina separada que desee unir como trabajador. Sin embargo, para este laboratorio, usaremos la misma máquina virtual (VM) para simular que un nodo trabajador se une al clúster.

Para unir un nodo como trabajador, necesita el comando de unión proporcionado después de inicializar el clúster. Este comando incluye el token de unión al clúster (swarm join token) y la dirección IP y el puerto del nodo administrador.

Si no tiene el comando de unión del paso anterior, puede recuperarlo en el nodo administrador utilizando el comando docker swarm join-token worker.

docker swarm join-token worker

Este comando mostrará el comando de unión para un nodo trabajador:

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

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

Ahora, ejecute el comando de unión que obtuvo. Dado que estamos simulando un trabajador en la misma VM, ejecutará este comando en la misma terminal.

docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

Debería ver una salida que indique que el nodo se ha unido al clúster como trabajador:

This node joined a swarm as a worker.

Esto significa que su única VM ahora actúa tanto como nodo administrador como como nodo trabajador dentro del clúster.

Listar los nodos del clúster y identificar el nodo trabajador

En los pasos anteriores, inicializó un clúster Docker Swarm y luego unió el mismo nodo al clúster como trabajador. Ahora, listemos los nodos del clúster para ver el estado actual e identificar los roles de cada nodo.

Para listar los nodos del clúster, utilice el comando docker node ls. Este comando proporciona información sobre cada nodo del clúster, incluyendo su ID, nombre de host (hostname), estado, disponibilidad, estado de administrador (manager status) y versión.

docker node ls

Debería ver una salida similar a esta:

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

En esta salida, verá dos entradas, ambas con el nombre de host labex-vm. Esto se debe a que su única máquina virtual (VM) está actuando como dos nodos en el clúster: uno como administrador y otro como trabajador.

  • El nodo con MANAGER STATUS como Leader es el nodo administrador que inicializó en el primer paso.
  • El nodo sin un MANAGER STATUS listado es el nodo trabajador que unió en el segundo paso.

Anote el ID del nodo trabajador. Necesitará este ID en el siguiente paso para promoverlo a administrador. El ID es un identificador único para cada nodo en el clúster.

Promover el nodo trabajador a administrador

En el paso anterior, listó los nodos del clúster e identificó el nodo trabajador por su ID y la ausencia de un MANAGER STATUS. Ahora, promoverá este nodo trabajador a nodo administrador. Promover un nodo trabajador a administrador aumenta el número de nodos administradores en su clúster, lo cual es importante para la alta disponibilidad y tolerancia a fallos en un entorno de producción.

Para promover un nodo, utilice el comando docker node promote seguido del ID del nodo que desea promover. Obtenió el ID del nodo trabajador en el paso anterior.

Reemplace WORKER_NODE_ID con el ID real de su nodo trabajador.

docker node promote WORKER_NODE_ID

Después de ejecutar el comando, debería ver una salida que confirme que el nodo ha sido promovido:

Node WORKER_NODE_ID was promoted to a manager.

Esto indica que el nodo que antes era un trabajador ahora también es un nodo administrador en su clúster. Su clúster ahora tiene dos nodos administradores (aunque ambos se ejecutan en la misma máquina virtual física en este entorno simulado).

Verificar el nuevo rol del nodo

En el paso anterior, promovió el nodo trabajador a administrador. Ahora, verifiquemos que el rol del nodo se haya actualizado correctamente listando los nodos del clúster nuevamente.

Utilice el comando docker node ls para listar los nodos.

docker node ls

Esta vez, debería ver una salida similar a esta:

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

Note que el nodo que antes se listaba sin un MANAGER STATUS ahora muestra Reachable en MANAGER STATUS. Esto confirma que el nodo se ha promovido correctamente y ahora es reconocido como un nodo administrador por el clúster. El nodo con estado Leader es el administrador principal, mientras que el nodo con estado Reachable es un administrador secundario.

Tener múltiples nodos administradores en un clúster proporciona redundancia. Si el nodo administrador líder no está disponible, otro nodo administrador puede asumir su función, garantizando el funcionamiento continuo del clúster.

Resumen

En este laboratorio, aprendió cómo inicializar un clúster de Docker Swarm en un solo nodo, convirtiéndolo en el primer administrador. Luego, practicó unir un nodo trabajador a este clúster, expandiendo el grupo. El laboratorio lo guió a través del listado de los nodos del clúster para identificar el trabajador recién agregado. Finalmente, realizó la acción clave de promover el nodo trabajador a nodo administrador utilizando el comando docker node promote y verificó el cambio de rol exitoso.