跳转至

CNI 方案比较和常见问题

与 Spiderpool + IPVlan 的比较

四种模式与 Spiderpool + IPVlan 的异同点:

网络模式 是否支持自建集群 Pod 的 IP 是否为 Underlay IP 双栈支持 固定 Pod IP Pod QoS Network Policy LoadBalancer 服务支持 Pod 多网卡 成本 其他
Terway VPC 支持 ❌ ✅ ❌ ✅ ✅ ✅ ❌ 最低,对 ECS 规格无要求,对弹性网卡和辅助IP的数量不作要求 需要依赖 CCM 组件发布 VPC 路由
Terway ENI 支持 ✅ ✅ ❌ ✅ ✅ 不支持设置externalTrafficPolicy 为Local ❌ 最高,可部署 Pod 数量取决于 ECS 实例的弹性网卡数量 性能最好, 成本最高
Terway ENIIP 不支持, 只 ACK 集群支持 ✅ ✅ ❌ ✅ ✅ ✅ ❌ 较低,可部署 Pod 数量 = (ECS 实例的弹性网卡数量 - 1) * 每个 ENI 支持的辅助 IP 数量 支持 veth 和 IPVlan 模式,IPVlan 模式内核版本大于 v4.2
Terway ENIIP-Trunking 不支持, 只 ACK 集群支持 ✅ ✅ ✅ ✅ ✅ ✅ ❌ 较低,可部署 Pod 数量 = (ECS 实例的弹性网卡数量 - 1) * 每个 ENI 支持的辅助 IP 数量 正在公测中
Spiderpool + IPVlan 支持 ✅ ✅ ✅ ✅ ✅ ✅ ✅ 较低,可部署 Pod 数量 = (ECS 实例的弹性网卡数量 - 1) * 每个 ENI 支持的辅助 IP 数量 需要将 Spiderpool IP 池与 ENI 的辅助 IP 对应
Calico 支持 ✅ ✅ ✅ ✅ ✅ ✅ ❌ 最低,对 ECS 规格无要求,对弹性网卡和辅助 IP 的数量不作要求 隧道模式不依赖 CCM,非隧道模式依赖
Cilium 支持 ✅ ✅ ❌ ✅ ✅ ✅ ❌ 最低,对 ECS 规格无要求,对弹性网卡和辅助 IP 的数量不作要求 隧道模式不依赖 CCM,非隧道模式依赖

常见问题

  1. 如何查看 ECS 不同实例规格支持的 ENI 数量及 ENI 上支持的辅助 IP 数量?

    不同规格支持数量不同,可参考 实例规格族 获取详细信息。

  2. ENIIP 模式下,Pod 的部署密度如何?

    可部署 Pod 数量 = ( ECS 实例 ENI 数量 - 1 ) * 每个 ENI 支持的最大辅助 IP 数量。

  3. Pod 独占 ENI 网卡时,有哪些通信问题?

    此模式下,Pod 拥有最佳性能。但对于设置 externalTrafficPolicy 为 Local 的 LoadBalancer/NodePort Service,会存在因来回路径不一致, 导致无法访问的问题。

  4. 阿里云自建集群是否支持运行 Calico 和 Cilium 作为 CNI 插件?

    阿里云原生支持 Flannel CNI 插件,除此之外也支持 Calico 和 Cilium 运行。

    • 对于 Calico:

      支持隧道模式(VXLAN or IPIP) 和路由模式。隧道模式下 Pod 之间的通信不依赖 CCM 组件,但 LoadBalancer Service 依赖 CCM 实现。路由模式 下需要切换 IPAM 为 host-local 或 Spiderpool。详见 阿里云运行 Calico

    • 对于 Cilium:

      支持 tunnel 和 native 模式,tunnel 模式 Pod 通信不依赖 CCM 组件,但 LoadBalancer Service 依赖 CCM 实现。native 模式 需要切换 Cilium 的 IPM mode 为 kubernetes, 详见 阿里云运行 Cilium

评论