阿里雲容器計算服務ACS整合Kubernetes網路、阿里雲VPC、阿里雲SLB,提供穩定高效能的容器網路。本文介紹ACS叢集網路及阿里雲網路底層基礎設施的重要概念,如容器網路CNI、Service、Ingress、提供服務發現能力的DNS等。您可以通過瞭解這些概念,更合理地設計應用部署模型和網路訪問的方式。
ACS常見網路能力一覽表
分類 | 常見網路能力 | 功能支援 | 參考文檔 |
網路設定管理 | IPv4/IPv6雙棧 | 不支援 | 無 |
Pod維度網路設定 | 支援 | ||
設定Pod安全性群組 | 支援 | ||
南北向訪問 | Pod訪問公網 | 支援 | |
從公網直接存取Pod | 支援 | ||
使用LoadBalancer服務 | 支援 | ||
使用Ingress | 支援 |
Service
由於雲原生的應用,通常需要敏捷的迭代和快速的彈性,且單一容器和其相關的網路資源的生命非常短暫,所以需要固定的訪問地址,以及自動負載平衡實現快速的業務彈性。ACS採用Service方式為一組容器提供固定的訪問入口,並對這一組容器做負載平衡。實現原理如下:
建立Service對象時,ACS會分配一個相對固定的Service IP地址。
通過欄位
selector選擇一組容器,以將這個Service IP地址和連接埠負載平衡到這一組容器的IP和連接埠上。
Service網路支援以下多種模式分別對接不同來源和類型的用戶端的訪問:
ClusterIP
ClusterIP類型的Service用於叢集內部的應用間訪問,如果您的應用需要暴露到叢集內部提供服務,需使用ClusterIP類型的Service來暴露。
說明建立Service時預設的Service類型為ClusterIP。
LoadBalancer
LoadBalancer類型的Service同樣是將叢集內部部署的應用向外暴露,不過它是通過阿里雲的負載平衡進行暴露的,相對於NodePort方式,有更高的可用性和效能。關於如何通過LoadBalancer類型Service暴露應用,請參見通過使用已有負載平衡的服務公開應用和通過使用自動建立負載平衡的服務公開應用。
Headless Service
Headless Service類型的Service是在Service屬性中指定
clusterIP欄位為None類型。採用Headless Service類型後,Service將沒有固定的虛擬IP地址,用戶端訪問Service的網域名稱時會通過DNS返回所有的後端Pod執行個體的IP地址,用戶端需要採用DNS負載平衡來實現對後端的負載平衡。
ExternalName
ExternalName類型的Service將叢集外部的網域名稱映射到叢集內部的Service上,例如將外部的資料庫網域名稱映射到叢集內部的Service名,那麼就能在叢集內部通過Service名直接存取。
關於Service的負載平衡配置需要注意內容,請參見Service的負載平衡配置注意事項。
Ingress
在ACS叢集中,與Service的4層負載平衡不同,Ingress是叢集內Service對外暴露7層的訪問存取點。您可以通過Ingress資源來配置不同的7層轉寄規則,例如通過網域名稱或者訪問路徑來路由到不同的Service上,從而達到7層的負載平衡作用。更多資訊,請參見ALB Ingress管理。
樣本
常見的前後端分離的架構方式中,前後端的訪問地址分別使用不同的訪問路徑。對應這種情境,可以採用Ingress,根據7層的訪問路徑負載到不同的應用執行個體上。
服務發現DNS
ACS使用DNS來實現應用的服務發現能力,例如用戶端應用可以通過Service的服務名解析出它的ClusterIP訪問,也可以通過StatefulSet的Pod名解析出Pod的IP地址。採用DNS服務發現的能力讓叢集中應用間的調用與IP地址和部署環境相解耦。
叢集的CoreDNS會將Service名自動轉換成對應的Service的IP地址,來實現不同部署環境中同樣的訪問入口。關於叢集DNS組件的使用和調優詳細資料,請參見DNS原理和配置說明。
網路底層基礎設施
VPC
阿里雲Virtual Private Cloud(Virtual Private Cloud)是基於阿里雲建立的自訂私人網路,不同的專用網路之間徹底邏輯隔離。您可以在專用網路內建立和管理雲產品執行個體,例如雲端服務器、雲資料庫RDS版和負載平衡等。
SLB
阿里雲Server Load Balancer(Server Load Balancer)通過設定虛擬服務地址,將添加的ECS執行個體虛擬成一個高效能、高可用的應用服務池,並根據轉寄規則,將來自用戶端的請求分發給雲端服務器池中的ECS執行個體。阿里雲Server Load Balancer的詳細介紹,請參見Server Load Balancer產品家族介紹。
負載平衡預設檢查雲端服務器池中的ECS執行個體的健康狀態,自動隔離異常狀態的ECS執行個體,消除了單台ECS執行個體的單點故障,提高了應用的整體服務能力。此外,負載平衡還具備抗DDoS攻擊的能力,增強了應用服務的防護能力。
負載平衡由以下三個部分組成:
Server Load Balancer執行個體
一個Server Load Balancer執行個體是一個啟動並執行負載平衡服務,用來接收流量並將其分配給後端伺服器。要使用負載平衡服務,您必須建立一個Server Load Balancer執行個體,並至少添加一個監聽和兩台ECS執行個體。
監聽
監聽用來檢查用戶端請求並將請求轉寄給後端伺服器。監聽也會對後端伺服器進行健全狀態檢查。
後端伺服器
一組接收前端請求的ECS執行個體。您可以單獨添加ECS執行個體到伺服器集區,也可以通過虛擬伺服器組或主備伺服器組來大量新增和管理。