服務協定
如果您設定服務(Service),您可以從 Kubernetes 支援的任何網路協定中選擇。
Kubernetes 服務支援以下協定
當您定義服務時,您還可以指定其使用的應用程式協定。
本文檔詳細說明了一些特殊情況,所有這些情況通常都使用 TCP 作為傳輸協定
支援的協定
服務的埠口 protocol
有 3 個有效值
SCTP
Kubernetes v1.20 [穩定]
當使用支援 SCTP 流量的網路外掛程式時,您可以將 SCTP 用於大多數服務。對於 type: LoadBalancer
服務,SCTP 支援取決於雲端供應商是否提供此功能。(大多數不提供)。
在執行 Windows 的節點上不支援 SCTP。
對多宿主 SCTP 關聯的支援
對多宿主 SCTP 關聯的支援要求 CNI 外掛程式可以支援將多個介面和 IP 位址指派給 Pod。
多宿主 SCTP 關聯的 NAT 需要相應核心模組中的特殊邏輯。
TCP
您可以將 TCP 用於任何類型的服務,並且它是預設的網路協定。
UDP
您可以將 UDP 用於大多數服務。對於 type: LoadBalancer
服務,UDP 支援取決於雲端供應商是否提供此功能。
特殊情況
HTTP
如果您的雲端供應商支援,您可以使用 LoadBalancer 模式的服務來配置 Kubernetes 叢集外部的負載平衡器,在特殊模式下,您的雲端供應商的負載平衡器實作 HTTP/HTTPS 反向代理,並將流量轉發到該服務的後端端點。
通常,您將服務的協定設定為 TCP
,並新增一個註釋(annotation)(通常特定於您的雲端供應商),該註釋將負載平衡器配置為處理 HTTP 層級的流量。此配置也可能包括提供 HTTPS(HTTP over TLS)和將純 HTTP 反向代理到您的工作負載。
注意
您也可以使用 Ingress 來公開 HTTP/HTTPS 服務。您可能還想指定連線的應用程式協定為 http
或 https
。如果從負載平衡器到您的工作負載的會話是沒有 TLS 的 HTTP,則使用 http
;如果從負載平衡器到您的工作負載的會話使用 TLS 加密,則使用 https
。
PROXY 協定
如果您的雲端供應商支援,您可以使用設定為 type: LoadBalancer
的服務來配置 Kubernetes 本身外部的負載平衡器,該負載平衡器將轉發以 PROXY 協定 包裝的連線。
然後,負載平衡器會傳送一系列初始八位元組,描述傳入的連線,類似於此範例(PROXY 協定 v1)
PROXY TCP4 192.0.2.202 10.0.42.7 12345 7\r\n
代理協定前導資料之後的資料是來自用戶端的原始資料。當任一方關閉連線時,負載平衡器也會觸發連線關閉,並在可行的情況下傳送任何剩餘資料。
通常,您定義一個協定為 TCP
的服務。您還設定一個特定於您的雲端供應商的註釋,該註釋將負載平衡器配置為將每個傳入的連線包裝在 PROXY 協定中。
TLS
如果您的雲端供應商支援,您可以使用設定為 type: LoadBalancer
的服務作為設定外部反向代理的方式,其中從用戶端到負載平衡器的連線是 TLS 加密的,並且負載平衡器是 TLS 伺服器端點。從負載平衡器到您的工作負載的連線也可以是 TLS,或者可能是純文字。您可以使用的確切選項取決於您的雲端供應商或自訂服務實作。
通常,您將協定設定為 TCP
,並設定一個註釋(通常特定於您的雲端供應商),該註釋將負載平衡器配置為充當 TLS 伺服器。您將使用特定於您的雲端供應商的機制來配置 TLS 身份(作為伺服器,也可能作為連線到您的工作負載的用戶端)。