ACK Edge集群支持將云下IDC服務設備以及邊緣設備接入到阿里云容器服務平臺,并提供云上的ACK功能,同時可以管理自有的計算資源,本文介紹ACK Edge集群網絡的重要概念和網絡模型,包括云邊連接網絡、容器網絡CNI、Service和Ingress等。通過了解這些概念,您可以更合理地設計應用部署以及網絡訪問方式。
云邊網絡連接類型
ACK Edge集群提供兩種網絡接入類型:公網型和專線型。
公網接入:本地IDC設備或邊緣設備通過公網NAT或公網網卡訪問云上托管的ACK控制面和阿里云產品,實現控制面網絡通信以及云產品的訪問。
專線接入:本地IDC或邊緣設備通過專線、VPN、或其他網絡方案打通,本地IDC計算設備或邊緣設備通過專線訪問云上托管的ACK控制面和阿里云云產品。下圖以阿里云高速通道為例。
云邊運維通信組件
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概述。