更新时间:2024-01-04 GMT+08:00

集群网络地址段规划实践

在CCE中创建集群时,您需要根据具体的业务需求规划VPC的数量、子网的数量、容器网段划分和服务网段连通方式。

本文将介绍VPC环境下CCE集群里各种地址的作用,以及地址段该如何规划。

约束与限制

通过搭建VPN方式访问CCE集群,需要注意VPN网络和集群所在的VPC网段、容器使用网段不能冲突。

集群各网段基本概念

  • VPC网段

    虚拟私有云(Virtual Private Cloud,简称VPC)可以为云服务器、云容器、云数据库等资源构建隔离的、用户自主配置和管理的虚拟网络环境。您可以自由配置VPC内的IP地址段、子网、安全组等子服务,也可以申请弹性带宽和弹性公网IP搭建业务系统。

  • 子网网段
    子网是用来管理弹性云服务器网络平面的一个网络,可以提供IP地址管理、DNS服务,子网内的弹性云服务器IP地址都属于该子网。
    图1 VPC网段结构

    默认情况下,同一个VPC的所有子网内的弹性云服务器均可以进行通信,不同VPC的弹性云服务器不能进行通信。

    不同VPC的弹性云服务器可通过VPC创建对等连接通信。

  • 容器网段(Pod网段)

    Pod是Kubernetes内的概念,每个Pod具有一个IP地址。

    在CCE上创建集群时,可以指定Pod的地址段(即容器网段),容器网段不能和子网网段重叠。例如子网网段用的是 192.168.0.0/16,集群的容器网段就不能使用192.168.0.0/18,192.168.1.0/18等,因为这些地址都涵盖在 192.168.0.0/16 里了。

  • 容器子网(仅CCE Turbo集群)

    CCE Turbo集群中,容器直接从VPC网段中分配IP地址,容器子网可以和子网网段重叠,但需要注意该容器子网的大小决定了集群下容器的数量上限。在集群创建完成后,仅支持新增容器子网,不支持删除。

  • 服务网段

    Service也是Kubernetes内的概念,每个Service都有自己的地址,在CCE上创建集群时,可以指定Service的地址段(即服务网段)。同样,服务网段也不能和子网网段重合,而且服务网段也不能和容器网段重叠。服务网段只在集群内使用,不能在集群外使用。

单VPC下单集群场景

CCE集群:包含VPC网络模式和容器隧道网络模式集群,集群网络地址段规划示意图如图2所示。
  • VPC网段:集群所在的VPC网段,该网段的大小影响集群中可创建的节点数量上限。
  • 子网网段:集群中节点所在的子网网段,子网网段包含在VPC网段中。同个集群中的不同节点可分配到不同的子网网段。
  • 容器网段:容器网段不能和子网网段重叠。
  • 服务网段:服务网段不能和子网网段重叠,而且也不能和容器网段重叠。
图2 单VPC单集群场景网段规划-CCE集群
CCE Turbo集群:即云原生网络2.0模式集群,集群网络地址段规划示意图如图3所示。
  • VPC网段:集群所在的VPC网段,该网段的大小影响集群中可创建的节点数量上限。
  • 子网网段:集群中节点所在的子网网段,子网网段包含在VPC网段中。同个集群中的不同节点可分配到不同的子网网段。
  • 容器子网网段:容器子网包含在VPC网段中,且可以和子网网段重叠,甚至可以选择和子网网段相同。但需要注意的是,由于容器直接分配VPC中的IP,因此该容器子网的大小决定了集群下容器的数量上限。在集群创建完成后,仅支持新增容器子网,不支持删除。建议将容器子网的IP地址段设大一些,以免出现容器IP分配不足的情况。
  • 服务网段:服务网段不能和子网网段重合,而且也不能和容器网段重叠。
图3 单VPC单集群场景网段规划-CCE Turbo集群

单VPC下多集群场景

VPC网络模式

