gRPC客户端负载平衡

问题描述

我有一个运行多个副本的无头服务。当尝试使用轮询验证客户端负载平衡时,我看到所有请求最终都在同一副本中。 客户端设置如下:

 conn,err := grpc.Dial(
        address,grpc.WithInsecure(),grpc.WithDefaultServiceConfig(`{"loadBalancingPolicy":"round_robin"}`),)

我已经验证了服务中的多个端点。我还验证了服务可以解析为这些多个IP,但是以某种方式它确实仅连接到该列表中的第一个pod。 MAX_CONNECTION_AGE在服务器端设置为30秒,以确保在规模扩大的情况下客户端偶尔重新连接。 我已经关注了无数篇文章,介绍了如何进行设置,但实际上是行不通的。我想念什么?

解决方法

关键是要明确地使用dns:///作为目标的前缀。尽管事实表明它是文档中的默认设置。