我已经使用3个群体管理器和3个节点创建了设置。
您可以在下面看到,在3个主人和3个工人的情况下,实际上我有 3个管理员和6个节点。管理者是否也有能力运行集装箱,而不仅仅是工人?我是否遗漏了设置中的内容,或者这是为了现在的工作原理?
当我执行docker info命令时,我得到了这个输出:
ubuntu@manager3:~$ docker info
Containers: 4
Running: 3
Paused: 0
Stopped: 1
Images: 3
Server Version: 1.12.0
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 23
Dirperm1 Supported: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: overlay bridge host null
Swarm: active
NodeID: 9uv3xhwzibx52xghpsa0sp3f7
Is Manager: true
ClusterID: 04r095rvj6b4i7ygbnr2quo9e
**Managers: 3
Nodes: 6**
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot interval: 10000
Heartbeat tick: 1
Election tick: 3
Dispatcher:
Heartbeat period: 5 seconds
CA configuration:
Expiry duration: 3 months
Node Address: 172.100.0.23
Runtimes: runc
Default Runtime: runc
Security Options: apparmor
Kernel Version: 3.13.0-92-generic
Operating System: Ubuntu 14.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 992.5 MiB
Name: manager3
ID: MUXB:GUNV:HIDO:APRJ:S2JU:763E:QSOL:2554:EZJL:L4OI:6TS5:RD7O
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Insecure Registries:
127.0.0.0/8
当我创建一些服务以在群集群上运行时:
docker service create --replicas=3 --name redis redis:latest
其中一些将针对经理,一些针对工人。那令我困惑。
如果我创建更多服务
docker service create --replicas=6 --name redis redis:latest
它们将在群集中的所有计算机上运行。由于端口冲突,增加甚至更多将开始失败。
答案 0 :(得分:3)
作为群集管理器运行的节点(主机)与运行服务的节点(主机)没有区别。拥有一个3节点群并且每个群上都有一个群体管理器(而且没有工作者)是完全没问题的。
对于端口冲突,您需要在创建服务时指定公共端口(在主机上)。例如:
docker create service --name redis --publish 8080:80 --replicas 5 redis:latest
然后,Docker将对任意节点上的端口8080的任何传入请求负载均衡到群集上的一个redis容器(不一定与传入请求在同一节点上)
答案 1 :(得分:3)
感谢@Mark O'Connor的回答是:
默认情况下,管理器节点也充当工作节点。
管理员可以被排空并保持“唯一”经理,因此您将执行此命令以使经理停止成为工人:
docker node update --availability drain *manager_name*