Google Kubernetes Engine (GKE) 網路以 Google 全球 VPC 為基礎,為容器化應用程式提供強大、可擴充且安全的基礎。這個控制器會將抽象的 Kubernetes 網路模型轉換為具體的高效能資源,例如全域負載平衡器和高輸送量 VM 網路。
本文和本文件集中的其他文章,適用於負責設計機構網路架構的雲端架構師和網路專家。
Kubernetes 網路的差異之處
使用 Kubernetes 自動化調度管理應用程式時,您會以不同的方式思考網路設計。使用 Kubernetes 時,您只需專注於 Pod、Service 和外部用戶端之間的通訊方式,不必管理個別主機或虛擬機器 (VM) 的網路。這項抽象化功能可省去手動連接埠對應等複雜作業,簡化應用程式部署和擴充作業。
必要條件
瞭解 GKE 網路之前,請先瞭解下列事項:
- 一般網路、 Google Cloud和 Kubernetes 的基本概念。
- 請參閱「開始瞭解 GKE」。
核心網路和基礎知識 Google Cloud
GKE 採用標準網路原則,如要瞭解 GKE 如何管理及轉送叢集內和跨叢集的流量,您應熟悉下列核心網路概念。
網路層和通訊協定
如要瞭解資料在網路中的傳輸方式,請先瞭解網路層。GKE 廣泛使用網路堆疊的傳輸、網際網路和應用程式層概念。您應熟悉這些裝置的基本功能,以及 HTTP、DNS 和 TCP/IP 套件等常見通訊協定。詳情請參閱 OSI 模型。
傳輸層 - 傳輸控制通訊協定 (TCP) 或使用者資料包通訊協定 (UDP):處理應用程式之間的端對端通訊。傳輸控制通訊協定 (TCP) 提供可靠、有序且經過錯誤檢查的傳輸作業,這對大多數應用程式流量而言至關重要。使用者資料包通訊協定 (UDP) 提供更快速的無連線通訊,通常用於串流或遊戲。GKE 會使用這兩種通訊協定進行 Pod 和服務通訊。
網際網路層 - 網際網路通訊協定 (IP):在不同網路間為封包定址及轉送。GKE 中的每個 Pod 和節點都會取得 IP 位址,而 IP 位址路由會決定流量在叢集和 VPC 網路中的路徑。
應用程式層 - 超文本傳輸通訊協定 (HTTP) 和網域名稱系統 (DNS):應用程式會在這個層級與網路互動。HTTP 和 HTTPS 是網路通訊的基礎,Ingress 控制器和負載平衡器通常會使用這兩種通訊協定公開應用程式。DNS 對於 Kubernetes 中的服務探索至關重要,可將使用者能理解的服務名稱轉譯為 IP 位址。
IP 位址和 CIDR 標記法
您必須瞭解 IP 位址和 CIDR (無類別跨網域路由) 標記法,因為 Kubernetes 網路模型會大量使用 IP 位址,在所有元件之間進行通訊。CIDR 對於規劃叢集在虛擬私有雲網路中的 IP 位址分配至關重要。 Google Cloud您可以為 Pod、Service 和節點定義 IP 位址區塊。舉例來說,為 Pod 分配 10.10.0.0/16 會保留 65,536 個 IP 位址。妥善規劃 CIDR 有助於避免叢集擴充時 IP 位址用盡的情況。
Linux 網路公用程式
GKE 會使用底層 Linux 核心功能,在叢集內實作流量路徑和負載平衡。您應熟悉基本的 Linux 網路管理概念和公用程式,例如路由表和 iptables。傳統上,每個節點上的重要 Kubernetes 元件 kube-proxy 會編寫這些公用程式,攔截要前往 Service 的流量,並將流量重新導向至其中一個後端 Pod。使用 GKE Dataplane V2 的新式 GKE 叢集會以 eBPF 取代 iptables,進而提升效能和可觀測性。
瞭解 Kubernetes 網路模型
Kubernetes 網路模型定義容器化應用程式在叢集內的通訊方式。Kubernetes 強調 Pod 對 Pod 和服務之間的通訊,與著重虛擬機器的傳統模型不同。這個模型會抽象化動態 Pod IP 位址的不可靠性,讓應用程式網路更具可預測性。由於 Pod 是臨時的,隨時可能以新的 IP 位址重新建立,因此直接與 Pod IP 位址通訊本質上並不穩定。Kubernetes 會將 Pod 分組到 Service 中,解決這個問題。Service 會提供穩定的虛擬 IP 位址 (ClusterIP) 和一致的 DNS 名稱,應用程式可穩定連線。這個穩定端點搭配扁平網路,可讓所有 Pod 直接通訊,不必使用 NAT,為現代化容器化應用程式奠定穩固基礎。
Kubernetes 網路模型的重要原則
每個 Pod 都有專屬的 IP 位址:Kubernetes 叢集中的每個 Pod 都會取得自己的 IP 位址,該 Pod 內的所有容器都會共用這個位址。有了這個專屬 IP 位址,Pod 就能像網路上的個別主機一樣運作,與虛擬機器類似。
Pod 對 Pod 通訊不使用 NAT:所有 Pod 都能使用 IP 位址直接通訊,無論在哪個節點上執行都一樣。在 GKE 中,這項直接通訊是透過 虛擬私有雲原生叢集達成,其中 Pod IP 位址是虛擬私有雲網路中的別名 IP 位址。有了這些別名 IP 位址,Pod 就能在虛擬私有雲內直接轉送,不必使用網路位址轉譯 (NAT),簡化跨節點通訊。
Service 可提供穩定的端點:Pod 是暫時性的,隨時可能以新的 IP 位址重新建立,因此直接透過 Pod IP 位址進行通訊並不可靠。Kubernetes Service 會將一組 Pod 分組,並公開穩定的 IP 位址 (
ClusterIP) 和 DNS 名稱,解決這個問題。這項問題抽象化功能可讓您以一致的方式存取動態 Pod 集。內建 DNS 服務探索功能:Kubernetes 內建 DNS 服務,可自動為服務指派 DNS 名稱。應用程式可以使用這些名稱 (例如
my-service.my-namespace.svc.cluster.local),穩定地找出其他服務並與之通訊。整合式負載平衡。當用戶端將流量傳送至服務的
ClusterIP位址時,節點上的網路規則 (由kube-proxy或 GKE Dataplane V2 程式設計) 會攔截流量,並在該服務中所有健康狀態良好的 Pod 之間進行負載平衡。這項分配作業會在來源端進行,因此效率極高,有助於確保高可用性。
總而言之,Kubernetes 網路模型會將許多傳統網路複雜性抽象化,簡化為一組更強大的容器化應用程式基本元素。透過啟用直接 Pod 通訊、穩定的服務端點,以及整合式 DNS 和負載平衡,為現代化容器化應用程式提供穩固且可擴充的基礎。
GKE 和 Google Cloud 關係
GKE 網路是 Kubernetes 網路概念模型與 Google Cloud實體基礎架構之間的橋樑:
Kubernetes 網路模型:Kubernetes 會定義規則,讓每個 Pod 取得自己的 IP 位址,直接進行 Pod 對 Pod 的通訊,不需要 NAT。
Google Cloud 網路:這是基礎架構,包括虛擬私有雲、子網路、防火牆和負載平衡器。
GKE 網路:這個連線層會使用 Google Cloud的基礎架構,實作 Kubernetes 模型。
容器網路介面 (CNI):GKE 會在每個節點上使用 CNI 外掛程式,處理 Pod IP 位址分配作業,並將 Pod 連線至節點的網路。
GKE 控制層:這些元件會與Google Cloud 互動,自動設定 Pod IP 範圍的 VPC 路由、管理防火牆規則,以及根據 Kubernetes 部署作業佈建負載平衡器。
為什麼 Google Cloud 網路知識對 GKE 至關重要
GKE 建構於 Google Cloud 網路基礎架構之上。GKE 不會建立獨立的網路層,而是使用現有的 Google Cloud 網路元件。因此,瞭解網路是設計及保護 GKE 叢集的重要基礎。 Google Cloud
以下說明 Google Cloud 網路基礎知識的重要性:
叢集在 VPC 中執行:每個 GKE 叢集都會在 VPC 中運作。節點、Pod 和服務的所有 IP 位址,都是從 VPC 子網路中定義的 IP 位址範圍取得。如要正確分配 IP 位址並避免用盡,您需要具備 VPC 和子網路設計的實務知識。詳情請參閱 VPC 說明文件。
應用程式公開作業使用 Google Cloud 負載平衡器:使用 LoadBalancer 服務或 Ingress 將應用程式公開至叢集外部時,GKE 會佈建內建 Google Cloud 負載平衡器。LoadBalancer 服務通常用於第 4 層流量,Ingress 則用於第 7 層 HTTP(S) 流量。瞭解這些負載平衡器的運作方式,有助於管理外部流量、設定健康狀態檢查,以及有效排解連線問題。詳情請參閱 Cloud Load Balancing 說明文件。
透過 Google Cloud 防火牆規則強制執行安全性: GKE 會自動建立部分防火牆規則,允許重要的叢集流量。不過,如要保護工作負載,必須定義自訂虛擬私有雲防火牆規則。設定錯誤可能會封鎖重要流量,因此請務必瞭解這些規則的運作方式。詳情請參閱 Cloud Next Generation Firewall 說明文件。
後續步驟
- 如要深入瞭解架構,請參閱 GKE 網路的三大支柱。
- 瞭解 GKE 網路政策和 Kubernetes 網路政策。
- 瞭解如何使用 Service 公開應用程式,以及 Kubernetes Service 的概念。
- 瞭解 GKE 的 Ingress 和 Kubernetes Ingress。
- 深入瞭解 VPC 原生叢集。
- 瞭解 GKE Dataplane V2 的優點。
- 排解 GKE 網路問題。