Flannel
    Flannel作为一个二进制文件的方式部署在Node上,主要实现两个功能:

    • 为每个node分配subnet,容器将自动从该子网中获取IP地址
    • 当有新node加入到网络中,为每个node增加路由配置

    image.png

    Calico

    概念**
    Calico创建和管理一个扁平的三层网络(不需要overlay),每个容器会分配一个可路由的IP。由于通信时不需要解包和封包,网络性能损耗小,易于排查,且易于水平扩展。
    小规模部署时可以通过BGP client直接互联,大规模下可通过指定的BGP Route Reflector来完成,这样保证所有的数据流量都是通过IP路由的方式完成互联的。
    Calico基于iptables还提供了丰富而灵活的网络Policy,保证通过各个节点上的ACL来提供Workload的多租户隔离、安全组以及其他可达性限制等功能。

    calico架构
    image.png
    Calico主要由Felix、etcd、BGP client、BGP Route Reflector组成。

    • Etcd:负责存储网络信息
    • BGP client:负责将Felix配置的路由信息分发到其他节点
    • Felix:Calico Agent,每个节点都需要运行,主要负责配置路由、配置ACLs、报告状态
    • BGP Route Reflector:大规模部署时需要用到,作为BGP client的中心连接点,可以避免每个节点互联

    Cilium
    具备 API 感知的网络和安全性管理的开源软件。
    该软件用于透明地保护使用 Linux 容器管理平台(如 Docker 和 Kubernetes)部署的应用程序服务之间的网络连接。
    Cilium 的基础是一种名为 BPF 的新 Linux 内核技术,它可以在 Linux 本身动态插入强大的安全可见性和控制逻辑。由于 BPF 在 Linux 内核中运行,因此可以应用和更新 Cilium 安全策略,而无需对应用程序代码或容器配置进行任何更改。

    image.png
    Cilium 是位于 Linux kernel 与容器编排系统的中间层。向上可以为容器配置网络,向下可以向 Linux 内核生成 BPF 程序来控制容器的安全性和转发行为。
    image.png