Calico

来自云上百科


Calico是一款开源的容器网络解决方案,为Kubernetes等容器编排平台提供网络连接和网络安全功能,是目前应用最广泛的CNI插件之一。

概述

Calico由Tigera公司开发和维护,最初于2016年发布。作为一个纯三层(Layer 3)网络解决方案,Calico摒弃了传统的覆盖网络(Overlay Network)架构,直接利用标准的IP路由协议实现容器间通信。这种设计使其在性能、可扩展性和故障排查方面具有显著优势。

Calico不仅提供基础的网络连接功能,还内置了强大的网络策略引擎,支持Kubernetes原生网络策略以及更高级的Calico网络策略,使管理员能够对容器间的流量进行精细化控制。目前,Calico已被广泛部署于生产环境,支撑着从小型集群到数千节点规模的大型基础设施。

发展历史

项目起源

Calico项目起源于Metaswitch Networks公司的内部研究。2014年前后,随着容器技术的兴起,传统的虚拟网络方案在容器场景下暴露出性能瓶颈和复杂性问题。Metaswitch的工程师团队开始探索一种更简洁高效的网络方案,最终催生了Calico项目。

2016年,Calico正式开源发布,迅速获得了云原生社区的关注。同年,Tigera公司成立,专注于Calico的商业化运营和持续开发。

版本演进

Calico经历了多个重要版本迭代。早期版本主要聚焦于基础网络功能,随后逐步增强了网络策略、加密通信、多集群支持等企业级特性。2019年,Calico引入了eBPF数据平面,大幅提升了网络处理性能。2021年后,项目进一步整合了服务网格功能,推出了Calico Cloud等商业产品。

核心架构

组件构成

Calico的架构由以下核心组件构成:

Felix是运行在每个节点上的守护进程,负责编程主机的路由表和访问控制列表(ACL),实现网络策略的实际执行。Felix持续监听数据存储中的策略变化,并将其转化为底层网络配置。

BIRD(BIRD Internet Routing Daemon)是一个开源的路由软件,Calico利用它在节点间分发路由信息。通过BGP协议,BIRD确保每个节点都知道如何到达集群中的其他Pod。

confd是一个轻量级配置管理工具,负责监听数据存储的变化并动态更新BIRD的配置文件。

Typha是可选的中间层组件,用于大规模集群场景。它作为数据存储和Felix之间的代理,减少对API服务器的直接连接数,提升系统可扩展性。

数据平面

Calico支持多种数据平面实现:

标准Linux数据平面使用iptables或nftables处理网络流量,兼容性好,适用于大多数场景。

eBPF数据平面利用Linux内核的扩展伯克利包过滤器技术,绕过iptables直接在内核中处理数据包,可显著降低延迟并提高吞吐量。

Windows数据平面支持Windows Server节点,使用Host Networking Service(HNS)实现网络功能。

网络模式

IP-in-IP模式

IP-in-IP是Calico的默认网络模式,通过将原始IP数据包封装在另一个IP数据包中实现跨子网通信。这种模式配置简单,适用于大多数云环境和数据中心网络。

VXLAN模式

VXLAN模式使用UDP封装实现二层网络扩展,适用于不支持BGP或IP-in-IP的网络环境。虽然封装开销略高,但兼容性更好。

直接路由模式

在支持BGP的网络环境中,Calico可以配置为直接路由模式,完全不使用封装。这种模式性能最优,但需要底层网络基础设施的配合。

网络策略

Kubernetes网络策略

Calico完整实现了Kubernetes原生的NetworkPolicy API,支持基于命名空间、标签选择器、端口和协议的入站(Ingress)和出站(Egress)流量控制。

Calico网络策略

Calico还提供了扩展的网络策略资源,包括:

GlobalNetworkPolicy可以跨命名空间应用,适合定义集群级别的安全规则。

NetworkSetGlobalNetworkSet允许定义IP地址集合,便于管理外部服务的访问控制。

HostEndpoint支持对主机网络接口应用策略,保护节点本身的网络安全。

这些扩展策略支持更丰富的匹配条件,如应用层协议、HTTP方法、服务账户等,满足企业级安全需求。

应用场景

公有云部署

Calico与主流公有云平台深度集成。在AWS的EKS、GCP的GKE、Azure的AKS等托管Kubernetes服务中,Calico常作为网络策略引擎与云厂商的CNI配合使用。

私有云与本地部署

在私有数据中心,Calico可以与现有的BGP路由基础设施集成,实现容器网络与传统网络的无缝对接。其对裸金属服务器的良好支持使其成为本地Kubernetes部署的首选方案。

多集群与混合云

Calico Enterprise和Calico Cloud提供了多集群联邦功能,支持跨集群的统一网络策略管理和服务发现,适用于混合云和多云架构。

性能特点

Calico的纯三层架构避免了覆盖网络的封装开销,在网络延迟和吞吐量方面表现优异。根据社区基准测试,启用eBPF数据平面后,Calico的网络性能可接近裸机水平。

在可扩展性方面,借助Typha组件,Calico已在生产环境中验证了支持超过5000节点的能力。其增量更新机制确保策略变更能够快速生效,不影响现有连接。

生态系统

Calico与云原生生态系统紧密集成:

IstioLinkerd等服务网格配合,提供网络层安全加固。

支持Prometheus指标导出,便于监控和告警。

HelmOperator等部署工具集成,简化安装和升级流程。

相关产品

Tigera公司基于开源Calico提供商业产品:

Calico Enterprise是本地部署的企业版,增加了合规报告、威胁检测、多集群管理等高级功能。

Calico Cloud是SaaS形态的托管服务,提供开箱即用的企业级网络安全能力。

参见