群中副本的数量不在工作节点中开始(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。 一般来说,如果集装箱不能成功启动,他们将最终落在经理身上。 一些可能的原因是:
- 无法访问私人registry(使用–with-registry-auth修复)
- 应用程序需要在主机上进行一些更改(如elasticSearch需要vm.max_map_count = 262144)
- HealthCheck由于写好的helthcheck而在其他节点上失败
- networking设置问题,防止拉图像
尝试删除您的堆栈并再次运行它。 然后执行docker service ps --no-trunc {serviceName}
这可能会向您显示应该在另一个节点上运行服务的任务,以及为什么失败。
看看这个线索更多的故障排除技巧。