Kubernetes 网络数据包抓包分析
环境信息
- Centos7
- Kubernetes 1.21
- flannel 0.20
为观察 Kubernetes 集群中跨主机 POD 之间的网络通信数据流,本文通过 tcpdump 抓包,对数据流向进行记录观察。
本示例中的 Kubernetes 集群由以下节点组成:
节点主机名 | 节点角色 | 节点 IP | 节点上测试 POD IP |
---|---|---|---|
master | master | eth0: 10.150.0.21 | 10.244.0.2 |
worker1 | worker | eth0: 10.150.0.19 | 10.244.1.38 |
worker2 | worker | eth0: 10.150.0.20 | 10.244.2.27 |
Flannel 简介
Kubernetes 系统上 POD 网络的实现依赖于第三方插件,Kubernetes 只负责提供了 CNI(容器网络接口),只要符合 CNI 规则的第三方插件都可以用于为 POD 提供网络实现。而 Flannel 是由 CoreOS 主推的目前比较主流的容器网络解决方案。
Flannel 支持三种不同后端实现,分别是:
- UDP
- VXLAN
- host-gw
UDP 是 Flannel 项目最早支持的一种方式,是性能最差的方式,目前已被废弃。
用的最多的是 VXLAN 和 host-gw 模式的部署。