ACK Edge叢集支援將雲下IDC服務裝置以及邊緣裝置接入到阿里雲Container Service平台,並提供雲上的ACK功能,同時可以管理自有的計算資源,本文介紹ACK Edge叢集網路的重要概念和網路模型,包括雲邊串連網路、容器網路CNI、Service和Ingress等。通過瞭解這些概念,您可以更合理地設計應用部署以及網路訪問方式。
雲邊網路連接類型
ACK Edge叢集提供兩種網路接入類型:公網型和專線型。
公網接入:本地IDC裝置或邊緣裝置通過公網NAT或公網網卡訪問雲上託管的ACK控制面和阿里雲產品,實現控制面網路通訊以及雲產品的訪問。
專線接入:本地IDC或邊緣裝置通過專線、VPN、或其他網路方案打通,本地IDC計算裝置或邊緣裝置通過專線訪問雲上託管的ACK控制面和阿里雲雲產品。下圖以阿里雲Express Connect為例。
雲邊營運通訊組件
ACK Edge叢集採用了中心雲管理IDC或邊緣裝置的架構,由於計算裝置通常分散在多個地區及不同的網路域中,因此中心雲與邊緣側無法直接通訊。
為滿足中心雲對邊緣側營運、監控的需求,可以採用以下兩種解決方案:
專線通訊:通過專線的方案串連中心雲VPC以及邊緣側的IDC或邊緣裝置,實現雲邊通過專線進行私網通訊。
公網隧道:通過雲邊營運通訊組件Raven在雲邊之間的公網上構建反向隧道,通過反向隧道實現營運監控流量通訊。要求邊緣側IDC或裝置具有訪問公網的能力。更多詳細資料,請參見跨域營運通訊組件Raven。
容器網路CNI
Kubernetes本身並未實現容器間的網路互聯能力,但是它通過容器網路介面(CNI)對容器間的網路做出了標準化的定義:
Pod在容器網路中的狀態隨著Pod生命週期而變化。例如,Pod建立後需要加入網路,銷毀後需要退出網路。
Pod在容器網路中擁有唯一的IP地址,以便於識別身份。
Pod可以與叢集內的端點與叢集外的端點互相訪問。
容器網路外掛程式(CNI Plugins)負責容器網路的具體實現。容器網路外掛程式決定了Pod IP地址分配的機制、是否使用Overlay網路、叢集內流量的轉寄鏈路、對Pod的存取控制機制等容器網路特性。目前已經有很多知名的開源容器網路外掛程式,如Calico、Flannel、Cilium等。
ACK Edge叢集支援兩種容器網路外掛程式:Flannel與Terway Edge。這兩種外掛程式擁有不同的特性,請參照下方介紹,在建立叢集前完成容器網路外掛程式的選型。
叢集建立完成後,不支援Terway Edge與Flannel之間的變更切換。
Flannel網路模式(Overlay容器網路)
在ACK Edge叢集中Flannel採用了VXLAN模式,在三層主機網路上構建一層VXLAN容器網路,實現跨主機的Pod互訪。
Flannel網路模式中Pod的網段獨立於VPC的網段。Pod網段會按照掩碼均勻劃分給每個叢集中的節點,每個節點上的Pod會從節點上劃分的網段中分配IP地址。具有以下特點:
Pod網段獨立於VPC的虛擬網段。
容器間資料包會通過主機進行VXLAN封包以進行傳輸。
開箱即用,無需外部網路裝置的額外配置。
關於Flannel網路外掛程式詳細資料,請參見Flannel網路外掛程式。
Terway Edge網路模式(Underlay容器網路)
在ACK Edge叢集中,Terway Edge版在雲端節點池中採用雲原生的網路方案,直接基於阿里雲VPC中的彈性網卡資源構建容器網路,Pod會通過彈性網卡直接分配VPC中的IP地址。在邊緣節點池中則需要指定一個虛擬Pod網段,容器會從這個虛擬Pod網段中擷取IP地址。具有以下特點:
雲端Pod網段與ECS同位於VPC網段中,在同一網路平面。
邊緣Pod網段獨立於主機網路網段。
容器間通訊無需封包,相比於Overlay容器網路效率更高。
需要配置外部網路裝置的路由,實現容器網路包的傳輸。
支援叢集外主機、容器、雲產品通過Pod IP直接存取叢集內容器。
關於Terway Edge網路外掛程式詳細資料,請參見Terway Edge網路外掛程式。
Service概述
Service是可以對一組容器提供固定訪問入口的服務暴露方式,支援以下多種模式,以滿足不同來源和類型的用戶端訪問需求。
類型 | 說明 |
ClusterIP | ClusterIP類型的Service用於在叢集內部實現應用間的訪問。如果您的應用需要暴露到叢集內部提供服務,可使用ClusterIP類型的Service進行暴露。 說明 建立Service時預設的Service類型為ClusterIP。 |
NodePort | NodePort類型的Service通過叢集節點上的一個固定連接埠,將應用向外部暴露,您就可以在叢集外部通過節點的IP地址和連接埠訪問叢集內的應用。 |
LoadBalancer | LoadBalancer類型的Service同樣是將叢集內部部署的應用向外暴露,它通過阿里雲的負載平衡進行暴露的,相對於NodePort方式,有更高的可用性和效能。關於如何通過LB類型的Service服務暴露,請參見使用負載平衡類型的Service暴露應用。 |
Headless Service | Headless Service類型的Service是在Service屬性中指定 |
ExternalName | ExternalName類型的Service會在叢集中將一個內部服務名稱映射到一個外部網域名稱。這種映射使得叢集內的Pod可以通過Service Name來訪問外部網域名稱。 |
在ACK Edge叢集中,由於計算資源通常分布在不同的網路域,針對分布式情境為您提供了以下能力。
類型 | 說明 |
Service的服務拓撲 | 當用戶端和被訪問的服務端Pod位於不同網路域時,通訊將無法完成,採用Service服務拓撲能力後,用戶端的請求只達到本網路域或本節點上的後端Pod,相關操作,請參見節點池服務拓撲管理。 |
NodePort Service的連接埠隔離 | 為了讓多個網路域的NodePort Service進行連接埠隔離,您可以對所監聽連接埠進行隔離,相關操作,請參見NodePort連接埠監聽隔離。 |
Ingress概述
在ACK Edge叢集中,與Service的4層負載平衡不同,Ingress是叢集內Service對外暴露7層的訪問存取點,用於為叢集中的多個Service提供統一的入口。您可以通過Ingress資源來配置不同的7層的轉寄規則,例如通過網域名稱或者訪問路徑來路由到不同的Service上,從而達到7層的負載平衡作用。更多資訊,請參見Ingress概述。