Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

332
Visualizações
Réplicas de enjambre de Docker en diferentes nodos

Estoy usando un archivo docker-compose versión 3 con su clave de implementación para ejecutar un enjambre (docker versión 1.13) y me gustaría replicar un servicio para que sea resistente nuevamente a la falla de un solo nodo.

Sin embargo, cuando agrego una sección de implementación como esta:

 deploy: replicas: 2

en mi clúster de cuatro nodos, a veces termino con ambas réplicas programadas en el mismo nodo. Lo que me falta es una restricción que programe las dos instancias en nodos diferentes.

Sé que hay un modo global que podría usar pero que ejecutaría una instancia en cada nodo, es decir, cuatro instancias en mi caso en lugar de solo dos.

¿Existe una forma sencilla de especificar esta restricción de forma genérica sin tener que recurrir a una combinación de global y etiquetas para mantener alejadas las instancias adicionales?

Editar: después de intentarlo de nuevo, encuentro contenedores que se programarán en diferentes nodos esta vez. Estoy empezando a preguntarme si es posible que haya tenido una 'node.hostname == X' .

Edición 2: después de otra actualización del servicio, y sin restricciones de ubicación, el servicio se programa nuevamente en el mismo nodo (como lo muestra ManoMarks Visualizer ):

ingrese la descripción de la imagen aquí

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Extendiendo la respuesta de VonC , y como en su ejemplo está usando un archivo de redacción, no el cli, podría agregar max_replicas_per_node: 1 , como en

 version: '3.8' ... yourservice: deploy: replicas: 2 placement: max_replicas_per_node: 1

La versión 3.8 del esquema de redacción es clave aquí, ya que no hay soporte para max_replicas_per_node por debajo de 3.8 .

Esto se agregó en https://github.com/docker/cli/pull/1410

about 4 years ago · Santiago Trujillo Relatório

0

docker/cli PR 1612 parece resolver el problema 26259 y se ha lanzado en docker 19.03 .

Se agregó un nuevo conmutador --replicas-max-per-node al servicio docker

como verificarlo

Cree dos servicios y especifique --replicas-max-per-node uno de ellos:

 docker service create --detach=true --name web1 --replicas 2 nginx docker service create --detach=true --name web2 --replicas 2 --replicas-max-per-node 1 nginx

Vea la diferencia en las salidas de comando:

 $ docker service ls ID NAME MODE REPLICAS IMAGE PORTS 0inbv7q148nn web1 replicated 2/2 nginx:latest 9kry59rk4ecr web2 replicated 1/2 (max 1 per node) nginx:latest $ docker service ps --no-trunc web2 ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS bf90bhy72o2ry2pj50xh24cfp web2.1 nginx:latest@sha256:b543f6d0983fbc25b9874e22f4fe257a567111da96fd1d8f1b44315f1236398c limint Running Running 34 seconds ago xedop9dwtilok0r56w4g7h5jm web2.2 nginx:latest@sha256:b543f6d0983fbc25b9874e22f4fe257a567111da96fd1d8f1b44315f1236398c Running Pending 35 seconds ago "no suitable node (max replicas per node limit exceed)"

El mensaje de error sería:

 no suitable node (max replicas per node limit exceed)

Ejemplos de Sebastiaan van Stijn :

Cree un servicio con un máximo de 2 réplicas:

 docker service create --replicas=2 --replicas-max-per-node=2 --name test nginx:alpine docker service inspect --format '{{.Spec.TaskTemplate.Placement.MaxReplicas}}' test 2

Actualice el servicio (las réplicas máximas deben mantener su valor)

 docker service update --replicas=1 test docker service inspect --format '{{.Spec.TaskTemplate.Placement.MaxReplicas}}' test 2

Actualice las réplicas máximas a 1:

 docker service update --replicas-max-per-node=1 test docker service inspect --format '{{.Spec.TaskTemplate.Placement.MaxReplicas}}' test 1

Y restablecer a 0:

 docker service update --replicas-max-per-node=0 test docker service inspect --format '{{.Spec.TaskTemplate.Placement.MaxReplicas}}' test 0
about 4 years ago · Santiago Trujillo Relatório

0

¿Qué versión de docker estás usando? De acuerdo con esta publicación en 1.13, este tipo de problema se ha corregido, eche un vistazo: https://github.com/docker/docker/issues/26259#issuecomment-260899732

Espero que eso responda a tu pregunta.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda