-
产品及方案 产品及方案
-
数据驱动型组织通过体系化的方法构建全域数据能力,实现数据驱动运营,重塑组织生产力
- 行业方案
- 典型方案
- 产品
-
数据驱动型组织
- 服务与支持
- 社区
- 合作伙伴
- 关于爱数
请选择咨询类型
扫码关注
爱数技术支持中心公众号
我们将在 24 小时之内联系你。
Calico 是一个开源网络和网络策略引擎,用于容器、虚拟机、以及本地主机工作负载。它以其简单性、高性能和灵活性而闻名,特别适用于大型、动态环境。
Felix:calico的核心组件,运行在每个节点上。主要的功能有接口管理、路由规则、ACL规则和状态报告,Felix会监听ECTD中心的存储,从它获取事件,比如说用户在这台机器上加了一个IP,或者是创建了一个容器等。用户创建pod后,Felix负责将其网卡、IP、MAC都设置好,然后在内核的路由表里面写一条,注明这个IP应该到这张网卡。同样如果用户制定了隔离策略,Felix同样会将该策略创建到ACL中,以实现隔离。
etcd:分布式键值存储,主要负责网络元数据一致性,确保Calico网络状态的准确性,可以与kubernetes共用;
BGP Client(BIRD):Calico 为每一台 Host 部署一个 BGP Client,它的作用是将Felix的路由信息读入内核,并通过BGP协议在集群中分发。当Felix将路由插入到Linux内核FIB中时,BGP客户端将获取这些路由并将它们分发到部署中的其他节点。这可以确保在部署时有效地路由流量
BGP Router Reflector:大型网络仅仅使用 BGP client 形成 mesh 全网互联的方案就会导致规模限制,所有节点需要 N^2 个连接,为了解决这个规模问题,可以采用 BGP 的 Router Reflector 的方法,使所有 BGP Client 仅与特定 RR 节点互联并做路由同步,从而大大减少连接数
Calicoctl:calico 命令行管理工具
由于Calico是一种纯三层的实现,因此可以避免与二层方案相关的数据包封装的操作,中间没有任何的NAT,没有任何的overlay,所以它的转发效率可能是所有方案中最高的,因为它的包直接走原生TCP/IP的协议栈,它的隔离也因为这个栈而变得好做。因为TCP/IP的协议栈提供了一整套的防火墙的规则,所以它可以通过IPTABLES的规则达到比较复杂的隔离逻辑。
Calico 使用的是一个纯三层(Layer 3)网络模型,与传统的二层(Layer 2)网络或基于隧道的覆盖网络(Overlay Network)有显著区别。在这种模型中,每个容器(或 Pod)被分配一个独立的 IP 地址,该地址在整个网络中是唯一的。这种方式简化了路由过程,提高了网络性能。
Calico 通过其 IPAM 功能为每个 Pod 分配 IP 地址。这种机制允许更细粒度的控制,例如,可以根据需要将特定的 IP 地址范围分配给特定的 Kubernetes 命名空间。
Calico 在数据平面上使用 Border Gateway Protocol (BGP) 来管理路由。BGP 允许 Calico 动态地学习和分发 Pod 的路由,使得各个节点之间的 Pod 能够直接通信,而无需经过中央网络设备或节点。这种直接路由方法减少了延迟,并提高了网络效率。
Calico 利用 iptables 和 ebtables 等内核工具来执行其网络策略。它可以定义精细的网络策略规则,例如允许或拒绝来自特定源的流量,或仅允许特定服务之间的通信。这些策略不仅增强了安全性,还提供了操作的灵活性。
Calico 作为一个 CNI(Container Network Interface)插件,可以无缝集成到 Kubernetes 环境中。在 Kubernetes 集群中部署 Calico 后,它会自动处理 Pod 网络接口的创建、配置和销毁。
由于 Calico 使用 BGP 协议,因此它能够有效地处理跨主机(即跨节点)通信。每个节点上的 Calico 代理会宣告其上 Pod 的 IP 地址和相应的路由信息,确保整个集群中的 Pods 可以彼此通信。
Calico 通过减少网络跳数和直接使用 IP 路由来优化网络性能。这种方式对于大规模部署尤其重要,因为它减少了网络拥塞和相关的性能瓶颈。
特性 / 插件 | Calico | Flannel | Weave |
---|---|---|---|
网络模型 | Layer 3 (基于 IP) | Overlay (使用 VXLAN 或 UDP) | Overlay (使用 VXLAN) |
性能 | 高性能,直接路由 | 中等性能,基于 Overlay | 中等性能,基于 Overlay |
网络策略 | 高级网络策略控制 | 基本网络策略控制 | 中级网络策略控制 |
跨主机通信 | 使用 BGP 协议 | 使用自己的网络协议 | 使用自己的网络协议 |
可扩展性 | 高,适合大规模部署 | 适中,适合中小规模部署 | 适中,适合中小规模部署 |
IP 地址管理 | 独立的 IP 地址管理 | 简单的 IP 地址分配 | 简单的 IP 地址分配 |
安装和配置 | 相对复杂,需要更多的网络知识 | 简单快速 | 简单快速 |
数据平面自定义 | 支持(例如可以集成Istio) | 有限支持 | 有限支持 |
网络模型:Calico 使用基于 IP 的 Layer 3 网络模型,而 Flannel 和 Weave 使用 Overlay 网络模型。Overlay 网络可能会引入额外的封装和解封装过程,可能影响性能。
性能:由于其基于 Layer 3 的路由,Calico 通常提供更高的性能,特别是在大型部署中。
网络策略:Calico 提供了一套丰富的网络策略选项,允许更细粒度的控制,而 Flannel 的网络策略功能较基本,Weave 提供中等级别的网络策略控制。
跨主机通信:Calico 使用 BGP 协议优化跨主机通信,而 Flannel 和 Weave 使用自己的网络协议。
可扩展性:Calico 适合大规模部署,对于需要管理大量节点和复杂网络策略的环境特别有用。
IP 地址管理:Calico 提供独立的 IP 地址管理机制,这在大型网络中非常重要。
安装和配置:Calico 的安装和配置相对复杂,需要更多的网络知识,而 Flannel 和 Weave 更容易设置。
数据平面自定义:Calico 支持数据平面的自定义,如与 Istio 等服务网格集成,而 Flannel 和 Weave 在这方面的支持有限。
请就本文对您的益处进行评级: