全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:Kubernetes集群网络规划

更新时间:May 17, 2024

在创建ACK Kubernetes集群时,您需要指定专有网络VPC、虚拟交换机、Pod网络CIDR(地址段)和Service CIDR(地址段)。因此建议您提前规划ECS地址、Kubernetes Pod地址和Service地址。本文将介绍阿里云专有网络VPC环境下ACK Kubernetes集群里各种地址的作用,以及地址段该如何规划。

专有网络VPC网段和Kubernetes网段关系

专有网络VPC(下文简称为VPC或专有网络)的网段规划包含VPC自身网段和虚拟交换机网段,Kubernetes网段规划包含Pod地址段和Service地址段。ACK网络支持Terway和Flannel两种模式,两种模式的网络关系如下图所示。

图 1. Terway模式terway

图 2. Flannel模式Flannel示意图

注意事项

配置Terway网络模式和Flannel网络模式时,需要设置相关参数的网段,其注意事项如下。

配置参数

Terway网络模式

Flannel网络模式

专有网络

您在创建VPC时需要选择网段,只能从10.0.0.0/8、172.16.0.0/12、192.168.0.0/16三者当中选择一个。

IPv6网段在VPC开启IPv6后由VPC分配。如果您需要使用IPv6容器网络,请选择Terway网络插件。

虚拟交换机

ECS使用的交换机,用于节点间网络通信。在VPC里创建交换机时指定的网段,必须是当前VPC网段的子集(可以和VPC网段一样,但不能超过)。配置网段时,请注意:

  • 虚拟交换机是VPC交换机。

  • 交换机下ECS所分配到的地址,就是从这个交换机网段内获取的。

  • 一个VPC下,可以创建多个交换机,但交换机网段不能重叠。

  • 虚拟交换机和Pod虚拟交换机需要在一个可用区下。关于可用区的概念,请参见地域和可用区

ECS使用的交换机,用于节点间网络通信。在VPC里创建交换机时指定的网段,必须是当前VPC网段的子集(可以和VPC网段一样,但不能超过)。配置网段时,请注意:

  • 虚拟交换机是VPC交换机。

  • 交换机下ECS所分配到的地址,就是从这个交换机网段内获取的。

  • 一个VPC下,可以创建多个交换机,但交换机网段不能重叠。

Pod虚拟交换机

Pod地址从该交换机分配,用于Pod网络通信。Pod是Kubernetes内的概念,每个Pod具有一个IP地址。在VPC里创建交换机时指定的网段,必须是当前VPC网段的子集。配置网段时,请注意:

  • Pod虚拟交换机是VPC交换机。

  • Terway网络模式下,Pod分配的Pod IP 就是从这个交换机网段内获取的。

  • 该地址段不能和Service CIDR网段重叠。

  • 虚拟交换机和Pod虚拟交换机需要在一个可用区下。关于可用区的概念,请参见地域和可用区

选择Flannel网络模式时,无需设置此参数。

Pod网络CIDR

选择Terway网络模式时,无需设置此参数。

Pod网络CIDR,Pod地址从该地址段分配,用于Pod网络通信。Pod是Kubernetes内的概念,每个Pod具有一个IP地址。配置网段时,请注意:

  • 非VPC交换机,为虚拟网段。

  • 该地址段不能和虚拟交换机网段重叠。

  • 该地址段不能和Service CIDR网段重叠。

例如,VPC网段用的是172.16.0.0/12,Kubernetes的Pod地址段就不能使用172.16.0.0/16、172.17.0.0/16等,因为这些地址都包含在172.16.0.0/12里。

Service CIDR

Service地址段。Service是Kubernetes内的概念,对应的是Service类型为ClusterIP(Type=ClusterIP)时Service使用的地址,每个Service有自己的地址。配置网段时,请注意:

  • Service地址只在Kubernetes集群内使用,不能在集群外使用。

  • Service地址段不能和虚拟交换机地址段重叠。

  • Service地址段不能和Pod虚拟交换机地址段重叠。

Service地址段。Service是Kubernetes内的概念,对应的是Service类型为ClusterIP(Type=ClusterIP)时Service使用的地址,每个Service有自己的地址。配置网段时,请注意:

  • Service地址只在Kubernetes集群内使用,不能在集群外使用。

  • Service地址段不能和虚拟交换机地址段重叠。

  • Service地址段不能和Pod网络CIDR地址段重叠。

