全部產品
Search
文件中心

Container Service for Kubernetes:網路管理概述

更新時間:Sep 13, 2024

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屬性中指定clusterIP欄位為None類型。採用Headless Service類型後,Service將沒有固定的虛擬IP地址,用戶端訪問Service的網域名稱時會通過DNS返回所有的後端Pod執行個體的IP地址,用戶端需要採用DNS負載平衡來實現對後端的負載平衡。

ExternalName

ExternalName類型的Service會在叢集中將一個內部服務名稱映射到一個外部網域名稱。這種映射使得叢集內的Pod可以通過Service Name來訪問外部網域名稱。

Ingress概述

ACK Edge叢集中,與Service的4層負載平衡不同,Ingress是叢集內Service對外暴露7層的訪問存取點,用於為叢集中的多個Service提供統一的入口。您可以通過Ingress資源來配置不同的7層的轉寄規則,例如通過網域名稱或者訪問路徑來路由到不同的Service上,從而達到7層的負載平衡作用。更多資訊,請參見Ingress概述