[英]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.