目的は、LinuxサーバーとDocker ForWindowsを実行しているWindows10マシンを使用して混合OSDockerスウォームを実行することです。
現在、Windowsワーカーは、-endpoint-modeフラグが「dnsrr」に設定されている場合、混合OSスウォームで理論的にサポートされています。これは説明されています ここ 。ただし、traefikを使用して単純なdocker whoamiイメージにルーティングしようとすると stefanscherer/whoami イメージが失敗しました。
// 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はバックエンドルールを正常に設定しました。ルーティングを確認するために、traefikダッシュボードを使用して、ルールによってルーティングされるURLを見つけました。 「10.0.0.12:8080」。次に、これを各タスクのIPアドレスと比較します。タスクは、docker service ps
で表示でき、アドレス 'は
docker inspect <taskID> \
--format '{{ range .NetworksAttachments }}{{ .Addresses }}{{ end }}'
ヘッダー「Host:whoami.docker」がマネージャーのIPに送信されたHTTPリクエストは、マネージャーにルーティングされると成功し、WindowsワーカーのWindowsタスクにルーティングされると504ゲートウェイタイムアウトで失敗します。
Whoamiサービスへの--endpoint-mode = dnsrrの設定がありません。
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 \
--endpoint-mode=dnsrr
stefanscherer/whoami
エンドポイントモードdnsrrを設定すると、VIPアドレスが無効になり、おそらく問題が発生します。
stefanscherer/whoami
画像を使用したときに同じ問題が発生しました。ただし、Microsoft/dotnet-samples:aspnetapp
の使用は機能するため、エラーは画像に関連しているようです。
私は次の設定を使用しています:
buntu 16.04
Windows 18