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可以跨命名空间应用,适合定义集群级别的安全规则。
NetworkSet和GlobalNetworkSet允许定义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与云原生生态系统紧密集成:
与Istio、Linkerd等服务网格配合,提供网络层安全加固。
支持Prometheus指标导出,便于监控和告警。
与Helm、Operator等部署工具集成,简化安装和升级流程。
相关产品
Tigera公司基于开源Calico提供商业产品:
Calico Enterprise是本地部署的企业版,增加了合规报告、威胁检测、多集群管理等高级功能。
Calico Cloud是SaaS形态的托管服务,提供开箱即用的企业级网络安全能力。