关于kubernetes中flannel组网的一个问题


按照flannel官网的说法,flannel起到一个隧道的作用,
例如,
node1主机地址:192.168.1.1, 位于其上一个pod1的地址:10.0.14.32
node1主机地址:192.168.1.2, 位于其上一个pod2的地址:10.0.38.25

那么,
隧道外层的IP地址应该是192.168.1.1,192.168.1.2
位于UDP载荷内隧道内曾的IP地址应该是10.0.14.32, 10.0.38.25

但是我实际抓包发现,在po1内ping pod2,外层隧道地址没有问题,而隧道内部的地址却是10.0.14.0和10.0.38.25,也就是说,源地址被修改成了flannel0的地址,而不是pod的地址,哪位高手给解释一下是为什么?难道是内部做了NAT?
已邀请:

wulonghui - PaaS工程师

赞同来自:


可以参考这篇文章:
http://dockone.io/article/618

vimiv

赞同来自:


原因:
猜测你的环境下,是docker daemon restart的时候,往iptables的nat表的DOCKER chain里面加了一条MASQUERADE规则。
解决办法:
docker的启动参数DOCKER_OPTS里面加入--ip-masq=false

要回复问题请先登录注册