下面更新!
我对Ubuntu 20.04上的Docker swarm感到困惑。我在Scaleway上创建了一个干净的Ubuntu计算机,基本上遵循了https://dockerswarm.rocks/中的教程。我很快也找到了本教程,它更简短,更简洁:https://blog.creekorful.com/2019/10/how-to-install-traefik-2-docker-swarm/。
基本上(全部通过SSH进入计算机):
# docker swarm init --advertise-addr=x.x.x.x
初始化了一个Swarm,我在其中使用了服务器的远程IP地址。# docker network create --driver=overlay my-net
version: '3'
services:
helloworld:
image: tutum/hello-world:latest
ports:
- 80:80
networks:
- my-net
networks:
my-net:
external: true
# docker stack deploy -c helloworld.yml helloworld
# curl 127.0.0.1
并获得自己的问候。但是,我得到一个连接被拒绝:
curl: (7) Failed to connect to 127.0.0.1 port 80: Connection refused
root@www2:~# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
md1bd2ydswo8 helloworld_helloworld replicated 1/1 tutum/hello-world:latest *:80->80/tcp
root@www2:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c2d9d7379c5 tutum/hello-world:latest "/bin/sh -c 'php-fpm…" About a minute ago Up About a minute 80/tcp helloworld_helloworld.1.7u99ox2ea6bylb5by8vdca0pt
UFW默认情况下处于禁用状态,但我也尝试启用它。这是# ufw status
root@www2:~# ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
2376/tcp ALLOW Anywhere
2377/tcp ALLOW Anywhere
7946/tcp ALLOW Anywhere
7946/udp ALLOW Anywhere
4789/udp ALLOW Anywhere
80/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
2376/tcp (v6) ALLOW Anywhere (v6)
2377/tcp (v6) ALLOW Anywhere (v6)
7946/tcp (v6) ALLOW Anywhere (v6)
7946/udp (v6) ALLOW Anywhere (v6)
4789/udp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
我还尝试了卷曲到公共IP和私有IP,以及将私有IP用作advertise-addr。我还尝试通过IP和域名从笔记本电脑卷曲到远程服务器。但是全部无济于事...
我在笔记本电脑上运行Arch Linux,并尝试在笔记本电脑上进行本地操作,这没有任何问题。
由于我几乎迷失了它,我决定启动另一个VPS,这次是清理Ubuntu 18.04(而不是20.04),它可以立即工作,没有任何问题.....
答案 0 :(得分:1)
几天来我一直在关注这个问题。在 IBM Cloud 上的全新 Ubuntu 20.04 映像上,无法从 Docker Swarm 服务公开端口。
我最终在来自 sudo journalctl -u docker.service
level=error msg="Could not get ipvs family information from the kernel. It is possible that ipvs is not enabled in your kernel. Native loadbalancing will not work until this is fixed."
通过将 ipvsadm
与 sudo apt-get install ipvsadm
一起安装,然后运行 sudo ipvasdm
,它会返回类似的消息,确认了这一点。
我切换回 18.04 而不是 faff 试图重建内核,但毫无疑问,如果您如此倾向,这是可能的。
答案 1 :(得分:0)
只有我的2美分。我有类似的行为,但这是由于容器未正确启动,因为我的卷绑定安装的基础文件系统存在问题。
为确保您不会出现这种情况,只需从本地卷开始堆栈即可。
此外,请确保数据包很好地到达了群集节点。您可以使用iptables命令的组合进行检查,例如:
iptables -Z #to Zero all counters
iptables -v -L #to list rules & packet counts
iptables -v -t nat -L #to also check in the NAT table. The NAT table is probably the most relevant here, since I guess the first rules applied are in the prerouting section in NAT table.
此致