在建立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兩種模式,兩種模式的網路關係如下圖所示。
注意事項
配置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網段一樣,但不能超過)。配置網段時,請注意:
| ECS使用的交換器,用於節點間網路通訊。在VPC裡建立交換器時指定的網段,必須是當前VPC網段的子集(可以和VPC網段一樣,但不能超過)。配置網段時,請注意:
|
Pod虛擬交換器 | Pod地址從該交換器分配,用於Pod網路通訊。Pod是Kubernetes內的概念,每個Pod具有一個IP地址。在VPC裡建立交換器時指定的網段,必須是當前VPC網段的子集。配置網段時,請注意:
| 選擇Flannel網路模式時,無需設定此參數。 |
Pod網路CIDR | 選擇Terway網路模式時,無需設定此參數。 | Pod網路CIDR,Pod地址從該位址區段分配,用於Pod網路通訊。Pod是Kubernetes內的概念,每個Pod具有一個IP地址。配置網段時,請注意:
例如,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(
| Service位址區段。Service是Kubernetes內的概念,對應的是Service類型為ClusterIP(
|
Service IPv6 CIDR | 開啟Pv6雙棧後,您需要為Service CIDR配置IPv6位址區段。配置網段時,請注意:
| 選擇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的路由表。