Service IPv6 CIDR

开启Pv6双栈后,您需要为Service CIDR配置IPv6地址段。配置网段时,请注意:

  • 必须使用ULA地址,地址段范围在fc00::/7内,且地址前缀长度在112~120之间。

  • 推荐和Service CIDR保持相同的可用地址数量。

选择Flannel网络模式时,无需设置此参数。

网络规划

在阿里云环境下使用ACK支持的Kubernetes集群,首先需要根据业务场景、集群规模进行网络规划。您可以按下表规格进行规划(未包含场景,请根据实际需要自行调整)。

VPC网络规划

集群节点规模

目的

VPC规划

可用区

小于100个节点

一般性业务

单VPC

1个

任意

需要多可用区

单VPC

2个及以上

任意

对可靠性有较高要求、需要多地域

多VPC

2个及以上

容器网络规划

本文针对Flannel和Terway网络场景,规划容器网络:

  • Flannel配置示例

    专有网络网段

    虚拟交换机网段

    Pod网络CIDR网段

    Service CIDR网段

    最大可分配Pod地址数

    192.168.0.0/16

    192.168.0.0/24

    172.20.0.0/16

    172.21.0.0/20

    65536

  • Terway配置示例

    • Terway Pod独占模式或DataPathv2模式或IPVlan模式

      专有网络网段

      虚拟交换机网段

      Pod虚拟交换机网段

      Service CIDR网段

      最大可分配Pod地址数

      192.168.0.0/16

      192.168.0.0/19

      192.168.32.0/19

      172.21.0.0/20

      8192

    • Terway多可用区配置

      专有网络网段

      虚拟交换机网段

      Pod虚拟交换机网段

      Service CIDR网段

      最大可分配Pod地址数

      192.168.0.0/16

      可用区I 192.168.0.0/19

      192.168.32.0/19

      172.21.0.0/20

      8192

      可用区J 192.168.64.0/19

      192.168.96.0/19

      8192

如何选择地址段?

  • 单VPC+单Kubernetes集群

    在创建VPC时,VPC的地址段就已经确定,而在创建Kubernetes集群,要为Pod和Service指定一个与这个VPC地址范围不重叠的新网络段。这样就能确保集群内的网络通信,不会与外部的VPC网络发生冲突。

  • 单VPC+多Kubernetes集群

    一个VPC下创建多个Kubernetes集群。

    • VPC地址是在创建VPC时已经确定。创建Kubernetes集群时,每个集群内的VPC地址段、Service地址段和Pod地址段彼此间不能重叠。

    • 所有Kubernetes集群之间的Pod地址段不能重叠,但Service地址段可以重叠。

    • 在默认的网络模式下(Flannel),Pod的报文需要通过VPC路由转发,容器服务会自动在VPC路由上配置到每个Pod地址段的路由表。

    说明

    这种情况下Kubernetes集群部分互通,一个集群的Pod可以直接访问另外一个集群的Pod和ECS,但不能访问另外一个集群的Service。

  • VPC互联

    两个VPC网络互联的情况下,可以通过路由表配置哪些报文要发送到对端VPC里。如下表所示,VPC 1使用地址段192.168.0.0/16,VPC 2使用地址段172.16.0.0/12,您可以通过路由表,指定在VPC 1里把目的地址为172.16.0.0/12的报文都发送到VPC 2。

    路由表

    表 3. VPC互联场景

    类别

    地址段

    目的端

    转发到

    VPC 1

    192.168.0.0/16

    172.16.0.0/12

    VPC 2

    VPC 2

    172.16.0.0/12

    192.168.0.0/16

    VPC 1

    在这种情况下,VPC 1和VPC 2里创建的Kubernetes集群有以下限制:

    • 不能和VPC 1的地址段重叠

    • 不能和VPC 2的地址段重叠

    • 不能和其他集群的地址段重叠

    • 不能和Pod的地址段重叠

    • 不能和Service的地址段重叠

    此例子中,Kubernetes集群Pod地址段可以选择10.0.0.0/8下的某个子段。

    说明

    您需特别关注转发到VPC 2的地址段,可以把这部分地址理解成已经占用的地址,Kubernetes集群不能和已经占用的地址重叠。

    如果VPC 2里要访问VPC 1的Kubernetes Pod,则需要在VPC 2里配置到VPC 1 Kubernetes集群Pod地址的路由。

  • VPC网络到IDC

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