本页面介绍适用于内部应用负载均衡器的 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 支持多种附加功能。
- 使用 Google Cloud 的自行管理 SSL 证书。此功能仅支持地区级证书。
- 使用 Kubernetes Secret 的自行管理 SSL 证书。
- 会话亲和性和连接超时 BackendService 功能。您可以使用 BackendConfig 配置这些功能。
内部应用负载均衡器所需的网络环境
内部应用负载均衡器为您的网络提供了一个代理池。代理会根据网址映射、BackendService 的会话亲和性以及每个后端 NEG 的平衡模式等因素,评估每个 HTTP(S) 请求的去向。
一个区域的内部应用负载均衡器使用 VPC 网络中该区域的代理专用子网为 Google Cloud 创建的每个代理分配内部 IP 地址。
默认情况下,分配给负载均衡器的转发规则的 IP 地址来自 GKE 分配的节点的子网范围,而不是来自代理专用子网。您还可以在创建转发规则时为转发规则手动指定来自任何子网的 IP 地址。
下图提供了上一段描述的内部应用负载均衡器的流量概览。
内部应用负载均衡器的工作原理如下:
- 客户端连接到负载均衡器的转发规则的 IP 地址和端口。
- 代理接收并终止客户端的网络连接。
- 代理建立与 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