集群网络分为主机和容器两个维度,主机位于VPC中使用VPC网络,容器网络则使用容器网络插件来管理。
节点网络
VPC为集群内主机分配IP地址,订购集群时选择VPC中的子网用于集群的主机网络,子网可用IP数量直接限制了集群节点规模。
容器网络
约束条件
容器网络CNI插件为Pod分配IP地址,CCSE提供的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地址段。该网络方案有如下特点:
- 容器和节点均在同个网络平面,便于业务云原生化迁移;
- 没有解封包和节点路由消耗,容器网络性能优于隧道网络;
- 集群节点规模不受BGP Peer连接数等限制;
- 无需额外规划容器Overlay地址段,同个VPC内多个集群容器之间只要配置安全组放行就可互相通信;
- SLB可直通容器后端,无需经节点NodePort转发;
- 容器访问VPC网络资源,其源IP是容器IP,无需经过节点SNAT,减少节点netfilter连接跟踪表消耗,性能更优且便于审计。