Docker Swarm: Drain Mode
Como ya hemos hablado en otras entradas, existen dos tipos de nodos, los Masters y los Workers.
En Docker Swarm pasa una cosa curiosa que no pasa por ejemplo en Kubernetes, es que por defecto los nodos Masters se comportan también como Workers.
Esto en un entorno pequeño, no creo que de ningún problema, pero en un entorno grande donde los Masters tiene que repartir las tareas, tener un Quorum, sincronizarse entre ellos…pues sí puede ser un problema de recursos.
Para ello lo ideal es aislar los nodos Masters del resto del clúster o enjambre. Para evitar que esto, podéis lanzar el siguiente comando:
1 |
docker node update --availability drain NOMBREMASTER |
Lo que hacemos con el comando es hacer un drain del master, para que se reasignen las tareas de un nodo worker sobre el resto del clúster o enjambre. Pongo un ejemplo con mi LAB:
- Dispongo de 2 Masters y 2 Workers como veis en la imagen. Y uno de los Master dispone de un contenedor de appweb que también está repartido por los Workers.
Al lanzar el comando:
1 2 |
root@swarm00:~# docker node update --availability drain swarm00 swarm00 |
El nodo sobre el que hemos lanzado el comando, se libera de contenedores:
Y se mueven a otros hosts. Si lo repites sobre todos los nodos Masters, consigues que los contenedores desaparezcan de ellos.
Para volver a activarlo, simplemente utilizáis el comando:
1 2 |
root@swarm00:~# docker node update --availability active swarm00 swarm00 |
Si queréis ver el estado de tus nodos, lo podéis hacer consultando a la API:
1 2 3 4 |
root@swarm00:~# docker node inspect swarm00 --format "{{ .ManagerStatus.Reachability }}" reachable root@swarm00:~# docker node inspect swarm00 --format "{{ .Status.State }}" ready |
El estado reachable significa que es Master y el estado ready es como Worker.
Para consultar el estado de todos los nodos:
1 2 3 4 5 6 |
root@swarm00:~# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION wtxqaii96t7ofy2d6ep9wnf4l * swarm00 Ready Active Leader 20.10.5 q1l6gkm5ec78q155duyzwzt6o swarm01 Ready Active Reachable 20.10.5 g2plw1serfi4psvls8szdofo0 swarmn01 Ready Active 20.10.5 1iy0jshekp2qgepehkn10r3rh swarmn02 Ready Active 20.10.5 |
Espero os parezca interesante…
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?