Pod的报文需要通过VPC路由转发,CCE会自动在VPC路由上配置到每个容器网段的路由表,集群组网规模受限于VPC路由表能力。集群网络地址段规划示意图如图4所示。
  • VPC网段:集群所在的VPC网段,该网段的大小影响集群中可创建的节点数量上限。
  • 子网网段:每个集群中的子网网段不能和容器网段重叠。
  • 容器网段:单VPC中存在多个VPC网络模型集群的场景下,由于各个集群使用同一路由表,因此所有集群的容器网段不能相互重叠。在此情况下,如果节点安全组在入方向上放通对端集群的容器网段,一个集群的Pod可以通过容器IP直接访问另外一个集群的Pod。
  • 服务网段:由于服务网段只能在集群中使用,因此集群之间服务网段可以重叠,但是不能和所属集群的子网网段和容器网段重叠。
图4 VPC网络-多集群场景示例

容器隧道网络

该模式下容器网络是承载于VPC网络之上的Overlay网络平面,具有少量隧道封装性能损耗,但获得了通用性强、互通性强、高级特性支持全面(例如Network Policy网络隔离)的优势,可以满足大多数应用需求。集群网络地址段规划示意图如图5所示。
  • VPC网段:集群所在的VPC网段,该网段的大小影响集群中可创建的节点数量上限。
  • 子网网段:每个集群中的子网网段不能和容器网段重叠。
  • 容器网段:所有集群的容器网段可以重叠。在此情况下不同集群的Pod不能通过容器IP直接访问,跨集群容器之间的访问需要通过Service,建议使用负载均衡类型的Service。
  • 服务网段:由于服务网段只能在集群中使用,因此集群之间服务网段可以重叠,但是不能和所属集群的子网网段和容器网段重叠。
图5 容器隧道网络-多集群场景示例

云原生网络2.0模式(即CCE Turbo集群)

该模式下集群直接从VPC网段内分配容器IP地址,支持ELB直通容器、支持容器直接绑定安全组等多种VPC网络的能力,极大提高了网络连通速度和转发效率。
  • VPC网段:集群所在的VPC网段,在CCE Turbo集群中,该网段的大小影响集群中可创建的节点数量与容器数量之和。
  • 子网网段:CCE Turbo集群中的子网网段没有特殊限制。
  • 容器子网:容器子网的网段包含在VPC网段中,且不同集群的容器子网之间可以重叠,也可以和子网网段重叠。但仍建议您将不同集群的容器网段错开,且尽量保证容器子网网段的IP数充足。在此情况下,如果集群ENI安全组在入方向上放通对端集群的容器子网网段,不同集群的Pod之间可以直接通过IP访问。
  • 服务网段:由于服务网段只能在集群中使用,因此集群之间服务网段可以重叠,但是不能和所属集群的子网网段和容器子网网段重叠。
图6 云原生网络2.0-多集群场景示例

多网络模式集群并存场景

同一VPC中包含多个网络模式的集群时,应在创建新集群时遵循以下规律:

  • VPC网段:该场景下各个集群所在的VPC网段相同,请保证VPC内可用的IP地址数充足。
  • 子网网段:子网网段尽量避免和容器网段重叠。即使在某些场景下(例如和CCE Turbo集群共存时),子网网段可以和容器(子网)网段重叠,但从地址段规划角度出发,这是不推荐的。
  • 容器网段:仅VPC网络模式的集群间的容器网段需要避免相互重叠。
  • 服务网段:所有集群之间服务网段可以重叠,但是不能和所属集群的子网网段和容器网段重叠。

集群跨VPC互联场景

不同VPC之间网络不通,对等连接用于连通同一个区域内的VPC,实现不同VPC的网络互联。两个VPC网络互联的情况下,可以通过路由表配置哪些报文要发送到对端VPC里。

VPC网络模式集群

VPC网络模式的集群跨VPC互联时,在创建对等连接后,您需要在两端VPC内添加对等连接路由信息,才能使两个VPC互通。

图7 VPC网络-VPC互联场景

