除了k8s要求的端口要开,worker node上面的8472/udp(vxlan backend)
也得开。(尽管参考链接里明确的是worker node要开,但master似乎也得开,否则master里面的coredns无法为worker node服务)
用nmcli
查看,发现flannel 用到的是vxlan backend
,因此需要打开8472/udp
。
打开后,发现Ubuntu的node可以被ping通,同时如果上面跑着httpd
,其他node也可以curl
到内容;而CentOS只能被ping通,curl 10.244.2.19
的时候会显示curl: (7) Failed to connect to 10.244.2.19 port 80: No route to host
。
查了n多资料,几乎都是关闭防火墙,关闭后确实能解决,但我想这不是生产环境中的做法。最终在这位仁兄Louis He的博文Kubernetes集群开启Firewall中找到答案add-masquerade
。同时也谢谢让我找到8472端口的仁兄关于网络:Kubernetes集群所需的端口。
# Ubuntu
sudo ufw allow 8472/udp #搞定
# CentOS
sudo firewall-cmd --zone=public --add-port=8472/udp --permanent
sudo firewall-cmd --reload #这步搞完只能被ping通,curl时是No route to host,头疼死了
sudo firewall-cmd --add-masquerade --permanent
sudo firewall-cmd --reload #这才把curl也打通了,我太难了
参考链接:
https://www.codenong.com/39293441/
https://www.cnblogs.com/Dev0ps/p/11401530.html