swarm 中的副本数不是从工作节点开始的 (1/4)
Number of replicas in swarm doesn't start in worker node (1/4)
我在具有 1 个主节点和 3 个工作节点的 docker swarm 集群上启动了一个 flask API 服务。我已经使用以下 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 是 here。任何关于为什么会发生这种行为的想法都将不胜感激。
如本文所述(重复?):
如果您使用的是私有注册表,请务必使用
与工作节点共享登录名和凭据
docker stack deploy --with-registry-auth
----更新
从您的撰写文件来看,您似乎没有使用私有注册表。一般来说,如果容器不能在工人身上成功启动,它们最终会在经理身上。
一些可能的原因是:
- 无法访问私有注册表(使用 --with-registry-auth 修复)
- 应用程序需要在主机上进行一些更改以 运行(例如 elasticSearch 需要 vm.max_map_count=262144)
- 由于 helthcheck 编写不当,其他节点上的 HealthCheck 失败
- 阻止拉取图像的网络设置问题
尝试删除您的堆栈,然后 运行重新设置它。然后执行 docker service ps --no-trunc {serviceName}
这可能会向您显示应该 运行 另一个节点上的服务的任务以及失败的原因。
查看 了解更多疑难解答提示。
我在具有 1 个主节点和 3 个工作节点的 docker swarm 集群上启动了一个 flask API 服务。我已经使用以下 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 是 here。任何关于为什么会发生这种行为的想法都将不胜感激。
如本文所述
如果您使用的是私有注册表,请务必使用
与工作节点共享登录名和凭据docker stack deploy --with-registry-auth
----更新
从您的撰写文件来看,您似乎没有使用私有注册表。一般来说,如果容器不能在工人身上成功启动,它们最终会在经理身上。 一些可能的原因是:
- 无法访问私有注册表(使用 --with-registry-auth 修复)
- 应用程序需要在主机上进行一些更改以 运行(例如 elasticSearch 需要 vm.max_map_count=262144)
- 由于 helthcheck 编写不当,其他节点上的 HealthCheck 失败
- 阻止拉取图像的网络设置问题
尝试删除您的堆栈,然后 运行重新设置它。然后执行 docker service ps --no-trunc {serviceName}
这可能会向您显示应该 运行 另一个节点上的服务的任务以及失败的原因。
查看