# rpc error: code = Unavailable desc = 最后一次连接错误：连接错误：拨号 tcp: 在 10.0.0.2:53 上查找 grpc.example.com：没有该主机

- **ID:** `go/grpc-unavailable-subchannel-transient-failure`
- **领域:** go
- **类别:** network_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

gRPC 目标的 DNS 解析失败。常见于 Kubernetes 中服务名错误、DNS 服务器不可达，或 Pod 的 resolv.conf 配置错误时。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 1.30+ | active | — | — |

## 解决方案

1. **** (92% 成功率)
   ```
   // Use <service>.<namespace>.svc.cluster.local
conn, _ := grpc.Dial("users.default.svc.cluster.local:50051", grpc.WithTransportCredentials(insecure.NewCredentials()))
   ```
2. **** (88% 成功率)
   ```
   conn, _ := grpc.Dial("dns:///users.default.svc.cluster.local:50051",
  grpc.WithTransportCredentials(insecure.NewCredentials()),
  grpc.WithDefaultServiceConfig(`{"loadBalancingConfig":[{"round_robin":{}}]}`))
   ```

## 无效尝试

- **** — Breaks when the backend pod is rescheduled; loses load balancing across replicas (75% 失败率)
- **** — DNS NXDOMAIN returns immediately; a longer timeout does not make the name resolve (90% 失败率)
