点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
Calico是一个开源的网络和安全解决方案,基于Kubernetes的网络插件模型,用于构建和配置网络以支持容器化应用,为容器和虚拟机工作负载提供一个安全的网络连接。
Calico的架构设计考虑了性能、扩展性和安全性等方面,通过使用BGP协议、网络策略和Linux内核等技术,为用户提供了一个强大而灵活的CNI插件解决方案。
Calico的工作原理主要基于“纯三层”架构方法,旨在提供高效的网络和安全服务。
网络命名空间 Calico将每个容器或虚拟机放置在一个独立的网络命名空间中,这样可以避免不同容器之间的网络冲突。每个命名空间都有自己的IP地址和路由表。 BGP路由 Calico使用BGP(边界网关协议)来路由数据包。BGP是一种标准的路由协议,用于在自治系统之间交换路由信息。通过BGP,Calico能够在主机之间动态地学习和传播路由信息,确保跨主机的容器网络通信。 Felix代理 在每个计算节点上运行着一个名为Felix的轻量级代理。Felix负责监听ECTD(可能是指etcd,一个分布式键值存储系统)中心的存储,从中获取事件,例如用户在该节点上添加了一个IP地址或分配了一个容器等。基于这些信息,Felix会在该节点上创建容器,并配置相应的网络设置,如网卡、IP地址和MAC地址。 IPTables规则 由于TCP/IP协议栈提供了一整套的防火墙规则,因此Calico可以通过IPTables规则实现复杂的网络隔离逻辑。这意味着管理员可以定义精细的网络策略,控制容器之间的通信和数据流。 服务发现和负载均衡 Calico与Kubernetes的Service API集成,为服务提供自动的服务发现和负载均衡功能。当服务的容器分布在多个节点上时,Calico会负责将流量正确地分发到各个容器,确保服务的可用性和性能。

节点代理(Felix) 在每个计算节点上运行的一个轻量级代理,负责在该节点上执行网络策略和路由功能。它通过BGP协议与其他节点和路由器通信,以同步路由信息。 数据平面(Data Plane) 这是转发数据包的部分,主要由虚拟路由器(vRouter)实现。每个vRouter负责在数据平面进行数据包的转发,通过BGP协议将可达信息(路由)传播到其他节点。 控制平面(Control Plane) 负责管理和配置网络策略、路由等参数。它与数据平面协同工作,确保网络按照预期的方式运行。 策略引擎(Policy Engine) 在主机网络层和服务网格层执行相同的策略模型,保护基础设施不受工作负载影响。
BGP协议 用于在节点之间传播路由信息,确保容器可以在不同的主机之间进行通信。 网络策略 定义容器之间的网络访问规则,通过Kubernetes API对象实现。 服务发现和负载均衡 与Kubernetes的Service API集成,自动为服务提供负载均衡。 存储网络集成 支持与存储网络的集成,使容器可以直接访问持久存储。 Linux内核 使用Linux内核实现高效的vRouter,负责数据转发。

网络策略 Calico支持网络策略,这是一种Kubernetes API对象,用于定义容器之间的网络访问规则。通过使用Calico,用户可以定义精细的网络访问控制,以满足不同的安全和隔离需求。 跨主机网络 Calico使用BGP协议在主机之间进行路由,创建跨主机的容器网络。这使得容器可以在不同的主机之间进行通信,而无需通过外部路由器或交换机。 服务发现和负载均衡 Calico与Kubernetes的Service API集成,自动为服务提供负载均衡。当一个服务的容器分布在多个节点上时,Calico负责将流量正确地分发到各个容器。 集成存储网络 Calico支持与存储网络的集成,允许容器直接访问持久存储,而无需通过外部存储网络。 IPv6支持 Calico不仅支持IPv4,还支持IPv6地址空间,为用户提供了更大的灵活性。 性能优化 Calico的设计旨在优化性能,通过使用高效的BGP协议和避免不必要的封装和解封装操作,确保在大规模部署中保持良好的性能。 集成第三方安全解决方案 Calico可以与第三方安全解决方案集成,提供更高级别的安全性。
资源优化 Calico通过使用三层路由方法,完全抑制了二层广播,减少了资源开销,从而实现了更优的资源利用。 可扩展性 Calico的设计与Internet类似,具有天然的可扩展性,可以轻松地扩展到大规模的Kubernetes集群。 简单易用 由于没有使用隧道,Calico简化了网络路径,减少了配置,使得在主机上更容易进行调试。 依赖性少 Calico仅依赖三层路由可达,具有较少的依赖性,使其能够适配各种环境场景,包括VM、Container、白盒等。
配置管理 Calico的配置相对复杂,需要仔细规划和管理网络策略、路由等配置。 安全考虑 由于Calico支持网络策略,因此需要确保正确配置和管理策略以保护敏感数据和资源。 集成兼容性 在使用Calico之前,需要确保与Kubernetes集群的其他组件(如存储、监控等)的兼容性。 性能优化 虽然Calico具有性能优化的设计,但在大规模部署中仍需注意性能监控和调优。

本文作者:李 林(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




