Kubernetes: Network: CIDR

 20th August 2020 at 2:19pm

Kubernetes 集群有一个容器网络的概念,即会为集群中每一个 pod 分配一个 IP。在部署集群时,需要指定一个容器网络的 CIDR(参考 这里)。

集群网络与容器网络

按 TKE 的 要求

  • 集群网络和容器网络网段不能冲突
  • 同一 VPC 内,不同集群的容器网络网段不能冲突
  • 容器网络和 VPC 路由冲突时,优先在容器网络内转发

集群网络是指 Kubernetes 集群所在的宿主机(一般是物理机)的网络。集群网络与容器网络的 CIDR 不能冲突,是各容器平台的共识,包括时速云及 gaia。时速云及 gaia 表示如果用户不指定 CIDR,那么他们会自动指定 CIDR,并与集群网络避开冲突。对于「同一 VPC 内,不同集群的容器网络网段不能冲突」,时速云及 gaia 均 无此限制,不知道 TKE 出于什么原因做的限制,毕竟不同集群的 pod 并不能互相通信。

创建 TKE 集群时需要先选择 VPC 及指定容器网络 CIDR,这使得在创建前就可以知道 CIDR 是否可行。其他容器平台没有选择 VPC 的过程,无法提前知晓,可能需要用户自行避开。

选择什么网段?

选网段时主要考虑集群运行的 pod 数量会有多少。 /24 的网段支持每个 node 节点上运行 254 个 pods。192.168.0.0/17 的 CIDR 支持 3 万多 pod 每节点。大部分时候这个 CIDR 的选择不会成为瓶颈。