Terway Edge網路外掛程式是基於Terway和自研Flannel Route模式在ACK Edge叢集提供的Underlay容器網路外掛程式,容器網路外掛程式需要在建立叢集時進行安裝,並且叢集建立之後不支援更改。本文介紹如何配置Terway Edge網路外掛程式。
在建立叢集時安裝Terway網路外掛程式
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊建立叢集。
單擊ACK Edge 叢集頁簽,為Terway網路外掛程式配置叢集網路的關鍵參數。
配置項
說明
配置項
說明
專用網路
叢集使用的VPC。
網路外掛程式
選擇Terway Edge。
交換器
叢集中節點所使用的虛擬交換器網段。建議選擇來自3個及以上不同可用性區域的交換器,以達到更高叢集可用性等級。
Pod 交換器
雲端Pod所使用的虛擬交換器網段,可以與節點虛擬交換器網段重合。
Service CIDR
Service所使用的網段,不能與節點及Pod的網段重合。
Pod網路CIDR
邊緣側可供分配的容器網路IP段,請參見Kubernetes叢集網路規劃。
節點 Pod 數量
邊緣節點上最大可支援建立的Pod數量。
專線模式下的網路基礎設施管理
如果您希望將IDC以專線的方式接入到ACK Edge叢集中,在本地IDC和阿里雲Virtual Private Cloud之間構建安全、穩定、高速的私網通訊,以阿里雲Express Connect為例,您需要進行以下網路設定:
以下圖為例,本地IDC主機網段為172.16.0.0/16,雲端VPC網段為192.168.0.0/16,邊緣Pod網路CIDR為10.0.0.0/8,由邊緣/本地IDC訪問中心雲的路由稱為上行路由、由中心雲訪問本地IDC/邊緣裝置被稱之為下行路由。
分別在本地IDC內交換器、網關裝置、邊界路由器以及專線網關或雲企業網配置訪問阿里雲VPC(192.168.0.0/16)的上行路由,上行請求可以到達位於VPC的ACK Edge管控面、ECS等產品。
對應也需配置下行路由,確保雲端ACK Edge控制面、ECS、容器訪問IDC主機網段(172.16.0.0/16)和容器網段(10.0.0.0/8)的請求能夠到達本地IDC。
專線配置需要根據具體情境進行自訂,詳細描述及配置方式請參見Express Connect。
雲端使用Terway組件
Terway Edge網路外掛程式在雲端節點池與ACK叢集Pro版的Terway組件的工作模式一致,使用方法請參見Terway網路外掛程式。
目前ACK Edge叢集的Terway僅支援共用ENI模式、暫不支援DataPath、NetworkPolicy、Trunk ENI等能力。
ENS網路中使用Terway組件
Terway Edge網路外掛程式在ENS節點中基於ENS彈性網卡提供容器網路通訊。詳細資料,請參見在ENS網路中使用Terway。
邊緣使用Flannel組件
Terway Edge網路外掛程式在邊緣側採用Flannel網路外掛程式自研的Route模式。節點接入之後,ACK Edge叢集控制面會自動為節點分配一個Pod CIDR網段,這個節點上的Pod IP地址會從這個網段中分配,並且在宿主機路由表中配置好容器路由。
使用BGP宣告容器路由
當兩台節點上的容器進行跨節點通訊時,容器網路資料包需要通過主機的網路棧進行轉寄。
當兩台主機位於同一個區域網路中,可以通過節點主機路由(Flannel會配置主機路由)找到目的主機地址,進行容器網路資料包的傳輸。
當兩台主機位於不同的區域網路中,容器網路資料包就會通過主機轉寄到外部的網路裝置上,但由於網路裝置缺乏容器網段的路由配置,因此無法完成容器網路資料包的傳輸。
Flannel宣告容器網段路由
為了將容器路由配置到外部的網路裝置上,Flannel的Route模式會啟動一個BGP服務,與外部網路裝置構建BGP會話,動態將本區域網路內的容器網路宣告給網路裝置。
配置BGP宣告容器路由
外部網路裝置(三層交換器)需支援BGP協議,並可進行配置操作。
BGPPeer是一個新的CRD(Custom Resource Definition)用於配置BGP鄰居。
步驟一:配置叢集內BGP用戶端
請將以下內容複寫到bgppeer.yaml檔案中,並根據您的需求進行自訂配置。
apiVersion: network.openyurt.io/v1alpha1 kind: BGPPeer metadata: name: peer spec: localSpeakers: - node-1 - node-2 localAsNumber: 65010 peerIP: 172.16.0.1 peerAsNumber: 65001 nodeSelector: alibabacloud.com/nodepool-id=npxxx # 可選項 authPassword: secretKeyRef: name: bgp-secret key: password --- #可選項 apiVersion: v1 kind: Secret metadata: name: bgp-secret namespace: kube-system type: Opaque data: password: bXlTZWNyZXRWYWx1ZQ== # base64編碼的值。
參數說明:
參數
是否必填
說明
參數
是否必填
說明
metadata.name
是
BGPPeer的名稱。
spec.localSpeakers
是
叢集內的BGP用戶端節點。全量宣告本區域網路的所有節點容器網段,建議選擇2個及以上節點。
spec.localAsNumber
是
BGPPeer的ASN,也是BGP用戶端所在的自治系統的編號。ASN在BGP協議中的自治系統唯一識別碼,一般一個區域網路是一個自治系統,私人ASN的範圍為(64512,65535)。
spec.peerIP
是
區域網路網關/三層交換器裝置地址,用於和叢集內BGP用戶端節點之間構建BGP會話。
spec.peerAsNumber
是
區域網路網關/三層交換器裝置的ASN。
spec.gateway
否
自訂指定跨自治域容器通訊的網關地址,預設為該區域網路的網關/交換器地址。
spec.nodeSelector
是
節點選取器。用於選擇屬於本BGPPeer自治系統的節點。建議用節點池label選擇一個節點池的所有節點,如果所有邊緣節點都位於一個區域網路,即一個自治系統,可以配置為
all()
。spec.authPassword
否
建立BGP會話的密碼。首先建立一個K8s資源Secret,要求必須在kube-system命名空間中,將這個Secret的Key記錄到本欄位中,需要標註Secret的Name,以及密碼的Key。
執行以下命令,建立BGPPeer。
kubectl apply -f bgppeer.yaml
執行以下命令,查看BGPPeer應用狀態。
kubectl get bgppeer peer
預期輸出:
NAME LOCALSPEAKERS LOCALASNUMBER PEERIP PEERASNUMBER AGE peer ["node-1","node-2"] 65010 172.16.0.1 65001 10m
步驟二:配置外部網路裝置啟動BGP服務
建議您在叢集中選擇至少三個節點作為BGP對端,保證在組件升級過程中保持BGP會話,避免因容器路由老化導致容器網路不通。
Terway Edge預設開啟BGP GracefulRestart,預設時間為600秒,請您合理配置交換器的BGP GracefulRestart。
根據您網路裝置的型號以及BGP服務的配置方式啟動BGP服務。
在網路裝置上,將步驟1中選擇的BGP節點配置為BGP鄰居,並且確保可以成功建立BGP會話。
步驟三:檢查BGP會話是否成功建立並且發行容器路由
查看BGPPeer的Events。
kubectl describe bgppeers peer-1
輸出的Event中如果包含
FailedEstablish
資訊,則表示BGP會話建立失敗。檢查交換器是否包含容器路由。