3. Kubernetes 网络模型:Pod网络、Service网络、NetworkPolicy与Calico的集成
在Kubernetes集群中,网络模型是容器编排的基石。理解Pod网络、Service网络以及NetworkPolicy的协作关系,是进行容量规划和网络接口镜像拉取测试的前提。Calico作为业界领先的CNI插件,通过其高效的网络策略引擎和数据路径,将这三层网络模型紧密集成,为集群提供安全、可观测的网络基础设施。
3.1 Kubernetes三层网络模型概述
Kubernetes网络模型定义了三个核心抽象层,每一层解决不同的通信问题:
| 网络层 | 通信范围 | 核心组件 | IP地址来源 | 主要用途 |
|---|---|---|---|---|
| Pod网络 | 集群内所有Pod之间 | CNI插件(如Calico) | Calico IPAM | 容器间直接通信,无需NAT |
| Service网络 | 集群内客户端到服务 | kube-proxy + iptables/IPVS | Service CIDR(虚拟IP) | 提供稳定的服务发现与负载均衡 |
| NetworkPolicy | Pod间访问控制 | Calico Policy Engine | 基于标签选择器 | 定义微隔离规则,控制流量进出 |
3.2 Pod网络:Calico的BGP与IPIP模式
Pod网络是Kubernetes网络模型的基础。Calico通过BGP(Border Gateway Protocol)或IPIP(IP in IP)隧道实现跨节点Pod通信。在容量规划测试中,理解这两种数据路径对网络接口镜像拉取性能的影响至关重要。
- BGP模式(Direct Routing):Calico在每个节点上运行BGP客户端(如Bird),与ToR交换机或节点间建立BGP对等体。Pod IP路由直接通过BGP通告,数据包无需封装,性能接近原生网络。
- IPIP模式(Overlay):当节点不在同一二层网络时,Calico使用IPIP隧道封装原始数据包。这会增加额外的包头开销(约20字节),并可能影响MTU和吞吐量。
- VXLAN模式:Calico也支持VXLAN作为Overlay选项,提供更大的二层域扩展,但封装开销更大(50字节),对CPU负载有一定影响。
3.3 Service网络:kube-proxy与Calico的协同
Service网络为Pod提供稳定的虚拟IP(ClusterIP)和负载均衡。kube-proxy负责将发往Service IP的流量转发到后端Pod。Calico虽然不直接参与Service IP的分配,但其网络策略可以精细控制Service流量的进出。
- ClusterIP:默认Service类型,仅在集群内部可达。kube-proxy通过iptables或IPVS规则将ClusterIP DNAT到Pod IP。
- NodePort:在每个节点上开放一个静态端口,外部流量通过NodePort进入,再由kube-proxy转发到Pod。
- LoadBalancer:云厂商或自建负载均衡器将外部流量分发到NodePort或直接到Pod。
3.4 NetworkPolicy:Calico的微隔离引擎
NetworkPolicy是Kubernetes原生的网络访问控制机制。Calico通过其强大的策略引擎,支持比原生NetworkPolicy更丰富的规则,包括:
| 特性 | Kubernetes原生NetworkPolicy | Calico NetworkPolicy |
|---|---|---|
| 规则范围 | 仅支持Pod选择器 | 支持Pod、Namespace、Node、IP CIDR选择器 |
| 动作 | 仅允许(Allow) | 允许(Allow)、拒绝(Deny)、日志(Log) |
| 规则顺序 | OR逻辑(任意规则匹配即允许) | 优先级排序,支持显式拒绝 |
| 服务账户 | 不支持 | 支持基于Kubernetes ServiceAccount的规则 |
| 性能优化 | 依赖kube-proxy/iptables | 使用eBPF或iptables,支持大规模集群 |
calicoctl get networkpolicy 检查当前生效的策略。
3.5 Calico集成架构:三层模型的统一控制面
Calico通过其控制面组件(如 Felix、BIRD、confd)将Pod网络、Service网络和NetworkPolicy统一管理。下图展示了Calico如何将这三层模型集成到Kubernetes集群中:
3.6 容量规划视角:三层模型的资源消耗
在进行容量规划驱动的镜像拉取测试时,需要关注三层网络模型对节点资源的消耗:
- Pod网络:Calico的BGP会话数、路由表大小、IPIP隧道数。每个节点维护的路由条目数随Pod数量线性增长。
- Service网络:kube-proxy的iptables规则数或IPVS连接表大小。Service数量增加会导致规则膨胀,影响包处理延迟。
- NetworkPolicy:策略规则数直接影响iptables链长度。Calico的eBPF模式可显著降低规则匹配开销。
- 节点CPU:Calico Felix和kube-proxy的CPU使用率。
- 网络吞吐量:Pod网络接口的带宽和丢包率。
- 连接跟踪:conntrack表大小和溢出情况。
- 策略命中率:NetworkPolicy规则匹配次数和拒绝次数。
3.7 小结
Kubernetes网络模型中的Pod网络、Service网络和NetworkPolicy通过Calico实现了紧密集成。Pod网络提供底层通信能力,Service网络提供稳定的服务抽象,NetworkPolicy提供安全访问控制。在容量规划驱动的Calico网络接口镜像拉取测试中,理解这三层模型的协作机制和资源消耗模式,是准确评估集群性能和可扩展性的关键。