No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

17 Días
8 Hrs
35 Min
51 Seg
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 13

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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

![](

Disponibilidad de un nodo:

  • active. El nodo trabaja de forma coordinada con el Swarm y puede recibir nuevas tareas.
  • pause. El nodo deja de recibir nuevas tareas de manera indefinida, pero no desecha las que ya tiene corriendo.
  • drain. Le indica a Swarm que vacíe todas las tareas del nodo y lo mantenga así de manera indefinida. Si un servicio requiere un número definido de réplicas, Swarm redistribuye la respectiva carga del nodo drenado a otro nodo disponible.

Ver más en Administrar nodos de Swarm.

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?

# 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

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

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

en este video hay un fallo y es que cuando pasamos un node a drain y queremos actualizar el servicio para balancear la carga debemos debemos pasar nuetro worker2 a active o si no cuando hagamos update queda todo en el worker 1

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

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