不使用Consul Connect将Consul作为Envoy的xDS管理服务器连接报错如何解决
排查解决步骤
第一步:修正Envoy ADS配置的target_uri参数
你当前配置里target_uri: http://localhost:8502写法错误,Consul gRPC服务使用纯gRPC协议,不需要添加http://前缀,修改为:grpc_services: - google_grpc: target_uri: localhost:8502 stat_prefix: grpc-xds-service这是导致gRPC错误码13的最常见原因,错误的前缀会导致Envoy的gRPC客户端无法正确识别服务端协议。
第二步:确认Consul已开启xDS依赖的核心配置
即使你不使用Consul Connect的服务网格功能,Consul的xDS服务也依赖Connect模块的核心能力,启动Consul时需要显式开启,命令示例:consul agent -dev -grpc-port=8502 -hcl="connect { enabled = true }"该配置仅启用Connect的核心能力,不会强制使用服务间mTLS、Sidecar注入等Consul Connect功能,不影响你仅用Consul做服务发现和xDS服务器的需求。同时注意Consul版本需要 >=1.10才能支持xDS v3协议,和你配置的
transport_api_version: v3匹配。第三步:验证Consul gRPC服务可用性
用grpcurl工具测试端口连通性和服务暴露情况:grpcurl -plaintext localhost:8502 list envoy.service.cluster.v3.ClusterDiscoveryService如果能正常返回服务名说明Consul xDS服务正常,否则检查Consul启动日志确认gRPC和xDS模块启动成功。
第四步:补充Envoy缺失的动态资源配置(可选,解决连接正常后无配置返回的问题)
你当前只配置了CDS的动态获取,建议补充LDS配置,避免后续资源拉取报错:dynamic_resources: cds_config: ads: {} lds_config: ads: {} ads_config: api_type: GRPC transport_api_version: V3 grpc_services: - google_grpc: target_uri: localhost:8502 stat_prefix: grpc-xds-service
内容的提问来源于stack exchange,提问作者kumarmo2
相关产品推荐
相关产品推荐

