k8s集群跨节点pods无法ping通以及无法curl

除了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