Docker Swarm Windows Worker con Traefik devuelve Gateway Timeout
docker-swarm (0)
El objetivo es obtener un enjambre OS Docker mezclado ejecutando con servidores Linux y Windows 10 Machines ejecutando Docker para Windows
Actualmente, los trabajadores de Windows son soportados teóricamente en enjambres de os mezclados siempre que el indicador --endpoint-mode esté establecido en ''dnsrr''. Esto se explica aquí . Sin embargo, los intentos de utilizar traefik para enrutar a un simple docker whoami imagen stefanscherer / whoami imagen han fallado.
Ejemplo de falla mínima
// On (Linux) Manager Node:
docker swarm init --advertise-addr <hostaddress> --listen-addr <hostaddress>:2377
// On (Windows 10) Worker Node:
docker swarm join <jointoken>
// On Manager Node:
docker network create --driver=overlay traefik-net
docker service create /
--name traefik /
--constraint=node.role==manager /
--publish 80:80 --publish 8080:8080 /
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock /
--network traefik-net /
traefik /
--docker /
--docker.swarmmode /
--docker.domain=traefik /
--docker.watch /
--web
docker service create /
--name whoami /
--label traefik.enable=true /
--label traefik.frontend.rule=Host:whoami.docker /
--label traefik.protocol=http /
--label traefik.docker.network=traefik-net /
--label traefik.backend.loadbalancer.method=drr /
--label traefik.backend=whoami /
--network traefik-net /
--mode global/
--label traefik.port=80 /
stefanscherer/whoami
Traefik establece con éxito las reglas de backend, para verificar el enrutamiento utilicé el tablero de trae trae para descubrir la URL que está enrutada por la regla, por ejemplo ''10 .0.0.12: 8080 ''. Luego comparo esto con la dirección IP de cada tarea, la tarea se puede ver con el docker service ps
, y su dirección se encuentra usando
docker inspect <taskID> /
--format ''{{ range .NetworksAttachments }}{{ .Addresses }}{{ end }}''
El problema
Una solicitud HTTP con un encabezado ''Host: whoami.docker'' enviado a la IP del administrador tendrá éxito cuando se enrute al administrador y falle con 504 Gateway Timeout cuando se enrute a la tarea de Windows en el trabajador de Windows.