本頁說明 Google Kubernetes Engine (GKE) 中,內部應用程式負載平衡器的 Ingress 運作方式。您也可以瞭解如何設定及使用內部應用程式負載平衡器的 Ingress。
在 GKE 中,內部應用程式負載平衡器是以 Proxy 為基礎的區域性第 7 層負載平衡器,可讓您透過內部負載平衡 IP 位址執行服務及調度服務資源。GKE Ingress 物件支援內部應用程式負載平衡器,方法是在 GKE 叢集上建立 Ingress 物件。
如需在 GKE 中使用 Ingress 進行負載平衡的一般資訊,請參閱使用 Ingress 進行 HTTP(S) 負載平衡。
使用 Ingress 建立內部應用程式負載平衡器的優點
使用 GKE Ingress 搭配內部應用程式負載平衡器,可享有下列優點:
- 高可用性的 GKE 管理 Ingress 控制器。
- 服務間通訊的內部負載平衡。
- 使用網路端點群組 (NEG) 的容器原生負載平衡。
- 支援 HTTP 和 HTTPS 的應用程式路由。
- 精準的 Compute Engine 健康狀態檢查,可確保服務穩定運作。
- 系統會視流量容量需求,隨選部署以 Envoy 為基礎的 Proxy。
支援 Google Cloud 功能
內部應用程式負載平衡器的 Ingress 支援多種額外功能。
- 使用 自行管理的 SSL 憑證 Google Cloud。這項功能僅支援區域憑證。
- 使用 Kubernetes Secrets 自行管理 SSL 憑證。
- 工作階段相依性和連線逾時 BackendService 功能。您可以使用 BackendConfig 設定這些功能。
內部應用程式負載平衡器的必要網路環境
內部應用程式負載平衡器為您的網路提供多種 Proxy 選擇。 Proxy 會根據網址對應、BackendService 的工作階段相依性,以及每個後端 NEG 的平衡模式等因素,評估每個 HTTP(S) 要求應到達的位置。
區域的內部應用程式負載平衡器會使用虛擬私有雲網路中該區域的僅限 Proxy 子網路,為 Google Cloud建立的每個 Proxy 指派內部 IP 位址。
根據預設,指派給負載平衡器轉送規則的 IP 位址來自 GKE 指派的節點子網路範圍,而非僅限 Proxy 的子網路。建立規則時,您也可以從任何子網路手動指定轉送規則的 IP 位址。
下圖概述內部應用程式負載平衡器的流量流程,如上段所述。
內部應用程式負載平衡器的運作方式如下:
- 用戶端連線至負載平衡器轉送規則的 IP 位址和通訊埠。
- Proxy 會接收並終止用戶端的網路連線。
- Proxy 會根據負載平衡器的網址對應和後端服務,建立與 NEG 中適當端點 (Pod) 的連線。
每個 Proxy 都會聽取對應的負載平衡器轉送規則所指定的 IP 位址和通訊埠。從 Proxy 傳送到端點的每個封包,其來源 IP 位址都是從僅限 Proxy 的子網路指派給該 Proxy 的內部 IP 位址。
負載平衡器與應用程式之間的 HTTPS (TLS)
內部應用程式負載平衡器是用戶端與應用程式間的 Proxy。用戶端可以使用 HTTP 或 HTTPS 與負載平衡器的 Proxy 進行通訊。負載平衡器 Proxy 與應用程式間的連結預設使用 HTTP。不過,如果您的應用程式在 GKE Pod 中執行,且可以接收 HTTPS 要求,您可以將負載平衡器設為將要求轉送到您的應用程式時使用 HTTPS。
如要設定負載平衡器與應用程式之間所使用的通訊協定,請在 Service 資訊清單中使用 cloud.google.com/app-protocols
註解。
以下 Service 資訊清單指定了兩個通訊埠。註解指定內部應用程式負載平衡器應在指定 Service 的通訊埠 80 時使用 HTTP,並在指定 Service 的通訊埠 443 時使用 HTTPS。
您必須在註解中使用通訊埠的 name
欄位。請勿使用其他欄位,例如 targetPort
。
apiVersion: v1
kind: Service
metadata:
name: my-service
annotations:
cloud.google.com/app-protocols: '{"my-https-port":"HTTPS","my-http-port":"HTTP"}'
spec:
type: NodePort
selector:
app: metrics
department: sales
ports:
- name: my-https-port
port: 443
targetPort: 8443
- name: my-http-port
port: 80
targetPort: 50001