ovs流表刷在br-int网桥上。
容器网卡eth0另一端在ovs br-int网桥上。
容器网关gw在br-int网桥上,ip地址是从pod网段中分配。
br-int网桥上有vxlan类型ovs端口,用于封包和解包。
同节点
主机->容器
路由判断->
iptables OUTPUT->iptables POSTROUTING->
容器网关->容器网卡
ping 容器IP通,主机网卡上抓不到包,因为根据路由判断后走容器网关,不经过主机网卡。
ping -I 主机网卡 容器IP不通,因为根据路由判断,无法走到容器网关。
容器->主机
容器网卡->路由判断->容器网关->
iptables PREROUTING->路由判断->iptables INPUT
主机网卡上抓不到包,原因是作为网桥端口的容器网关与宿主机网卡处于同一个内核协议栈,不需要转发到主机网卡即可响应。
配置hostgw后,外部主机访问k8s集群内部主机容器网关,容器网关上也抓不到包,原因相同。
容器->容器
容器网卡a->br_int->容器网卡b
跨节点
主机->容器
容器网卡a->路由判断->
iptables OUTPUT->iptables POSTROUTING->
容器网关->br_int->vxlan->
iptables OUTPUT->iptables POSTROUTING->
同节点主机网卡->跨节点主机网->
iptables PREROUTING->路由判断->iptables INPUT->
vxlan->br_int->容器网卡b
ping -I 主机网卡 容器IP不通,因为根据路由判断后无法走到容器网关。
容器->主机
iptables SNAT,源IP是容器IP,目的IP不是该容器网络网段,走MASQUERADE。
容器网卡->路由判断->容器网关->
iptables PREROUTING->路由判断->iptables FORWARD->iptables POSTROUTING(SNAT)->
同节点主机网卡->跨节点主机网卡
容器->容器
容器网卡->br_int->vxlan->
iptables OUTPUT->iptables POSTROUTING->
同节点主机网卡->跨节点主机网卡->
iptables PREROUTING->路由判断->iptables INPUT->
br_int->跨节点容器网卡