swarm 问题记录

1 swarm集群 在测试的时候发现一个这样的问题,每台容器调为12个时(一共20台),发现启动的容器只有231/240,不到240个。

原因:使用docker stack 创建出来的网络默认网段是一个10.10.0.0/24 的,所以会限制所能创建的ip的个数。

解决方法:使用自建网络建立一个网段比较大的,在stack中使用自建网络

1
2
3
4
5
6
docker network create --driver=overlay --subnet=10.10.0.0/16 arkkit_self_overlay

networks:
arkkit_self_overlay:
driver: overlay
external: true

2创建go的http访问客户端时要设置不要使用长连接,否则swarm集群无法进行负载均衡

1
2
3
4
5
6
tr := http.Transport{DisableKeepAlives: true}
c := &http.Client{
Timeout: 100 * time.Second,
Transport: &tr,
}
res, err := c.Get(sample_url)

3 swarm网络有时会删不掉,需要借助第三方工具swarmctl

1
2
docker network rm gerrit8837_default
Error response from daemon: rpc error: code = FailedPrecondition desc = network n4iawrsr18263xbqznepzu9r5 is in use by task 1yf3gempke5fpr0kvt1g3t82k

swarmkit

4 个别容器出现dns无法解析的情况

1
download sample 1d5a30871e14d78748489ce835480f46, err download sample error:Get http://xxx dial tcp: lookup xxxx on 127.0.0.11:53: read udp 127.0.0.1:35840->127.0.0.11:53: read: connection refused