截获以后, flannel会进行拆封, 拆封完了一个后, 会转发到flannel0, flannel0会转发到docker0, docker0会找到10.1.20.3这个pod....总结 -- 不同情况下的网络通讯方式
1) 同一个pod内部通讯:
同一个pod共享同一个网络命名空间, 共享同一个linux协议栈, 通过localhost就可以访问
2) 不同pod之间通讯
...在同一台主机上: 有docker0网桥直接转发请求至pod2, 不需要经过flannel
b. 不在同一台主机上: pod的地址是与docker0在同一个网段的....将Pod的ip和所在node的ip关联起来, 通过这个关联让pod之间相互访问
这里说的比较简单, 实际过程如上面, 比这个要复杂的多
3) pod到Service的网络
目前, 基于性能考虑...pod向外网发送请求, 查找路由表, 转发数据包到宿主机网卡, 宿主机网卡完成路由选择后, iptables执行Masquerade, 把源IP更改为宿主网卡的ip,然后向外网服务器发请求.