UNAVAILABLE
api
network_error
ai_generated
partial
gRPC错误:UNAVAILABLE。服务DNS解析失败:my-service.example.com:443
gRPC error: UNAVAILABLE. DNS resolution failed for service: my-service.example.com:443
ID: api/grpc-unavailable-dns-resolution
80%修复率
87%置信度
1证据数
2024-01-15首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| gRPC v1.56.0 | active | — | — | — |
| Envoy proxy 1.27 | active | — | — | — |
| Kubernetes 1.28 | active | — | — | — |
根因分析
gRPC客户端无法解析目标服务主机名,由于DNS配置问题或网络连接问题。
English
gRPC client cannot resolve the target service hostname due to DNS configuration issues or network connectivity problems.
官方文档
https://grpc.github.io/grpc/core/md_doc_dns-resolver.html解决方案
-
Verify DNS resolution manually: run 'dig my-service.example.com' or 'nslookup my-service.example.com'. If it fails, check /etc/resolv.conf for valid nameservers (e.g., 8.8.8.8).
-
Increase gRPC DNS resolver timeout: set GRPC_DNS_RESOLVER_TIMEOUT_MS=5000 environment variable before starting the client.
-
If using Kubernetes, ensure the service DNS name matches the gRPC target (e.g., my-service.namespace.svc.cluster.local). Use 'kubectl run -it --rm debug --image=busybox -- nslookup my-service' to test.
无效尝试
常见但无效的做法:
-
75% 失败
Restarting the gRPC client without fixing DNS configuration (e.g., missing /etc/resolv.conf entries) will reproduce the same error.
-
60% 失败
Changing the target endpoint to an IP address bypasses DNS but may fail if the service uses virtual hosting or TLS SNI requires the hostname.