集群网络分为主机和容器两个维度,主机位于VPC中使用VPC网络,容器网络则使用容器网络插件来管理。
节点网络
VPC为集群内主机分配IP地址,订购集群时选择VPC中的子网用于集群的主机网络,子网可用IP数量直接限制了集群节点规模。
容器网络
约束条件
容器网络CNI插件为Pod分配IP地址,云容器引擎提供的CNI插件均符合kubernetes容器网络模型,具体约束如下:
1.每个Pod都拥有一个独立IP地址,Pod内容器均共享一个网络命名空间;
2.任意Pod之间均可直接通信,无需NAT;
3.任意Pod与节点间均可直接通信,无需NAT。
网络插件
当前云容器引擎提供如下CNI插件:
calico容器网络:使用calico IPIP模式。该模式下,calico依旧使用BGP分发节点的容器路由信息,但在节点网络基础上通过IPIP隧道技术构建独立于节点网络平面的容器网络平面,IPIP将发给容器的IP报文封装成发给目的节点的IP报文进行隧道传输;
cubecni容器网络:是云原生网络方案,直接基于VPC网络中的弹性网卡和IP资源构建容器网络。Pod通过弹性网卡资源直接分配VPC的子网IP地址,无需额外指定虚拟Pod地址段。
Cubecni和Calico对比如下: 。
对比项 | Cubecni | Calico隧道模式 |
---|---|---|
容器网络平面 | 构建Underlay网络,容器和节点均在同个网络平面,支持VPC内多集群Pod直接互通及VPC内直接互通 | 构建Overlay网络,基于集群节点网络构建 一层覆盖网络,不支持VPC内多集群Pod直接互通及VPC内直接互通 |
容器网络性能 | 无解封包开销,整体性能优于Overlay网络,其中Cubecni独占ENI模式性能无限接近主机 | 有解封包损耗 |
节点规模 | 不直接限制节点规模 | 受限于BGP Peer连接数等限制 |
网络访问控制 | 支持网络策略Network Policy,其中Cubecni独占ENi模式支持Pod粒度安全组配置 | 支持网络策略Network Policy |
源地址审计 | Pod访问VPC网络资源,源地址是容器IP,不经节点SNAT,便于审计 | Pod访问VPC网络资源,需经节点SNAT,不便于审计 |
地址管理 | 无需按节点分配地址段,随用随分配,地址无浪费 | 每个节点提前分配虚拟地址段 |
ELB | 支持ELB直通Pod,性能更优 | 不支持ELB直通Pod,需通过NodePort转发 |