场景:
目前我在利用手上的机台云服务器搭建基于公网的k8s简易集群,状况如下
所有pod运行都没有问题
之后我发现pod跨主机无法ping通,结合flannel的注册信息都是节点内网网址,于是我利用iptables做了转发
iptables -t nat -A OUTPUT -d 节点内网ip -j DNAT --to-destination 节点公网ip
转发后pod跨节点之间可以ping通了,如下
使用的是节点1上的pod ping 节点2上的pod
节点1 flannel.1 网卡情况:
节点1 eth0 网卡情况:
节点2 eth0 网卡情况:
节点2 flannel.1 网卡情况:
但是之后试了curl 失败了,具体情况是:节点1上的flannel.1 和 eth0 网卡 数据都到了,节点2上的eth0网卡也收到了数据,但是节点2上的flannel.1网卡没有收到数据,情况如下:
节点1-flannel
节点1-eth0
节点2-eth0
节点2-flannel
这就是我知识盲区了
测试后发现只有ping能通,curl telnet都不通
我在节点2的eth0网卡上抓包看了下,ping和curl的包都是vxlan的格式包,除了协议不同也没发现什么特别的
ping icmp
curl tcp