容器网络 CNI
容器网络接口(CNI,Container Network Interface)是一种用于配置容器网络的插件化标准。它定义了一组规范,可以与容器编排系统(如 Kubernetes 等)无缝集成,实现容器在多个主机之间的互相通信。CNI 提供基于IP的虚拟网络、IP 分配等功能,可以满足各种复杂场景下对容器 Pod 对网络的需求。
TKE 容器产品提供 “VPC-CNI”、“Global Router” 以及 “Cilium-Overlay” 三种 CNI 网络方案。
注意:
TKE 推荐用户在公有云场景下使用 “VPC-CNI” 网络方案,在注册节点场景下使用 “Cilium-Overlay” 网络方案。
VPC-CNI 网络方案
VPC-CNI 网络方案是 TKE 基于腾讯云 VPC 实现的容器网络接口 CNI,可以将 VPC 原生的弹性网卡直接分配给 Pod,实现 Pod 之间的网络互联,适用于对时延有较高需求的场景。该网络模式下,容器与节点分布在同一网络平面,容器 IP 为 IPAMD 组件分配的弹性网卡 IP。详情请参见 VPC-CNI 方案介绍。
Global Router 网络方案
Global Router 网络方案是 TKE 基于腾讯云 VPC 的全局路由能力实现的容器网络接口 CNI。其中 Pod CIDR 网段独立于 VPC 的 CIDR 网段,不同节点的 Pod CIDR 信息会通过全局路由方式下发到 VPC,实现跨节点 Pod 的互访。详情请参见 Global Router 方案介绍。
Cilium-Overlay 网络方案
Cilium-Overlay 网络方案是 TKE 基于 Cilium VXLan 实现的容器网络插件,实现分布式云场景中,注册节点添加到 TKE 集群的网络管理。详情请参见 Cilium-Overlay 方案介绍。
TKE 网络方案对比
网络方案 | VPC-CNI(推荐) | Global Router | Cilium-Overlay |
基本介绍 | Pod 网络地址从 VPC子网地址中划分,建议独占一个子网。 可以使用 VPC 云上网络能力(EIP/CLB/安全组等)。 | Pod 网段独立于 VPC 的子网网段。 跨节点 Pod 之间互访直接通过全局路由转发。 | 容器网络与节点网络不在同一平面。 容器网络是基于节点网络的 Overlay 网络。 |
优势特点 | 无需按节点分配 CIDR 地址段,IP 地址不浪费。 数据面转发减少网桥,网络转发性能更高。 支持 Pod 固定 IP,适用于需要依赖容器固定 IP 的场景。 | 容器网段独立于 VPC 网段,使用简单,Pod 启动速度较快。 | 容器网段地址独立于 VPC 网段,地址充裕、扩展性强。 Pod 网络之间通过 VxLan 封装报文,适合云上云下节点互通,兼容性更好。 |
使用场景 | 对网络时延有较高要求的场景。 传统架构迁移到容器平台,依赖容器有固定 IP 的场景。 适合有特殊网络安全策略的业务,例如数据库服务下需要特殊安全组策略。 | 业务场景简单,对于 IP 分配和网络性能没有特殊需求。 节点不支持弹性网卡场景。 | 仅适用于注册节点场景。 |
使用限制 | 容器网络与节点网络属于同一个 VPC,IP 地址资源有限。 节点内容器数量受弹性网卡和弹性网卡可分配 IP 数量的限制。 固定 IP 模式不支持 固定IP Pod 跨可用区调度。 | 容器网络地址与节点网络地址不可冲突。 专线、对等连接及云联网等互通场景需要额外配置。 不支持固定 Pod IP。 | Pod IP 在集群外不能直接访问。 需从指定子网获取2个 IP 创建内网负载均衡,满足 IDC 中注册节点访问 APIServer 和云上公共服务。 不支持固定 Pod IP。 |
是否支持CLB 直通 | 不支持 | ||
是否支持固定ip | 支持 | 不支持 | 不支持 |
IPv4/IPv6双栈 | 支持 | 不支持 | 不支持 |
指定子网分配ip | 支持 | 不支持 | 不支持 |
扩容 Pod 网段 | 支持 | 支持(暂未产品化) | 不支持 |
设置 Pod 安全组 | 支持 | 不支持 | 不支持 |
Pod绑定 EIP | 支持 | 不支持 | 不支持 |
Pod 访问公网 | 支持(NAT、EIP) | 支持(IP 伪装) | 支持 |