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