Kubernetes集群網(wǎng)絡(luò)規(guī)劃
在創(chuàng)建ACK Kubernetes集群時,您需要指定專有網(wǎng)絡(luò)VPC、虛擬交換機、Pod網(wǎng)絡(luò)CIDR(地址段)和Service CIDR(地址段)。因此建議您提前規(guī)劃ECS地址、Kubernetes Pod地址和Service地址。本文將介紹阿里云專有網(wǎng)絡(luò)VPC環(huán)境下ACK Kubernetes集群里各種地址的作用,以及地址段該如何規(guī)劃。
專有網(wǎng)絡(luò)VPC網(wǎng)段和Kubernetes網(wǎng)段關(guān)系
專有網(wǎng)絡(luò)VPC(下文簡稱為VPC或?qū)S芯W(wǎng)絡(luò))的網(wǎng)段規(guī)劃包含VPC自身網(wǎng)段和虛擬交換機網(wǎng)段,Kubernetes網(wǎng)段規(guī)劃包含Pod地址段和Service地址段。ACK網(wǎng)絡(luò)支持Terway和Flannel兩種網(wǎng)絡(luò)模式。
Terway網(wǎng)絡(luò)模式
配置Terway模式網(wǎng)絡(luò)時,需要設(shè)置的參數(shù)及參數(shù)網(wǎng)段配置的注意事項如下:
專有網(wǎng)絡(luò)
您在創(chuàng)建VPC時需要選擇網(wǎng)段,只能從10.0.0.0/8、172.16.0.0/12、192.168.0.0/16三者當(dāng)中選擇一個。
IPv6網(wǎng)段在VPC開啟IPv6后由VPC分配。如果您需要使用IPv6容器網(wǎng)絡(luò),請選擇Terway網(wǎng)絡(luò)插件。
虛擬交換機
ECS使用的交換機,用于節(jié)點間網(wǎng)絡(luò)通信。在VPC里創(chuàng)建交換機時指定的網(wǎng)段,必須是當(dāng)前VPC網(wǎng)段的子集(可以和VPC網(wǎng)段一樣,但不能超過)。配置網(wǎng)段時,請注意:
虛擬交換機是VPC交換機。
交換機下ECS所分配到的地址,就是從這個交換機網(wǎng)段內(nèi)獲取的。
一個VPC下,可以創(chuàng)建多個交換機,但交換機網(wǎng)段不能重疊。
虛擬交換機和Pod虛擬交換機需要在一個可用區(qū)下。
Pod虛擬交換機
Pod地址從該交換機分配,用于Pod網(wǎng)絡(luò)通信。Pod是Kubernetes內(nèi)的概念,每個Pod具有一個IP地址。在VPC里創(chuàng)建交換機時指定的網(wǎng)段,必須是當(dāng)前VPC網(wǎng)段的子集。配置網(wǎng)段時,請注意:
Pod虛擬交換機是VPC交換機。
Terway網(wǎng)絡(luò)模式下,Pod分配的Pod IP就是從這個交換機網(wǎng)段內(nèi)獲取的。
該地址段不能和Service CIDR網(wǎng)段重疊。
虛擬交換機和Pod虛擬交換機需要在一個可用區(qū)下。
Service CIDR
Service地址段。Service是Kubernetes內(nèi)的概念,對應(yīng)的是Service類型為ClusterIP時Service使用的地址,每個Service有自己的地址。配置網(wǎng)段時,請注意:
Service地址只在Kubernetes集群內(nèi)使用,不能在集群外使用。
Service地址段不能和虛擬交換機地址段重疊。
Service地址段不能和Pod虛擬交換機地址段重疊。
Service IPv6 CIDR
開啟IPv6雙棧后,您需要為Service CIDR配置IPv6地址段。配置網(wǎng)段時,請注意:
必須使用ULA地址,地址段范圍需在fc00::/7內(nèi),且地址前綴長度在112~120之間。
推薦和Service CIDR保持相同的可用地址數(shù)量。
Flannel網(wǎng)絡(luò)模式
配置Flannel模式網(wǎng)絡(luò)時,需要設(shè)置的參數(shù)及參數(shù)網(wǎng)段配置的注意事項如下:
專有網(wǎng)絡(luò)
您在創(chuàng)建VPC時需要選擇網(wǎng)段,只能從10.0.0.0/8、172.16.0.0/12、192.168.0.0/16三者當(dāng)中選擇一個。
IPv6網(wǎng)段在VPC開啟IPv6后由VPC分配。如果您需要使用IPv6容器網(wǎng)絡(luò),請選擇Terway網(wǎng)絡(luò)插件。
虛擬交換機
ECS使用的交換機,用于節(jié)點間網(wǎng)絡(luò)通信。在VPC里創(chuàng)建交換機時指定的網(wǎng)段,必須是當(dāng)前VPC網(wǎng)段的子集(可以和VPC網(wǎng)段一樣,但不能超過)。配置網(wǎng)段時,請注意:
虛擬交換機是VPC交換機。
交換機下ECS所分配到的地址,就是從這個交換機網(wǎng)段內(nèi)獲取的。
一個VPC下,可以創(chuàng)建多個交換機,但交換機網(wǎng)段不能重疊。
Pod網(wǎng)絡(luò)CIDR
Pod網(wǎng)絡(luò)CIDR,Pod地址從該地址段分配,用于Pod網(wǎng)絡(luò)通信。Pod是Kubernetes內(nèi)的概念,每個Pod具有一個IP地址。配置網(wǎng)段時,請注意:
非VPC交換機,為虛擬網(wǎng)段。
該地址段不能和虛擬交換機網(wǎng)段重疊。
該地址段不能和Service CIDR網(wǎng)段重疊。
例如,VPC網(wǎng)段用的是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內(nèi)的概念,對應(yīng)的是Service類型為ClusterIP時Service使用的地址,每個Service有自己的地址。配置網(wǎng)段時,請注意:
Service地址只在Kubernetes集群內(nèi)使用,不能在集群外使用。
Service地址段不能和虛擬交換機地址段重疊。
Service地址段不能和Pod網(wǎng)絡(luò)CIDR地址段重疊。
網(wǎng)絡(luò)規(guī)劃
在阿里云環(huán)境下使用ACK支持的Kubernetes集群,首先需要根據(jù)業(yè)務(wù)場景、集群規(guī)模進行網(wǎng)絡(luò)規(guī)劃。您可以按下表規(guī)格進行規(guī)劃(未包含場景,請根據(jù)實際需要自行調(diào)整)。
VPC網(wǎng)絡(luò)規(guī)劃
集群節(jié)點規(guī)模 | 目的 | VPC規(guī)劃 | 可用區(qū) |
小于100個節(jié)點 | 一般性業(yè)務(wù) | 單VPC | 1個 |
任意 | 需要多可用區(qū) | 單VPC | 2個及以上 |
任意 | 對可靠性有較高要求、需要多地域 | 多VPC | 2個及以上 |
容器網(wǎng)絡(luò)規(guī)劃
本文針對Flannel和Terway網(wǎng)絡(luò)場景,規(guī)劃容器網(wǎng)絡(luò):
Flannel配置示例
專有網(wǎng)絡(luò)網(wǎng)段
虛擬交換機網(wǎng)段
Pod網(wǎng)絡(luò)CIDR網(wǎng)段
Service CIDR網(wǎng)段
最大可分配Pod地址數(shù)
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模式
專有網(wǎng)絡(luò)網(wǎng)段
虛擬交換機網(wǎng)段
Pod虛擬交換機網(wǎng)段
Service CIDR網(wǎng)段
最大可分配Pod地址數(shù)
192.168.0.0/16
192.168.0.0/19
192.168.32.0/19
172.21.0.0/20
8192
Terway多可用區(qū)配置
專有網(wǎng)絡(luò)網(wǎng)段
虛擬交換機網(wǎng)段
Pod虛擬交換機網(wǎng)段
Service CIDR網(wǎng)段
最大可分配Pod地址數(shù)
192.168.0.0/16
可用區(qū)I 192.168.0.0/19
192.168.32.0/19
172.21.0.0/20
8192
可用區(qū)J 192.168.64.0/19
192.168.96.0/19
8192
如何選擇地址段?
單VPC+單Kubernetes集群
在創(chuàng)建VPC時,VPC的地址段就已經(jīng)確定,而在創(chuàng)建Kubernetes集群,要為Pod和Service指定一個與這個VPC地址范圍不重疊的新網(wǎng)絡(luò)段。這樣就能確保集群內(nèi)的網(wǎng)絡(luò)通信,不會與外部的VPC網(wǎng)絡(luò)發(fā)生沖突。
單VPC+多Kubernetes集群
一個VPC下創(chuàng)建多個Kubernetes集群。
VPC地址是在創(chuàng)建VPC時已經(jīng)確定。創(chuàng)建Kubernetes集群時,每個集群內(nèi)的VPC地址段、Service地址段和Pod地址段彼此間不能重疊。
所有Kubernetes集群之間的Pod地址段不能重疊,但Service地址段可以重疊。
在默認(rèn)的網(wǎng)絡(luò)模式下(Flannel),Pod的報文需要通過VPC路由轉(zhuǎn)發(fā),容器服務(wù)會自動在VPC路由上配置到每個Pod地址段的路由表。
說明這種情況下Kubernetes集群部分互通,一個集群的Pod可以直接訪問另外一個集群的Pod和ECS,但不能訪問另外一個集群的Service。
VPC互聯(lián)
兩個VPC網(wǎng)絡(luò)互聯(lián)的情況下,可以通過路由表配置哪些報文要發(fā)送到對端VPC里。如下表所示,VPC 1使用地址段192.168.0.0/16,VPC 2使用地址段172.16.0.0/12,您可以通過路由表,指定在VPC 1里把目的地址為172.16.0.0/12的報文都發(fā)送到VPC 2。
表 3. VPC互聯(lián)場景
類別
地址段
目的端
轉(zhuǎn)發(fā)到
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里創(chuàng)建的Kubernetes集群有以下限制:
不能和VPC 1的地址段重疊
不能和VPC 2的地址段重疊
不能和其他集群的地址段重疊
不能和Pod的地址段重疊
不能和Service的地址段重疊
此例子中,Kubernetes集群Pod地址段可以選擇10.0.0.0/8下的某個子段。
說明您需特別關(guān)注轉(zhuǎn)發(fā)到VPC 2的地址段,可以把這部分地址理解成已經(jīng)占用的地址,Kubernetes集群不能和已經(jīng)占用的地址重疊。
如果VPC 2里要訪問VPC 1的Kubernetes Pod,則需要在VPC 2里配置到VPC 1 Kubernetes集群Pod地址的路由。
VPC網(wǎng)絡(luò)到IDC
和VPC互聯(lián)場景類似,同樣存在VPC里部分地址段路由到IDC,Kubernetes集群的Pod地址就不能和這部分地址重疊。IDC里如果需要訪問Kubernetes里的Pod地址,同樣需要在IDC端配置到專線VBR的路由表。