[英]Docker swarm does not distribute the container in the cluster
我有两台服务器用于 Docker 集群 Swarm(仅测试),一台是 Manager,另一台是 Worker,但是运行命令docker stack deploy --compose-file docker-compose.yml teste2
所有服务都运行在管理器和工作器中没有收到要运行的容器,由于某种原因,Swarm 没有实现在集群中分发服务并在管理器服务器中运行所有服务。
我的 docker-compose.yml 会导致问题还是网络问题?
以下是一些设置:
systemctl stop firewalld && systemctl disable firewalld
来禁用防火墙;docker swarm join --token ...
; 结果docker node ls
:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 993dko0vu6vlxjc0pyecrjeh0 * name.server.manager Ready Active Leader 18.09.4 2fn36s94wjnu3nei75ymeuitr name.server.worker Ready Active 18.09.4
文件 docker-compose.yml:
version: "3" services: web: image: testehello deploy: replicas: 5 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure # placement: # constraints: [node.role == worker] ports: - 4000:80 networks: - webnet visualizer: image: dockersamples/visualizer:stable ports: - 8080:8080 stop_grace_period: 1m30s volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager] networks: webnet:
我执行了命令docker stack deploy --compose-file docker-compose.yml teste2
在 docker-compose.yml 中,我评论了参数放置和约束,因为它们不起作用并且不会在服务器上启动容器,否则容器会在管理器中启动。 通过 Visualizer 全部出现在管理器中。
首先,尝试在没有更新选项的情况下进行部署,例如:
version: "3.2"
services:
web:
image: testehello
networks:
- webnet
deploy:
mode: replicated
replicas: 2
placement:
constraints: [node.role == worker]
restart: unless-stopped
logging:
options:
max-size: 1m
networks:
webnet:
external: true
接下来,尝试添加更新选项:
version: "3.2"
services:
web:
image: testehello
networks:
- webnet
deploy:
mode: replicated
replicas: 2
placement:
constraints: [node.role == worker]
update_config:
parallelism: 1
delay: 10s
restart: unless-stopped
logging:
options:
max-size: 1m
networks:
webnet:
external: true
我认为无法从工作节点访问图像,这就是为什么它们不接收容器,请尝试使用 docker https://docs.docker.com/engine/swarm/stack-deploy/ 的本指南
PS 我想你已经解决了,但以防万一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.