在 Amazon Web Services 上运行的 Docker Swarm 中,全局部署的服务在 Swarm 的单个节点上丢失,并且docker node update --force
无法在所有节点上恢复,这种情况已经发生过多次。以下是 Docker 提供的情况:
ubuntu@swarm-manager-a:~$ docker service ls
ID NAME MODE REPLICAS IMAGE
vayezjxwifsd logging_papertrail global 10/10 gliderlabs/logspout:latest
7w1e9zhsa9kh monitoring_dd-agent global 9/9 mycompany/myddagent
...
因此,出于某种原因,蜂群认为监控_dd-代理应该只在 10 台主机中的 9 台上运行,而所有其他全局服务都在所有 10 台主机上运行。
查询各个部署的状态监控_dd-代理,似乎丢失的实例已在节点上自行关闭swarm-worker-d:
ubuntu@swarm-manager-a:~$ docker service ps monitoring_dd-agent
ID NAME IMAGE NODE DESIRED STATE
xlm3kalqevnr monitoring_dd-agent.4z3yz6y5 mycompany/myddagent swarm-worker-f Running Running 2 days ago
lyqw42dy8rsv monitoring_dd-agent.rguyjlhg mycompany/myddagent swarm-worker-d Shutdown Complete 4 hours ago
on5zmi18tcal monitoring_dd-agent.zcx9jo66 mycompany/myddagent swarm-manager-b Running Running 2 days ago
...
这些节点完全相同,只是工作节点有 32GiB 内存,而管理器有 16GiB:
ubuntu@swarm-manager-a:~$ docker system info
Server Version: 18.03.1-ce
Swarm: active
Managers: 3
Nodes: 10
containerd version: 773c489c9c1b21a6d78b5c538cd395416ec50f88
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: 949e6fa
Kernel Version: 4.4.0-1079-aws
Operating System: Ubuntu 16.04.5 LTS
CPUs: 8
Total Memory: 15.11GiB
...
有谁能解释一下这种奇怪的现象吗?