[英]Unable to access the services in Docker swarm
我對 docker 很陌生,最近我一直在關注 PluralSight 的 Nigel Poulton 課程。 現在,我開始按照關於 swarm 模式的視頻教程進行操作,並在視頻中完全按照說明進行操作。
我有 6 個 EC2 實例正在運行。 我分別登錄並安裝了 docker。 每台機器上的引擎版本都是18.09.9
。 現在,我使用以下命令從機器 1 初始化集群模式:
sudo docker swarm init --advertise-addr 172.31.41.99:2377 --listen-addr 172.31.41.99:2377
然后我得到了工人和經理的令牌並登錄到其他機器,最后創建了 3 個經理和 3 個工人。
這就是我的節點最終的樣子:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
sbh3v850ko7h8f279366fxlt9 * ip-172-31-41-99 Ready Active Leader 18.09.9
f7kqsy3yano3vxo8451mi9z7o ip-172-31-83-172 Ready Active Reachable 18.09.9
jb0innx7l4q56kq4dk9phginw ip-172-31-90-8 Ready Active 18.09.9
xr3oz2x1wyl3a0bd83i3atjk4 ip-172-31-91-47 Ready Active 18.09.9
ttug67rbhfai88wq2sbulo8dm ip-172-31-94-197 Ready Active Reachable 18.09.9
kkun5zo93zxg4jksryvbeh3mt ip-172-31-94-220 Ready Active 18.09.9
然后我使用以下命令創建了服務:
sudo docker service create --name psight1 -p 8080:8080 --replicas 5 nigelpoulton/pluralsight-docker-ci
現在,當我拿起我的機器 1 的公共 DNS 並輸入http://ec2-3-89-157-63.compute-1.amazonaws.com:8080
an error 說該站點無法到達時,IBEC5
但是,如果我使用以下命令,而不是使用 docker 服務:
docker run -d --name web -p 8080:8080 nigelpoulton/pluralsight-docker-ci
然后,當我從 go 到http://ec2-3-89-157-63.compute-1.amazonaws.com:8080
時,它工作得很好。
我看到github 中存在一個與此類似的未解決問題。 是因為 docker 18.09.9 中的相同問題還是我遺漏了什么?
您是否創建了覆蓋網絡並將服務部署到該網絡。
像docker network create -d my-net
這樣的東西來創建覆蓋。
然后docker service create --network my-net...
將服務部署到覆蓋。
一段時間以來,我一直在摸不着頭腦,但覆蓋網絡可能對通過任何節點提供服務的路由網格至關重要。
我在想的是,您可能會遇到集群中沒有服務副本的節點。
另一種測試方法是部署比節點更多的副本。 這應該確保每個節點上至少有一個。
或者,部署單個副本,找出它正在運行的節點,連接到該節點(瀏覽器或 curl),然后再次嘗試訪問未運行副本的節點。
HTH。 還在 Twitter 上 ping 你。
@nigelpoulton
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.