全部產品
Search
文件中心

Container Compute Service:網路概述

更新時間:Jan 15, 2025

阿里雲容器計算服務ACS整合Kubernetes網路、阿里雲VPC、阿里雲SLB,提供穩定高效能的容器網路。本文介紹ACS叢集網路及阿里雲網路底層基礎設施的重要概念,如容器網路CNI、Service、Ingress、提供服務發現能力的DNS等。您可以通過瞭解這些概念,更合理地設計應用部署模型和網路訪問的方式。

ACS常見網路能力一覽表

分類

常見網路能力

功能支援

參考文檔

網路設定管理

IPv4/IPv6雙棧

不支援

Pod維度網路設定

支援

為Pod指定交換器和安全性群組

設定Pod安全性群組

支援

為Pod指定交換器和安全性群組

南北向訪問

Pod訪問公網

支援

從公網直接存取Pod

支援

使用LoadBalancer服務

支援

通過使用自動建立CLB的服務公開應用

使用Ingress

支援

ALB Ingress管理

Service

由於雲原生的應用,通常需要敏捷的迭代和快速的彈性,且單一容器和其相關的網路資源的生命非常短暫,所以需要固定的訪問地址,以及自動負載平衡實現快速的業務彈性。ACS採用Service方式為一組容器提供固定的訪問入口,並對這一組容器做負載平衡。實現原理如下:

  • 建立Service對象時,ACS會分配一個相對固定的Service IP地址。

  • 通過欄位selector選擇一組容器,以將這個Service IP地址和連接埠負載平衡到這一組容器的IP和連接埠上。

Service網路支援以下多種模式分別對接不同來源和類型的用戶端的訪問:

  • ClusterIP

    • ClusterIP類型的Service用於叢集內部的應用間訪問,如果您的應用需要暴露到叢集內部提供服務,需使用ClusterIP類型的Service來暴露。

    說明

    建立Service時預設的Service類型為ClusterIP。

  • LoadBalancer

  • 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版和負載平衡等。

    下圖展示了VPC的基礎拓撲。每個VPC至少由三部分組成:私網網段、交換器和路由表。

    • 私網網段:在建立VPC和交換器時,您需要以CIDR地址塊的形式指定專用網路使用的私網網段。

    • 路由表:建立VPC後,系統會自動為您建立一張系統路由表並為其添加系統路由來管理VPC的流量。

    • 交換器:您可以通過建立交換器為專用網路劃分一個或多個子網。同一專用網路內的不同交換器之間內網互連。您可以將應用部署在不同可用性區域的交換器內,提高應用的可用性。

  • 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執行個體到伺服器集區,也可以通過虛擬伺服器組或主備伺服器組來大量新增和管理。