服務
將執行在叢集中的應用程式暴露在單個對外端點後,即使工作負載分佈在多個後端上,也能使其可用。
Kubernetes 網路模型由以下幾個部分組成:
叢集中的每個Pod都有自己獨特的叢集範圍 IP 地址。
Pod網路(也稱為叢集網路)處理Pod之間的通訊。它確保(排除有意分割網路的情況):
所有 Pod 都可以與其他所有 Pod 通訊,無論它們是在同一節點上還是在不同節點上。Pod 可以直接相互通訊,無需使用代理或地址轉換 (NAT)。
在 Windows 上,此規則不適用於主機網路 Pod。
節點上的代理(例如系統守護程序或 kubelet)可以與該節點上的所有 Pod 通訊。
Service API 允許你為由一個或多個後端 Pod 實現的服務提供一個穩定的(長期存在的)IP 地址或主機名,其中組成服務的單個 Pod 可能會隨時間而變化。
Kubernetes 自動管理 EndpointSlice 物件,以提供當前支援 Service 的 Pod 資訊。
服務代理實現監視 Service 和 EndpointSlice 物件的集合,並透過使用作業系統或雲提供商 API 來攔截或重寫資料包,從而程式設計資料平面以將服務流量路由到其後端。
Gateway API(或其前身Ingress)允許您讓叢集外部的客戶端訪問服務。
NetworkPolicy是 Kubernetes 內建的 API,允許您控制 Pod 之間或 Pod 與外部世界之間的流量。
在較舊的容器系統中,不同主機上的容器之間沒有自動連線,因此通常需要顯式地在容器之間建立連結,或者將容器埠對映到主機埠以使其可被其他主機上的容器訪問。這在 Kubernetes 中不需要;Kubernetes 的模型是,從埠分配、命名、服務發現、負載均衡、應用程式配置和遷移的角度來看,Pod 可以像虛擬機器或物理主機一樣處理。
此模型中只有少數部分由 Kubernetes 本身實現。對於其他部分,Kubernetes 定義了 API,但相應的功能由外部元件提供,其中一些是可選的。
Pod 網路名稱空間設定由實現容器執行時介面的系統級軟體處理。
Pod 網路本身由Pod 網路實現管理。在 Linux 上,大多數容器執行時使用容器網路介面 (CNI)與 Pod 網路實現進行互動,因此這些實現通常被稱為_CNI 外掛_。
Kubernetes 提供了一個服務代理的預設實現,稱為kube-proxy,但一些 Pod 網路實現則使用自己的服務代理,該代理與實現的其他部分更緊密整合。
NetworkPolicy 通常也由 Pod 網路實現來實施。(一些更簡單的 Pod 網路實現不支援 NetworkPolicy,或者管理員可能會選擇在沒有 NetworkPolicy 支援的情況下配置 Pod 網路。在這些情況下,API 仍然存在,但不會產生任何效果。)
Gateway API有許多實現,其中一些特定於特定的雲環境,一些更側重於“裸機”環境,還有一些更通用。
透過使用服務連線應用程式教程,您可以透過動手示例瞭解服務和 Kubernetes 網路。
叢集網路解釋瞭如何為您的叢集設定網路,並提供了所涉及技術的概述。
將執行在叢集中的應用程式暴露在單個對外端點後,即使工作負載分佈在多個後端上,也能使其可用。
使用協議感知的配置機制使您的 HTTP(或 HTTPS)網路服務可用,該機制理解 URI、主機名、路徑等 Web 概念。Ingress 概念允許您根據透過 Kubernetes API 定義的規則將流量對映到不同的後端。
為了讓Ingress在您的叢集中工作,必須有一個_Ingress 控制器_正在執行。您需要至少選擇一個 Ingress 控制器並確保其已在您的叢集中設定。此頁面列出了您可以部署的常見 Ingress 控制器。
Gateway API 是一系列 API 種類,提供動態基礎設施供應和高階流量路由。
EndpointSlice API 是 Kubernetes 用來讓您的 Service 擴充套件以處理大量後端,並允許叢集高效更新其健康後端列表的機制。
如果你想在 IP 地址或埠級別(OSI 第 3 層或第 4 層)控制流量,NetworkPolicy 允許你指定叢集內部以及 Pod 與外部世界之間的流量規則。你的叢集必須使用支援 NetworkPolicy 強制執行的網路外掛。
您的工作負載可以使用 DNS 在叢集中發現服務;本頁解釋了其工作原理。
Kubernetes 允許您配置單棧 IPv4 網路、單棧 IPv6 網路或同時啟用兩種網路家族的雙棧網路。本頁解釋瞭如何操作。
“拓撲感知路由”提供了一種機制,有助於將網路流量保留在其來源區域內。優先選擇叢集中 Pod 之間的同區域流量有助於提高可靠性、效能(網路延遲和吞吐量)或降低成本。
如果叢集中的兩個 Pod 需要通訊,並且它們都執行在同一節點上,請使用_服務內部流量策略_將網路流量保留在該節點內。避免透過叢集網路進行往返有助於提高可靠性、效能(網路延遲和吞吐量)或降低成本。