【发布时间】:2019-09-19 19:52:14
【问题描述】:
我在 Kubernetes 中运行了一个 gRPC 微服务,目前只有一个 pod,我想增加微服务的 pod 数量,但为了做到这一点,我想始终将相同的密钥路由到同一个 pod,为了避免竞争条件,我想了解如何实现此功能。
【问题讨论】:
标签: kubernetes routing grpc
我在 Kubernetes 中运行了一个 gRPC 微服务,目前只有一个 pod,我想增加微服务的 pod 数量,但为了做到这一点,我想始终将相同的密钥路由到同一个 pod,为了避免竞争条件,我想了解如何实现此功能。
【问题讨论】:
标签: kubernetes routing grpc
在这种情况下,您需要第 7 层 (L7) 负载平衡器,因为它们在应用层运行并且可以检查流量以做出路由决策。最重要的是,它们可以支持 HTTP/2 协议(gRPC 使用)。
Nginx 和 HAProxy 是 L7 负载均衡器的选项之一,但对于微服务架构来说过于重量级。你可以考虑Envoy和Linkerd,都支持gRPC。
Pod 可以被复制以提供扩展,并被包装在称为服务的抽象中,这些服务提供稳定的 IP 地址来访问底层 Pod。从 Kubernetes 1.2 开始,命中服务 IP 的默认行为是返回一个随机的后端 pod。但是,您可以将服务重新配置为无头,以便服务 IP 将返回可用 pod IP 的整个列表,从而允许您执行自己的服务发现。
您可以通过此official tutorial 轻松开始使用 Linkerd。
【讨论】: