go network_error ai_generated true

rpc error: code = Unavailable desc = name resolver error: produced zero addresses

ID: go/grpc-load-balancer-no-backends

Also available as: JSON · Markdown · 中文
80%Fix Rate
84%Confidence
0Evidence
2024-12-10First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
1.3 active — — —

Root Cause

The gRPC load balancer resolver returned no backend addresses, often due to DNS failure or service discovery issues.

generic

中文

gRPC负载均衡器解析器未返回后端地址,通常是由于DNS故障或服务发现问题。

Workarounds

  1. 90% success Verify DNS resolution for the target hostname.
    nslookup my-service.default.svc.cluster.local
  2. 85% success Use a custom resolver with fallback addresses.
    resolver := manual.NewBuilderWithScheme("myresolver")
    resolver.InitialState(resolver.State{Addresses: []resolver.Address{{Addr: "10.0.0.1:50051"}}})
    conn, _ := grpc.Dial("myresolver:///service", grpc.WithResolvers(resolver))

Dead Ends

Common approaches that don't work:

  1. Hardcode a single backend address in the client. 70% fail

    Bypasses load balancing and defeats purpose.

  2. Increase DNS cache TTL. 90% fail

    Does not fix missing A records.