后续会详细展示其原理并验证下,这里先汇总下,水平比较有限。
Kubernetes 网络模型
Kubernetes 使用一个称为 CNI(Container Network Interface)的接口标准,使其网络实现与具体的网络插件解耦。
Kubernetes 网络模型有以下几个重要的原则:
- 所有 Pod 都在一个扁平的共享网络中:每个 Pod 都有一个唯一的 IP 地址,Pod 之间可以直接通过 IP 地址进行通信,无需进行 NAT。
- Pod 内的容器共享一个网络命名空间:一个 Pod 内的所有容器都能够通过
localhost
相互通信,并且共享同样的网络接口和端口空间。 - Pod 的 IP 是在整个集群范围内可路由的:不仅 Pod 间可以相互通信,节点之间也可以直接访问 Pod,而不需要额外的 NAT 网关。
这样的网络模型给予了 Kubernetes 强大的网络能力,也使得网络插件的开发和集成变得更加灵活。
Kubernetes 网络插件
Kubernetes 网络插件负责实现上述网络模型。根据 CNI 标准,网络插件通过一个预定义的接口与 Kubernetes 交互,使得 Kubernetes 能够与各种不同的网络技术和实现进行集成。以下是一些常见的 Kubernetes 网络插件:
- Calico:Calico 是一个广泛使用的网络和网络策略解决方案,它提供了高度可扩展的网络和丰富的网络策略选项。
- Flannel:Flannel 是一个简单的、易于使用的网络插件,它支持多种网络类型,包括 VXLAN 和 Host-gw。
- Cilium:Cilium 是一个新兴的网络插件,它使用 eBPF 技术来提供网络和安全性能。
- Weave:Weave 是一个简单而强大的网络解决方案,它提供了一个快速的、稳定的网络,并且不需要配置 etcd。
- Kube-router:Kube-router 提供了网络、网络策略和 IPVS/LVS 基于的服务代理。
- Multus:Multus 是一种允许 Kubernetes pods 连接到多个网络的插件。它充当 Kubernetes CNI 插件的 "多路复用器",并支持多个网络接口。
- Romana:Romana 是一个网络和网络策略插件,提供了 Kubernetes 的网络策略实现和 IP 地址管理 (IPAM)。Romana 使用本机云提供商路由来提供网络,无需创建或管理任何隧道。
- Contiv:Contiv 提供了一个统一的网络框架,支持多种网络模型(例如,基于 VLAN 的网络,VXLAN 网络,静态路由等),并提供丰富的网络策略。
- Antrea:Antrea 是一个用于 Kubernetes 的网络插件,基于 Open vSwitch 数据平面。它支持网络策略、负载均衡、流量镜像等功能。
- NSX-T:NSX-T 是 VMware 提供的一个网络虚拟化和安全平台,它提供了一个完全集成的、完全自动化、完全可编程的软件定义网络 (SDN) 解决方案。
- Canal:Canal 实际上就是 Flannel 和 Calico 的结合体,它将 Flannel 的网络功能与 Calico 的网络策略功能结合在一起。
- OpenShift SDN:OpenShift SDN 是 Red Hat OpenShift 平台的默认网络插件。它支持多种网络模型(例如,NetworkPolicy、Multitenant 和 Subnet)和 IP 地址管理 (IPAM)。
- Lyft VPC:Lyft VPC 是 AWS 上的 Kubernetes 网络插件,提供高性能网络解决方案。
- Terway 是阿里云开源的基于专有网络 VPC 的容器网络接口 CNI(Container Network Interface)插件,支持基于 Kubernetes 标准的网络策略来定义容器间的访问策略。您可以通过使用 Terway 网络插件实现 Kubernetes 集群内部的网络互通。Terway IPvlan 模式采用 IPvlan 虚拟化和 eBPF 内核技术实现高性能的 Pod 和 Service 网络。IPvlan 模式主要在 Pod 网络、Service、网络策略(NetworkPolicy)做了性能的优化:
- Pod 的网络直接通过 ENI 网卡的 IPvlan L2 的子接口实现,大大简化了网络在宿主机上的转发流程,让 Pod 的网络性能几乎与宿主机的性能无异,延迟相对传统模式降低 30%。
- Service 的网络采用 eBPF 替换原有的 kube-proxy 模式,不需要经过宿主机上的 iptables 或者 IPVS 转发,在大规模集群中性能几乎无降低,扩展性更优。在大量新建连接和端口复用场景中请求延迟比 IPVS 和 iptables 模式大幅降低。
- Pod 的网络策略(NetworkPolicy)也采用 eBPF 替换掉原有的 iptables 的实现,不需要在宿主机上产生大量的 iptables 规则,降低网络策略对网络性能的影响。
适用场景
- 中间件与微服务
避免了大规模部署时带来的性能衰减,微服务全链路延迟降低。 - 游戏、直播类应用
显著降低网络延迟,多个实例之间的争抢降低。 - 高性能计算
高性能计算会有大量的网络吞吐,IPvlan 模式网络本身带来 CPU 等的开销减少,留出更多的计算资源给业务本身。