CentOS搭建k8s集群(9)—跨node访问不通问题

集群内部,包括master和所有node都可以通过pod ip访问pod

1、前一篇说道httpd安装在node1,但是在它安装的node1上能访问,master和node2上curl不通
curl http://10.122.1.18
curl http://10.103.242.174
node1都通
master都不通
node2都不通

2、查看路由表
ip r s

10.122.0.0/24 dev cni0 proto kernel scope link src 10.122.0.1
10.122.1.0/24 via 10.122.1.0 dev flannel.1 onlink
10.122.2.0/24 via 10.122.2.0 dev flannel.1 onlink

三台机器都有flannel网络的配置

3、查看iptables
iptables -L -n
FORWARD链是否为DROP
如果为:
Chain FORWARD (policy DROP)
要改为:
Chain FORWARD (policy ACCEPT)

4、临时解决办法
iptables -P FORWARD ACCEPT
重启后失效

5、永久解决办法
echo "net.ipv4.ip_forward = 1" >> /usr/lib/sysctl.d/50-default.conf
sysctl -p
reboot

6、pod ip
pod ip是内部访问的ip,对集群来说也是透明的,因为pod重启后,ip会重新分配

参考资料:
https://bbs.csdn.net/topics/392496366
https://www.cnblogs.com/mybxy/p/10490435.html
https://www.cnblogs.com/ericnie/p/8028681.html