docker multi host networkを構成しようとしたが、うまくいかなかった

検証環境でmulti host networkを構築しようとしたら、結構厄介だったのでペンディングとした

環境

やりたいことと条件

  • dockerのマルチホストネットワークでコンテナを接続する
  • etcdを使用
  • swarmは使わない

手順

etcdの起動

取り急ぎdocker上でetcdを起動する

IP="192.168.1.99"
etcd \
      --name=etcd-1 \
      --data-dir=./etcd-data \
      --advertise-client-urls http://${IP}:2379 \
      --listen-client-urls http://${IP}:2379 \
      --listen-peer-urls http://${IP}:2380 \
      --initial-advertise-peer-urls http://${IP}:2380 \
      --initial-cluster etcd-1=http://${IP}:2380 \
      --initial-cluster-token my-etcd-token \
      --initial-cluster etcd-1=http://${IP}:2380,etcd-2=http://${IP}:2382 \
      --initial-cluster-state new

docker daemonの起動オプションの修正

こんな感じ

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock --cluster-store=etcd://192.168.1.99:2379 --cluster-advertise=0.0.0.0:2376

詰まったこと

docker network create -d overlay testnetが失敗する

Error response from daemon: error getting pools config from store: could not get pools config from store: client: response is invalid json. The endpoint is probably not valid etcd cluster endpoint.

deprecated?

docker info

WARNING: node discovery and overlay networks with an external k/v store (cluster-advertise,
         cluster-store, cluster-store-opt) are deprecated and will be removed in a future release.

と出てくる。素直にswarmに切り替えるべきか