在創建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兩種網絡模式。
Terway網絡模式
配置Terway模式網絡時,需要設置的參數及參數網段配置的注意事項如下:
專有網絡
您在創建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虛擬交換機需要在一個可用區下。
Pod虛擬交換機
Pod地址從該交換機分配,用于Pod網絡通信。Pod是Kubernetes內的概念,每個Pod具有一個IP地址。在VPC里創建交換機時指定的網段,必須是當前VPC網段的子集。配置網段時,請注意:
Pod虛擬交換機是VPC交換機。
Terway網絡模式下,Pod分配的Pod IP就是從這個交換機網段內獲取的。
該地址段不能和Service CIDR網段重疊。
虛擬交換機和Pod虛擬交換機需要在一個可用區下。
Service CIDR
Service地址段。Service是Kubernetes內的概念,對應的是Service類型為ClusterIP時Service使用的地址,每個Service有自己的地址。配置網段時,請注意:
Service地址只在Kubernetes集群內使用,不能在集群外使用。
Service地址段不能和虛擬交換機地址段重疊。
Service地址段不能和Pod虛擬交換機地址段重疊。
Service IPv6 CIDR
開啟IPv6雙棧后,您需要為Service CIDR配置IPv6地址段。配置網段時,請注意:
必須使用ULA地址,地址段范圍需在fc00::/7內,且地址前綴長度在112~120之間。
推薦和Service CIDR保持相同的可用地址數量。
Flannel網絡模式
配置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網絡CIDR
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時Service使用的地址,每個Service有自己的地址。配置網段時,請注意:
Service地址只在Kubernetes集群內使用,不能在集群外使用。
Service地址段不能和虛擬交換機地址段重疊。
Service地址段不能和Pod網絡CIDR地址段重疊。
網絡規劃
在阿里云環境下使用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的路由表。