服務
即使工作負載分散在多個後端,也能將叢集中執行的應用程式公開在單一面向外部的端點之後。
Kubernetes 網路模型由幾個部分組成
叢集中的每個 pod 都有其自己唯一的叢集範圍 IP 位址。
localhost
互相通訊。pod 網路(也稱為叢集網路)處理 pod 之間的通訊。它確保(除非有意的網路分段)
所有 pod 都可以與所有其他 pod 通訊,無論它們是在相同的 節點 或不同的節點上。Pod 可以直接互相通訊,而無需使用代理或位址轉譯 (NAT)。
在 Windows 上,此規則不適用於 host-network pod。
節點上的代理程式(例如系統常駐程式或 kubelet)可以與該節點上的所有 pod 通訊。
服務 API 可讓您為由一個或多個後端 pod 實作的服務提供穩定(長期存在)的 IP 位址或主機名稱,其中組成服務的個別 pod 可能會隨時間變更。
Kubernetes 自動管理 EndpointSlice 物件,以提供有關目前支援服務的 pod 資訊。
服務代理實作會監控服務與 EndpointSlice 物件的集合,並程式化資料平面以將服務流量路由至其後端,方法是使用作業系統或雲端供應商 API 來攔截或重寫封包。
閘道 API(或其前身 Ingress)可讓您讓叢集外部的用戶端可以存取服務。
type: LoadBalancer
提供。網路策略 是一種內建的 Kubernetes API,可讓您控制 pod 之間或 pod 與外部世界之間的流量。
在較舊的容器系統中,不同主機上的容器之間沒有自動連線能力,因此通常需要明確地在容器之間建立連結,或將容器連接埠對應到主機連接埠,以使其可由其他主機上的容器存取。這在 Kubernetes 中是不需要的;Kubernetes 的模型是,從連接埠分配、命名、服務探索、負載平衡、應用程式組態與移轉的角度來看,pod 可以被視為非常像 VM 或實體主機。
此模型只有少數部分是由 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)網路服務可用,此機制理解 Web 概念,例如 URI、主機名稱、路徑等等。 Ingress 概念讓您可以根據您透過 Kubernetes API 定義的規則,將流量對應到不同的後端。
為了讓 Ingress 在您的叢集中運作,必須有一個 Ingress 控制器正在執行。您需要選擇至少一個 Ingress 控制器,並確保它已在您的叢集中設定。此頁面列出了您可以部署的常見 Ingress 控制器。
Gateway API 是一系列 API 種類,提供動態基礎架構佈建和進階流量路由。
EndpointSlice API 是 Kubernetes 用來讓您的服務擴展以處理大量後端的機制,並允許叢集有效地更新其健康後端列表。
如果您想在 IP 位址或埠層級(OSI 第 3 或 4 層)控制流量,NetworkPolicy 允許您指定叢集內以及 Pod 和外部世界之間流量的規則。您的叢集必須使用支援 NetworkPolicy 強制執行的網路外掛程式。
您的工作負載可以使用 DNS 探索叢集內的服務;此頁面說明其運作方式。
Kubernetes 讓您可以配置單堆疊 IPv4 網路、單堆疊 IPv6 網路或雙堆疊網路(同時啟用兩個網路系列)。此頁面說明如何操作。
「拓撲感知路由」提供一種機制,可協助將網路流量保持在流量來源的區域內。在叢集中的 Pod 之間優先選擇相同區域的流量,有助於提高可靠性、效能(網路延遲和輸送量)或降低成本。
如果叢集中的兩個 Pod 想要通訊,而且兩個 Pod 實際上都在同一個節點上執行,請使用「服務內部流量策略」將網路流量保持在該節點內。避免透過叢集網路往返可以幫助提高可靠性、效能(網路延遲和輸送量)或降低成本。