AnyBackup
性能爆表
AnyShare
如何购买
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询
AnyDATA

爱数博客

全部 AnyBackup AnyShare AnyRobot AnyDATA AnyFabric

Proton CS基础组件之Calico插件解读

2023-12-25 688 0

什么是 Calico?

Calico 是一个开源网络和网络策略引擎,用于容器、虚拟机、以及本地主机工作负载。它以其简单性、高性能和灵活性而闻名,特别适用于大型、动态环境。
 

Calico架构



 

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 的关键功能

  • 网络隔离与安全:Calico 提供高级网络策略,实现精细化的访问控制,确保工作负载间的安全隔离。
  • 跨主机通信:支持跨不同节点的容器通信,无需额外的网络配置。
  • 可伸缩性:适应大规模集群,支持数以千计的节点。


Calico工作原理

网络模型

Calico 使用的是一个纯三层(Layer 3)网络模型,与传统的二层(Layer 2)网络或基于隧道的覆盖网络(Overlay Network)有显著区别。在这种模型中,每个容器(或 Pod)被分配一个独立的 IP 地址,该地址在整个网络中是唯一的。这种方式简化了路由过程,提高了网络性能。

IP 地址管理(IPAM)

Calico 通过其 IPAM 功能为每个 Pod 分配 IP 地址。这种机制允许更细粒度的控制,例如,可以根据需要将特定的 IP 地址范围分配给特定的 Kubernetes 命名空间。

数据平面

Calico 在数据平面上使用 Border Gateway Protocol (BGP) 来管理路由。BGP 允许 Calico 动态地学习和分发 Pod 的路由,使得各个节点之间的 Pod 能够直接通信,而无需经过中央网络设备或节点。这种直接路由方法减少了延迟,并提高了网络效率。

网络策略执行

Calico 利用 iptables 和 ebtables 等内核工具来执行其网络策略。它可以定义精细的网络策略规则,例如允许或拒绝来自特定源的流量,或仅允许特定服务之间的通信。这些策略不仅增强了安全性,还提供了操作的灵活性。

与 Kubernetes 的集成

Calico 作为一个 CNI(Container Network Interface)插件,可以无缝集成到 Kubernetes 环境中。在 Kubernetes 集群中部署 Calico 后,它会自动处理 Pod 网络接口的创建、配置和销毁。

跨主机通信

由于 Calico 使用 BGP 协议,因此它能够有效地处理跨主机(即跨节点)通信。每个节点上的 Calico 代理会宣告其上 Pod 的 IP 地址和相应的路由信息,确保整个集群中的 Pods 可以彼此通信。

性能优化

Calico 通过减少网络跳数和直接使用 IP 路由来优化网络性能。这种方式对于大规模部署尤其重要,因为它减少了网络拥塞和相关的性能瓶颈。

 

Calico的两种网络模式

IPIP
从字面来理解,就是把一个IP数据包又套在一个IP包里,即把 IP 层封装到 IP 层的一个 tunnel。它的作用其实基本上就相当于一个基于IP层的网桥!一般来说,普通的网桥是基于mac层的,根本不需 IP,而这个 ipip 则是通过两端的路由做一个 tunnel,把两个本来不通的网络通过点对点连接起来。

BGP
边界网关协议(Border Gateway Protocol, BGP)是互联网上一个核心的去中心化自治路由协议。它通过维护IP路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议。BGP不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。因此,它更适合被称为矢量性协议,而不是路由协议。BGP,通俗的讲就是讲接入到机房的多条线路(如电信、联通、移动等)融合为一体,实现多线单IP,BGP 机房的优点:服务器只需要设置一个IP地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会占用服务器的任何系统。
 

Calico 与两个其他流行网络插件 Flannel 和 Weave 的对比

特性 / 插件 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 在这方面的支持有限。

请就本文对您的益处进行评级:

标签

产品技术

相关文章

热门标签

版本发布 在线教学

拨打400

免费销售咨询热线

400 8216055

7*24 小时免费售后服务热线

400 880 1569

购买咨询

购买咨询

售后服务

售后服务

返回顶部

为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号