适用于内部应用负载均衡器的 Ingress


本页面介绍适用于内部应用负载均衡器的 Ingress 在 Google Kubernetes Engine (GKE) 中的工作原理。您还可以了解如何设置和使用适用于内部应用负载均衡器的 Ingress

在 GKE 中,内部应用负载均衡器是一个基于代理的区域级第 7 层负载均衡器,可让您在内部负载均衡 IP 地址后面运行和扩缩您的服务。在 GKE 集群上创建 Ingress 对象后,GKE Ingress 对象便可为内部应用负载均衡器提供原生支持。

如需了解有关在 GKE 中使用 Ingress 实现负载平衡的一般信息,请参阅使用 Ingress 实现 HTTP(S) 负载平衡

使用适用于内部应用负载均衡器的 Ingress 的优势

使用适用于内部应用负载均衡器的 GKE Ingress 具有以下优势:

  • 运行高度可用且由 GKE 管理的 Ingress 控制器。
  • 为内部的服务间通信实现负载平衡。
  • 通过网络端点组 (NEG) 实现容器原生负载平衡。
  • 为应用路由提供 HTTP 和 HTTPS 支持。
  • 对弹性服务执行高准确度的 Compute Engine 健康检查。
  • 通过基于 Envoy 的代理实现按需部署,从而满足流量容量需求。

对 Google Cloud 功能的支持

适用于内部应用负载均衡器的 Ingress 支持多种附加功能。

内部应用负载均衡器所需的网络环境

内部应用负载均衡器为您的网络提供了一个代理池。代理会根据网址映射、BackendService 的会话亲和性以及每个后端 NEG 的平衡模式等因素,评估每个 HTTP(S) 请求的去向。

一个区域的内部应用负载均衡器使用 VPC 网络中该区域的代理专用子网为 Google Cloud 创建的每个代理分配内部 IP 地址。

默认情况下,分配给负载均衡器的转发规则的 IP 地址来自 GKE 分配的节点的子网范围,而不是来自代理专用子网。您还可以在创建转发规则时为转发规则手动指定来自任何子网的 IP 地址

下图提供了上一段描述的内部应用负载均衡器的流量概览。

图片

内部应用负载均衡器的工作原理如下:

  1. 客户端连接到负载均衡器的转发规则的 IP 地址和端口。
  2. 代理接收并终止客户端的网络连接。
  3. 代理建立与 NEG 中相应端点 (pod) 的连接(由负载均衡器的网址映射和后端服务确定)。

每个代理监听由相应负载平衡器的转发规则指定的 IP 地址和端口。从代理发送到端点的每个数据包的来源 IP 地址是从代理专用子网分配给该代理的内部 IP 地址。

负载均衡器与应用之间的 HTTPS (TLS)

内部应用负载均衡器充当您的客户端和应用之间的代理。客户端可以使用 HTTP 或 HTTPS 与负载均衡器代理进行通信。默认情况下,从负载均衡器代理到应用的连接使用 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

后续步骤