Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Swarm

Curso de Swarm

Guido Vilariño

Guido Vilariño

Disponibilidad de nodos

17/24
Recursos

En el visualizer podemos ver que todas las tareas siguen corriendo en el "“worker 1"”, esto sucede porque el planificador de Docker Swarm no va a replanificar o redistribuir la carga de un servicio o de contenedores a menos que tenga que hacerlo; para solucionar esto, debemos forzar un redeployment o una actualización que se logra cambiando el valor de una variable que no sirva para nada.

docker service update -d --env-add UNA_VARIABLE=de-entorno --update-parallelism=0 app

docker service ps app

Aportes 11

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Entendido

docker node ls
docker  node inspect --pretty swarmwork02
docker node update --availability drain swarmwork02
docker node update --availability active swarmwork02
docker service update -d --env-add UNA_VARIABLE=de-entorno --update-parallelism=0 app
docker service rm app

![](

como para hacer un cluster con raspberry 🤭

– Como hacemos decirle que esto de aqui sacamelo

docker node ls
docker node inspect --pretty worker2

– Le pasamos las replicas a los otros workers, es decir le quitamos replicas nuestro worker2

docker node update --availability drain worker2

– Vamos a nuestro worker1 y observamos que tiene mucha carga

– Vamos a nuestro manager, verificamos que nuetro worker2 esta en modo DRAIN y lo cambiamos a ACTIVE (observamos que no redistribuye las replicas a worker2)

docker node ls
docker node update --availability active worker2

– Con este metodo podemos redistribuir, enviando las tareas a otros workers

docker service update -d --env-add UNA_VARIABLE=de-entorno --update-parallelism=0 app
docker service ps app

Porque no se debería aplicar lo de parallelism en un entorno productivo?

Si no quieren agregar una variable de entorno nueva para redistribuir el servicio a los workers cada vez que activan uno node worker pueden usar nada mas:

docker service update app --force

en lugar de:

docker service update -d --env-add VAR=value app
docker node update --availability drain workder2
docker node update --availability active workder2
# Actualizar alguna variable de entorno para forzar la redistribución de contenedores
docker service update -d --env-add UNA_VARIABLE=de-entorno app

Eliminar containers

docker service rm app

me surgio una duda con el ejemplo que dio, en caso de que detectaramos que un nodo tiene problemas de conectividad, supongo que poderia ser de acceso a internet, entonces como podriamos hacer para mandar instrucciones a travez del nodo a docker swarm si justamente esta teniendo problemsa de conexion, es decir, si en la maquina donde esta corriendo ese nodo se corta internet entonces los comandos que ponga no le van a llegar al swarm, ya que justamente no tiene acceso a internet

docker node ls
docker node inspect --pretty swarmwork02
docker node update --availability drain swarmwork02
docker node update --availability active swarmwork02
docker service update -d --env-add UNA_VARIABLE=de-entorno --update-parallelism=0 app
docker service ps app
docker service rm app

# inspect node
docker node ls
docker node inspect --pretty wrkr2

# mode drain (clean load) and mode availability
docker node update --availability drain wrkr2
docker node update --availability active wrkr2

# Force redistribution 
docker service update -d --env-add UNA_VARIABLE=de-entorno --update-parallelism=0 app
docker service ps app

Genial 😃 yo me di el trabajo de hacerlo en un entorno local