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

10.229.0.0/16 SVC IP
10.249.0.0/16 POD IP

跨主机的POD间通信

此处以dns为例

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

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

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

从host到跨主机pod的通信


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

流量从falnnel网卡出,只能在flannel网卡抓到包

posted on   yangras  阅读(873)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示