全部產品
Search
文件中心

Container Service for Kubernetes:Kubernetes叢集網路規劃

更新時間:Nov 08, 2024

在建立ACK Kubernetes叢集時,您需要指定Virtual Private Cloud、虛擬交換器、Pod網路CIDR(位址區段)和Service CIDR(位址區段)。因此建議您提前規劃ECS地址、Kubernetes Pod地址和Service地址。本文將介紹阿里雲Virtual Private Cloud環境下ACK Kubernetes叢集裡各種地址的作用,以及位址區段該如何規劃。

Virtual Private Cloud網段和Kubernetes網段關係

Virtual Private Cloud(下文簡稱為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路由轉寄,Container Service會自動在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的路由表。