kubernetes-在pod里面的容器不能ping外部ip
今天倒腾了一下kubernets集群,突然发现在pod里面不能ping外部ip,但是可以ping宿主主机的ip和任何节点上的pod的ip.集群安装的网络插件为flannel xvlan模式。猜想也是iptables出问题了,把所有节点的主机重启一次还是一样。这里简单描述一下解决的过程:1. 查看一下各节点的IP和pod的ip段 # kubectl get po -o wideNAME...
·
今天倒腾了一下kubernets集群,突然发现在pod里面不能ping外部ip,但是可以ping宿主主机的ip和任何节点上的pod的ip.
1. 查看一下各节点的IP和pod的ip段
集群安装的网络插件为flannel xvlan模式。猜想也是iptables出问题了,把所有节点的主机重启一次或清空所有iptables规则还是一样。
1. 查看一下各节点的IP和pod的ip段
# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE
curl-69689fc5d7-bbqqp 1/1 Running 1 35m 172.30.60.2 192.168.0.6
curl-69689fc5d7-nfgsh 1/1 Running 1 35m 172.30.25.3 192.168.0.7
可以看到:
- 节点 192.168.0.6 中pod的ip段为 172.30.60.2/24
- 节点 192.168.0.7 中pod的ip段为 172.30.25.2/24
# /sbin/iptables -t nat -I POSTROUTING -s 172.30.60.0/24 -j MASQUERADE
在 节点 192.168.0.7 增加一条路由规则:
# /sbin/iptables -t nat -I POSTROUTING -s 172.30.25.0/24 -j MASQUERADE
再次检查ping,已经通了:
# kubectl exec -it curl-69689fc5d7-bbqqp sh
/ # ping 219.96.134.133
PING 219.96.134.133 (219.96.134.133): 56 data bytes
64 bytes from 219.96.134.133: seq=0 ttl=56 time=54.227 ms
64 bytes from 219.96.134.133: seq=1 ttl=56 time=2.716 ms
^C
--- 219.96.134.133 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
此解决方法也是一个临时的解决方法,当节点重启后,检查ifconfig flannel.1 的网段信息,如果发现pod的网段变了,请修改iptables中相应的网段。
更多推荐
已为社区贡献10条内容
所有评论(0)