You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s部署Bazel Buildfarm执行远程构建时查询远程执行能力连接超时

问题根因分析

你遇到的连接超时问题核心是外部客户端无法通过Ingress暴露的地址和buildfarm的gRPC服务建立连接,常见原因如下:

  • 端口暴露错误:你当前配置的标准NGINX Ingress默认仅监听80/443端口,你在bazelrc里直接指定访问8980端口,该端口没有通过Ingress或者LoadBalancer对外暴露
  • 服务指向错误:你当前Ingress后端指向的是worker的service aks-buildfarm,但bazel远程构建请求应该先提交到buildfarm server的service,由server分配任务给worker,属于配置逻辑错误
  • gRPC协议适配问题:NGINX Ingress默认没有开启gRPC透传配置,普通HTTP转发规则无法处理gRPC的HTTP/2流量
  • TLS配置不匹配:你用了grpcs协议,但Ingress的证书配置、gRPC服务端的TLS配置没有对齐,也会导致握手超时

排查解决步骤

  1. 修正流量指向
    首先修改Ingress的后端service,从当前的aks-buildfarm(worker service)改为你部署的buildfarm server对应的service,确保客户端请求可以到达server节点。

  2. 修正端口暴露逻辑
    不要直接用8980端口对外暴露,两种可选方案:

  • 方案一(推荐):将bazelrc配置改为build:rbe --remote_executor=grpcs://buildfarm.dev.azr.internal.mydomain.com:443,走Ingress默认的443 HTTPS端口转发gRPC流量
  • 方案二:如果你要保留8980端口访问,需要将buildfarm server的service改为LoadBalancer类型,或者在NGINX Ingress控制器的配置里新增8980端口的监听转发规则
  1. 调整Ingress gRPC适配配置
    在Ingress的annotations里新增如下配置开启gRPC透传,同时删除当前配置的nginx.ingress.kubernetes.io/rewrite-target和nginx.ingress.kubernetes.io/use-regex注解,gRPC转发不需要重写路径配置,会破坏请求路径:
nginx.ingress.kubernetes.io/grpc-backend: "true"
nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
  1. 验证TLS配置有效性
    先在本地客户端执行命令验证端口连通性和证书有效性:
# 验证端口连通
telnet buildfarm.dev.azr.internal.mydomain.com 443
# 验证证书合法性
openssl s_client -connect buildfarm.dev.azr.internal.mydomain.com:443

如果你的自签名证书没有加到客户端的信任根证书里,可在bazelrc里新增如下配置跳过证书校验(仅测试环境使用):

build:rbe --tls_insecure_skip_verify
  1. 内网服务可用性预校验
    先在k8s集群内起一个临时Pod,验证buildfarm server服务本身是否正常响应,确认服务没问题再排查外部链路:
kubectl run -it --rm grpcurl --image=fullstorydev/grpcurl:v1.8.7 -n infrastructure--buildfarm --command -- grpcurl aks-buildfarm-server.infrastructure--buildfarm.svc.cluster.local:8980 list

内容的提问来源于stack exchange,提问作者M80

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:48:04