[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ]
Kubernetes 需要使用网络插件来提供集群内部和集群外部的网络通信,并提供可扩展和高性能的网络架构,其核心概念如下:
核心概念
关键组件
并且 Kubernetes 中网络插件的功能是通过 CNI(容器网络接口)插件来管理网络接口的配置,所以 Kubernetes 集群中的网络插件需要满足 CNI 标准规范。
什么是 CNI?
CNI(容器网络接口)是一个云原生计算基金会项目,它包含了一些规范和库,用于编写在 Linux 容器中配置网络接口的一系列插件。CNI 只关注容器的网络连接,并在容器被删除时移除所分配的资源。Kubernetes 使用 CNI 作为网络提供商和 Kubernetes Pod 网络之间的接口, 有关更多信息,可访问 CNI GitHub 项目。
CNI 使用了哪些网络模型?
CNI 网络插件使用封装网络模型(例如 Virtual Extensible Lan,缩写是 VXLAN)或非封装网络模型(例如 Border Gateway Protocol,缩写是 BGP)来实现网络结构。
简单来说,这种网络模型在 Kubernetes worker 之间生成了一种扩展网桥,其中连接了 pod, 如果你偏向使用扩展 L2 网桥,则可以选择此网络模型。使用此种网络模型的 CNI 网络插件包括 Flannel、Canal、Weave 和 Cilium。注:默认情况下,Calico 不会使用此模型,但你可以对其进行配置。
weiyigeek.top-封装网络模型图
简而言之,这种网络模型在 Kubernetes worker 之间生成了一种扩展网络路由器,提供了如何连接 Pod 的信息, 如果你偏向使用 L3 网络,则可以选择此网络模型。此模型在操作系统级别为 Kubernetes Worker 动态更新路由。对延迟较不敏感。使用此种网络模型的 CNI 网络插件包括 Calico 和 Cilium,注:Cilium 可以使用此模型进行配置,即使这不是默认模式。
weiyigeek.top-非封装网络模型图
Kubernetest 中的 CNI 网络插件
在生产学习环境中,通常会使用以下网络插件,前面说过在K8S集群中的网络插件需要满足CNI(容器网络接口)
标准规范,因此可以互换使用。
常用
)。weiyigeek.top-Flannel 模型通信图
常用
)。weiyigeek.top-Calico 模型通信图
eBPF (Extended Berkeley Packet Filter)
技术的网络插件,它使用 Linux 内核的动态插件来提供网络功能,如路由、负载均衡、安全性和网络策略等(常用
)。weiyigeek.top-Cilium 模型架构图图
OVS (Open vSwitch)
技术的网络插件,它提供了容器之间的通信、网络策略和安全性等功能,还支持多种网络拓扑结构。weiyigeek.top-Antrea 模型通信图
OVN/OVS
的网络插件,提供子网、静态 IP、ACL、QoS 等高级功能。weiyigeek.top-Kube-OVN 模型通信图
下表总结了不同 CNI 插件的 GitHub 指标,让你了解当前Kubernetes中最受欢迎的四种 CNI 网络插件。
提供商 | 项目介绍 | 项目地址 | Stars |
---|---|---|---|
Flannel | Flannel 是一种简单易行的方法来配置为Kubernetes设计的第3层网络结构。 | https://github.com/flannel-io/flannel | 8.7k |
Calico | Calico 由 Tigera 创建和维护,是一个开源项目,是容器网络和安全解决方案。 | https://github.com/projectcalico/calico | 5.8k |
Cilium | Cilium 是一种网络、可观察性和安全性解决方案,具有基于 eBPF 的 数据平面,其提供了一个简单的平面第 3 层网络,具有跨度能力 处于本机路由或覆盖模式的多个集群。 | https://github.com/cilium/cilium | 19.5k |
Antrea | Antrea 是一个Kubernetes网络解决方案,它在第3/4层运行,为Kubernetes集群提供网络和安全服务,利用Open vSwitch作为网络数据平面。 | https://github.com/antrea-io/antrea | 1.6k |
Kube-OVN | Kube-OVN 是 CNCF 沙箱级别的项目 ,将基于 OVN 的网络虚拟化与 Kubernetes 集成。 | https://github.com/kubeovn/kube-ovn | 1.9k |
下面是 Flannel、Calico 和 Cilium 最常用的三个网络插件的功能、特点及应用场景的对比表格:
特性/功能 | Flannel | Calico | Cilium |
---|---|---|---|
基本原理 | 使用覆盖网络创建平面网络 | 使用BGP路由和eBPF进行高效数据包转发 | 使用eBPF进行高性能网络和安全管理 |
网络模式 | VXLAN、Host-Gateway、UDP、IPIP、AWS VPC | 纯IP、IPIP、VXLAN、BGP、WireGuard、AWS VPC、GCE | Direct Routing、VXLAN、Geneve、IPIP、Egress Gateway、Cluster Mesh、Host-Reachable Services、Transparent Encryption |
性能 | 较低 | 高 | 最高 |
复杂性 | 简单 | 中等 | 复杂 |
网络策略 | 不支持 | 支持 | 支持 |
安全性 | 基本 | 高 | 最高 |
跨子网通信 | 支持(VXLAN、IPIP) | 支持 | 支持 |
加密 | 不支持 | 支持(WireGuard) | 支持(IPsec、WireGuard) |
多集群支持 | 不支持 | 支持(使用BGP) | 支持(Cluster Mesh) |
可扩展性 | 中等 | 高 | 高 |
监控和可视化 | 基本 | 高 | 高 |
容器网络接口(CNI) | 支持 | 支持 | 支持 |
应用场景 | 简单的Kubernetes集群,小规模集群 | 中大型集群,需高性能和灵活网络策略 | 需要高性能、高安全性和可扩展性的大型集群 |
安装配置 | 简单,适用于入门用户 | 中等,适用于有一定经验的用户 | 复杂,适用于高级用户和大规模部署 |
支持的Kubernetes版本 | 广泛支持 | 广泛支持 | 广泛支持 |
调试和故障排除 | 简单 | 较复杂 | 复杂 |
社区支持 | 活跃 | 非常活跃 | 非常活跃 |
商业支持 | 基本 | 提供 | 提供 |
应用场景:
若文章写得不错,不要吝惜手中关注、转发,点赞、在看,有疑问的伙伴,在评论区留言你想法哟💬
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有