Docker Swarm: Gestionar el Clúster
1. Comandos Docker Swarm para Gestionar el Clúster #
En un clúster de Docker Swarm, hay varios nodos que pueden ser managers (líderes que coordinan el clúster) o workers (nodos que ejecutan los contenedores). Los comandos de gestión de nodos permiten controlar estos nodos dentro del clúster, desde listar todos los nodos hasta actualizar sus roles.
2. docker node ls: Listar los nodos en el clúster de Docker Swarm #
Este comando muestra todos los nodos que forman parte del clúster de Docker Swarm, tanto los nodos managers como los workers. Es útil para obtener una visión general de los nodos que están activos en el clúster y ver su estado.
Ejemplo:
1docker node ls
Salida esperada:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
abc123 node1 Ready Active Leader
def456 node2 Ready Active Reachable
ghi789 node3 Ready Active Worker
- Leader: Es el nodo principal que coordina el clúster.
- Reachable: Son managers secundarios que pueden asumir el rol de líder si el líder actual falla.
- Worker: Nodos que no son managers y solo ejecutan tareas.
3. docker node update <nombrenodo>: Actualizar un nodo (etiquetas, disponibilidad) #
Este comando se utiliza para actualizar las propiedades de un nodo, como su disponibilidad (si está listo para recibir tareas o no) o agregar etiquetas personalizadas para identificar los nodos.
Ejemplo 1: Cambiar la disponibilidad de un nodo a inactivo (no recibirá nuevas tareas):
1docker node update --availability drain node3
Esto cambia el estado de node3 para que no acepte nuevas tareas. Las tareas en ejecución seguirán corriendo, pero no se asignarán nuevas.
Ejemplo 2: Agregar una etiqueta personalizada a un nodo:
1docker node update --label-add tipo=almacenamiento node3
Esto agrega la etiqueta tipo=almacenamiento al nodo node3, que podría ser útil para asignar tareas específicas a nodos con características particulares.
4. docker node rm <nombrenodo>: Eliminar un nodo del clúster #
Este comando elimina un nodo del clúster. Generalmente se utiliza cuando un nodo deja de ser necesario o está siendo retirado del servicio.
Ejemplo:
1docker node rm node3
Esto elimina el nodo node3 del clúster. Si el nodo está ejecutando tareas, primero debes asegurarte de que esas tareas sean reasignadas o terminadas antes de eliminar el nodo.
5. docker node promote <nombrenodo>: Promover un nodo a líder del clúster #
Este comando promueve un nodo worker a un manager, lo que significa que ahora puede tomar decisiones sobre el clúster, como gestionar la distribución de tareas y coordinar otros nodos.
Ejemplo:
1docker node promote node3
Esto convierte el nodo node3 de un nodo worker a un nodo manager, permitiéndole gestionar tareas en el clúster.
6. docker node demote <nombrenodo>: Degradar un nodo de líder a trabajador #
Si un nodo manager ya no necesita gestionar el clúster, puedes degradarlo a un nodo worker usando este comando. El nodo seguirá ejecutando tareas, pero ya no tendrá permisos para tomar decisiones sobre la orquestación.
Ejemplo:
1docker node demote node2
Esto degrada el nodo node2 de manager a worker, quitándole la capacidad de coordinar el clúster.
7. 7Estos comandos son útiles para gestionar y mantener el funcionamiento de un clúster de Docker Swarm, asegurando que los nodos se asignen adecuadamente a las tareas necesarias. #
Resumen del tema
Conceptos clave #
- Arquitectura de Nodos en Swarm:
- Managers: mantienen el estado del clúster mediante el algoritmo de consenso Raft y despachan tareas.
- Workers: reciben y ejecutan las tareas (contenedores) asignadas por los managers.
- Unión y Pertenencia:
docker swarm join-token worker/manager: genera los tokens y comandos para unir nuevos nodos.docker swarm join --token ...: une una máquina al clúster.
- Administración de Nodos:
docker node ls: estado y roles de todos los nodos.docker node promote / demote: eleva a manager o degrada a worker.docker node update --availability drain: drena un nodo de tareas para mantenimiento seguro.docker node rm: elimina un nodo del clúster.
Qué debes recordar #
Usa docker node update --availability drain para vaciar un nodo antes de realizar tareas de mantenimiento sin interrumpir los servicios del clúster.