k8s ipvs+flannel+vxlan模式下的网络

10.229.0.0/16 SVC IP
10.249.0.0/16 POD IP

跨主机的POD间通信

此处以dns为例

k8s  ipvs+flannel+vxlan模式下的网络

从容器出来到cni.0的包,src是pod IP,dst 是svc ip

k8s  ipvs+flannel+vxlan模式下的网络

从flannel.1发的包,dst已经被ipvs模块更换成实际endpoint ip

k8s  ipvs+flannel+vxlan模式下的网络

在eth0上抓的包,dns包已经被打包入 vxlan中。

k8s  ipvs+flannel+vxlan模式下的网络

从host到跨主机pod的通信

k8s  ipvs+flannel+vxlan模式下的网络
nat表的OUTPUT链会把出向的dst为ipset KUBE-CLUSTER-IP,src不为10.249.0.0/16打标记0x4000(即所有不是从pod ip访问svc IP的流量打标)
-A OUTPUT -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A KUBE-SERVICES ! -s 10.249.0.0/16 -m comment --comment "Kubernetes service cluster ip + port for masquerade purpose" -m set --match-set KUBE-CLUSTER-IP dst,dst -j KUBE-MARK-MASQ
-A KUBE-MARK-MASQ -j MARK --set-xmark 0x4000/0x4000
放行打标的流量
-A FORWARD -m comment --comment "kubernetes forwarding rules" -j KUBE-FORWARD
-A KUBE-FORWARD -m comment --comment "kubernetes forwarding rules" -m mark --mark 0x4000/0x4000 -j ACCEPT
对打标的流量作nat,nat之后的ip为flannel网卡的ip地址
-A KUBE-POSTROUTING -m comment --comment "kubernetes service traffic requiring SNAT" -m mark --mark 0x4000/0x4000 -j MASQUERADE
k8s  ipvs+flannel+vxlan模式下的网络
流量从falnnel网卡出,只能在flannel网卡抓到包
k8s  ipvs+flannel+vxlan模式下的网络

k8s ipvs+flannel+vxlan模式下的网络

上一篇:常用的git命令


下一篇:ES6中的Proxy