创建TKE集群第一步就是为集群配置网络信息,大家都知道云资源都是部署在vpc网络中,但是由于TKE产品特殊性,我们这里还要用到一层虚拟的网络,就是我们的容器网络,容器网络可以通过容器路由直接通过 VPC,这样容器与节点分布在同一网络平面,并且容器网段分配灵活,容器 IP 段不占用 VPC 的其他网段。
那也就说我们需要规划下2层网络,一层是vpc网络,一层是容器网络,为什么说需要合理的规划下呢?因为在vpc下可能不止一个集群,每个集群的网段cidr都是不能冲突的,集群有可能还需要和idc或其他vpc互通,这里通常是云联网或者对等连接,云联网和对等连接里面的路由也都是不能冲突的。所以我们这里需要合理的给集群分配好网络cidr,避免路由冲突。
那么容器网络到底什么情况会用到呢?TKE这里提供了2中集群网络模式,一种是GlobalRouter(简称GR),还有一种是vpc-cni,GR模式的集群,pod和service是需要用到容器网络的。vpc-cni其实也是需要用到容器网络的,虽然这个模式下pod是位于vpc内,但是集群的service是虚拟的网络,这里就需要从容器网络来分配一个cidr作为service网段。
下面就具体来说说如何配置vpc子网和容器网段cidr,这里我们的vpc网络为10.0.0.0/16,容器网络为172.16.0.0/16,地域为广州,后续实验和说明都是基于上面2个网段。
vpc下我们需要给每个可用区创建子网,因为通常需要做多可用区的容灾和高可用,vpc的子网可以尽可能的遵循最小原则规划,这个最小原则可以根据自己实际需求配置,这里我们统一选择为24掩码来分配子网。这里我们可以根据不同用途来分配子网,我们可以把子网分为以下4类:
- cloud-resource:主要用来存放云资源,如cvm,clb,数据库
- CNI:主要用于vpc-cni模式容器网段,用于pod的ip分配
- CNI-FIXED:用于vpc-cni模式下pod固定ip的分配
- GR-CNI:混合网络模式下,用于vpc-cni子网,如果不熟悉这个模式,可以参考这个文档https://cloud.tencent.com/developer/article/1786193
这里我们只是为了做说明,每种类型只创建了一个子网,如果发现ip不够了,可以在对应的可用区创建对应的子网,例如广州一区的cloud-resource类型子网ip不够了,我们可以创建一个subnet-gz1-cr-2(10.0.20.0/24)
cloud-resource(这种类型子网用来放云资源) | CNI(vpc-cni模式下给pod分配ip) | CNI-FIXED(vpc-cni模式下固定ip) | GR-CNI(混合网络模式下用于vpc-cni子网) | |
---|---|---|---|---|
广州一区 | subnet-gz1-cr-1 (10.0.0.0/24) | subnet-gz1-cni-1 (10.0.1.0/24) | subnet-gz1-cni-fixed-1 (10.0.2.0/24) | subnet-gz1-gr-cni-1 (10.0.3.0/24) |
广州二区 | subnet-gz2-cr-1 (10.0.4.0/24) | subnet-gz2-cr-1 (10.0.5.0/24) | subnet-gz2-cni-fixed-1 (10.0.6.0/24) | subnet-gz2-gr-cni-1 (10.0.7.0/24) |
广州三区 | subnet-gz3-cr-1 (10.0.8.0/24) | subnet-gz3-cr-1 (10.0.9.0/24) | subnet-gz3-cni-fixed-1 (10.0.10.0/24) | subnet-gz3-gr-cni-1 (10.0.11.0/24) |
广州四区 | subnet-gz4-cr-1 (10.0.12.0/24) | subnet-gz4-cr-1 (10.0.13.0/24) | subnet-gz4-cni-fixed-1 (10.0.14.0/24) | subnet-gz4-gr-cni-1 (10.0.15.0/24) |
广州六区 | subnet-gz6-cr-1 (10.0.16.0/24) | subnet-gz6-cr-1 (10.0.17.0/24) | subnet-gz6-cni-fixed-1 (10.0.18.0/24) | subnet-gz6-gr-cni-1 (10.0.19.0/24) |
上面我们是对vpc网络进行了规划,那么容器网路我们需要怎么来规划呢?
- GR模式集群容器网络:分配容器网络给集群使用
- vpc-cni模式service网络:分配容器网络作为集群service网段
这里我们根据实际需要规划好网络,其实容器网段可以大致分为下面几段
172.16.0.0/16-24
172.18.0.0/16-24
172.20.0.0/16-24
172.22.0.0/16-24
172.24.0.0/16-24
172.26.0.0/16-24
172.28.0.0/16-24
172.31.0.0/16-24
我们可以将每一个网段作为不同用途,还是遵循最小原则,下面我们以2个网段来作为示例进行规划
172.16.0.0/16-24(vpc-cni模式service网络) | 172.18.0.0/16-24(GR模式集群容器网络) |
---|---|
假设每个集群service大概有2048个,可以进行如下方式配置网段 A集群service网段:172.16.0.0/23 B集群service网段:172.16.2.0/23 C集群service网段:172.16.4.0/23 ...... | 假设每个GR模式集群每个节点运行64个pod,分配2048个service,30个节点左右,可以进行如下方式分配网段 集群1:172.18.0.0/20 集群2:172.18.16.0/20 集群3:172.18.32.0/20 ....... |
大致分配可以遵循上面的原则分配,如果你的vpc直接需要互通,这里在vpc和容器网段的选择上也要尽可能的小,这边才能保证网段不会冲突。私有网络有10.0,172.16,192.168,这3个,大家可以根据实际来选择配置vpc和容器网段。