群中副本的数量不在工作节点中开始(1/4)

我开始了一个瓶子API服务到具有1个主节点和3个工作节点的docker群集群上。 我已经部署任务使用以下泊坞窗撰写文件,

version: '3' services: xgboost-model-api: image: xgboost-model-api ports: - "5000:5000" deploy: mode: global networks: - xgboost-net networks: xgboost-net: 

我使用下面的docker swarm命令部署了这个任务,

 docker stack deploy --compose-file docker-compose.yml xgboost-swarm 

但是,该任务仅在我的主节点上启动,而不在任何工作节点上启动。

 $ docker service ls ID NAME MODE REPLICAS IMAGE pgd8cktr4foz viz replicated 1/1 dockersamples/visualizer twrpr4av4c7f xgboost-swarm_xgboost-model-api global 1/4 xgboost-model-api xxrfn1w7eqw6 dockercloud-server-proxy global 1/1 dockercloud/server-proxy 

正在使用的Dockerfile在这里 。 任何想法为什么发生这种行为将不胜感激。

正如在这个线程 (重复?)所述:

如果您正在使用私有registry,则通过使用与工作者节点共享login名和凭证非常重要

docker堆栈部署–with-registry-auth

—-更新

从你的撰写文件,它看起来不像你使用的私人registry。 一般来说,如果集装箱不能成功启动,他们将最终落在经理身上。 一些可能的原因是:

  1. 无法访问私人registry(使用–with-registry-auth修复)
  2. 应用程序需要在主机上进行一些更改(如elasticSearch需要vm.max_map_count = 262144)
  3. HealthCheck由于写好的helthcheck而在其他节点上失败
  4. networking设置问题,防止拉图像

尝试删除您的堆栈并再次运行它。 然后执行docker service ps --no-trunc {serviceName}这可能会向您显示应该在另一个节点上运行服务的任务,以及为什么失败。

看看这个线索更多的故障排除技巧。