跨VPC的集群容器之间互联需要建立VPC对等连接时,需要注意如下几点:

  • 两端集群所属的VPC地址段需要避免重叠,且在每个集群中,子网网段不能与容器网段重叠。
  • 两端集群的容器网段不能相互重叠,但服务网段可以重叠。
  • 当请求端集群为VPC网络模型时,需要关注目的端集群的节点安全组在入方向上是否放通了请求端集群的容器网段。此时,一个集群的Pod可以通过容器IP直接访问另外一个集群的Pod。同理,如果两端集群的节点需要相互访问,节点安全组需要放通对端集群的VPC网段。
  • 两端的VPC路由表中不仅需要添加对端集群VPC网段地址,还需要添加对端容器网段的地址。需要注意该操作在两侧的VPC路由表中均要进行。

容器隧道网络模式集群

两个容器隧道网络模式的集群跨VPC互联时,创建对等连接后,您需要在两端VPC内添加对等连接路由信息,才能使两个VPC互通。

图8 容器隧道网络-VPC互联场景

需要注意如下几点:

  • 两端集群所属的VPC地址段需要避免重叠。
  • 所有集群的容器网段可以重叠,服务网段也可以重叠。
  • 当请求端集群为容器隧道网络模型时,需要关注目的端集群的节点安全组在入方向上是否放通了请求端集群的VPC网段(包含节点子网)。在此情况下,一个集群的节点可以访问另一个集群的节点。但不同集群的Pod不能通过容器IP直接访问,跨集群容器之间的访问需要通过Service,建议使用负载均衡类型的Service。
  • 对等连接的路由表中需要添加对端集群VPC网段的地址。需要注意该操作在两侧的VPC路由表中均要进行。

云原生网络2.0集群(即CCE Turbo集群)

创建对等连接后,您需要在两端VPC内添加对等连接路由信息,使两个VPC互通,即可完成集群间的互通。需要注意如下几点:
  • 两端集群所属的VPC地址段需要避免重叠。
  • 当请求端集群为云原生网络2.0模型时,需要关注目的端集群的ENI安全组(名为{集群名}-cce-eni-{随机ID})在入方向上是否放通了请求端集群的VPC网段(包含节点子网和容器子网)。此时,一个集群的Pod可以通过容器IP直接访问另外一个集群的Pod。同理,如果两端集群的节点需要相互访问,则需要在集群的节点安全组(名为{集群名}-cce-node-{随机ID}放通对端集群的VPC网段。
  • 对等连接的路由表中需要添加对端集群VPC网段的地址。需要注意该操作在两侧的VPC路由表中均要进行。

多网络模式集群并存场景

在不同网络模式集群间需要跨VPC互访的情况下,每种类型的集群均可能作为请求端和目的端。一般情况下需遵循以下规律:

  • 集群所属的VPC地址段需要避免和对端集群的VPC地址段重叠。
  • 集群子网网段尽量避免和自身的容器网段重叠。
  • 集群间的容器网段需要避免相互重叠。
  • 如集群间容器或节点存在相互访问,则两侧集群的安全组在入方向上均需按以下规则放通对应网段:
    • 请求端集群为VPC网络模型时,目的端集群的节点安全组需放通请求端集群的VPC网段(包含节点子网)和容器网段
    • 请求端集群为容器隧道网络模型时,目的端集群的节点安全组需放通请求端集群的VPC网段(包含节点子网)
    • 请求端集群为云原生网络2.0模型时,目的端集群的ENI安全组和节点安全组需放通请求端集群的VPC网段(包含节点子网和容器子网)
  • 两端的VPC路由表中需要添加对端集群VPC网段地址。需要注意该操作在两侧的VPC路由表中均要进行。

    若某个集群为VPC网络模型,两端的VPC路由表中还需要添加容器网段的地址。

VPC网络到IDC的场景

和VPC互联场景类似,同样存在VPC里部分地址段路由到IDC,CCE集群的Pod地址就不能和这部分地址重叠。IDC里如果需要访问集群里的Pod地址,同样需要在IDC端配置到专线VBR的路由表。