kubernetes - GKE 上的 GRPC 负载平衡(在 L7、HTTP/2 + TLS 上)
问题描述
如何在 L7 上的 GKE 上为 GRPC 服务进行负载平衡(使用 Ingress over HTTP/2 + TLS)?
我知道我可以选择使用 L4(TCP 层)来配置具有“LoadBalancer”类型的服务。但我想知道是否可以通过 HTTP/2+TLS 使用 Ingress + L7 负载平衡。
我还看到“GKE 不支持到后端的 HTTP/2”。(在https://cloud.google.com/load-balancing/docs/backend-service#HTTP2-limitations上)。但不知道是不是真的。
解决方案
当您使用https时, GKE Ingress 现在可以使用 HTTP/2 进行负载平衡。
要在负载均衡器(入口控制器)和您的 pod 之间获取 HTTP/2,您的服务需要一个额外的注释:
apiVersion: v1
kind: Service
metadata:
annotations:
cloud.google.com/app-protocols: '{"my-port":"HTTP2"}'
此外,您的 pod 大多使用 TLS 并配置了ALPN h2。这可以通过一个 HAProxy 作为带有http2 配置的 sidecar 来完成。我已经在 GKE 上成功使用了这个设置。