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

GKE多集群Ingress(MCI)忽略BackendConfig健康检查配置求助

GKE MCI忽略BackendConfig健康检查/超时配置问题排查与解决

核心问题可能原因

  1. MCS与BackendConfig的端口关联规则未严格遵循
  2. Fleet Ingress启用时的Workload Identity配置残留异常
  3. GKE 1.31.6版本存在的已知兼容性bug

针对性修复步骤

1. 严格校验MCS与BackendConfig的端口关联

MCI对BackendConfig的端口关联要求必须使用端口名(而非端口号),且MCS、集群内ClusterIP Service、BackendConfig注解中的端口名必须完全一致:

  • 示例BackendConfig配置:
    apiVersion: cloud.google.com/v1
    kind: BackendConfig
    metadata:
      name: sglang-hc-config
      namespace: default
    spec:
      healthCheck:
        type: HTTP
        httpHealthCheck:
          requestPath: /health
          port: 8081
          portName: http-health # 必须与MCS/Service的端口名一致
      backend:
        timeoutSec: 30
    
  • 示例MCS配置:
    apiVersion: networking.gke.io/v1
    kind: MultiClusterService
    metadata:
      name: sglang-mcs
      namespace: default
      annotations:
        cloud.google.com/backend-config: '{"ports": {"http-health": "sglang-hc-config"}}' # 端口名必须匹配
    spec:
      template:
        spec:
          selector:
            app: sglang-server
          ports:
          - name: http-health # 端口名统一
            port: 8081
            targetPort: 8081
    
  • 检查MCS关联状态:执行kubectl describe mcs sglang-mcs,查看Events字段是否有BackendConfig associated successfully的日志,若存在关联错误需修正端口名。

2. 修复Fleet Ingress的配置异常

之前启用时出现的Workload Identity错误可能导致MCI控制器权限不足,无法读取BackendConfig的完整配置:

  1. 检查集群Workload Identity状态:确保每个集群的Workload Identity已启用,且MCI控制器的服务账号gke-mcs-controller拥有roles/backendconfig.editor权限
  2. 重置Fleet Ingress配置:
    gcloud container fleet ingress disable
    gcloud container fleet ingress enable --config-membership=sglang-us
    
  3. 验证Fleet状态:执行gcloud container fleet ingress describe,确保所有featureStates为ACTIVE,无错误残留。

3. 规避GKE 1.31.6版本bug

GKE 1.31.6存在MCI忽略BackendConfig健康检查字段的已知问题,可通过以下方式规避:

  • 升级集群到1.31.7+版本(查看GKE发布说明确认补丁已修复该问题)
  • 在BackendConfig中显式指定portSpecification: USE_FIXED_PORT,强制使用配置的端口:
    healthCheck:
      type: HTTP
      httpHealthCheck:
        requestPath: /health
        port: 8081
      portSpecification: USE_FIXED_PORT
    

4. 校验集群内Service配置

MCI依赖集群内的ClusterIP Service关联BackendConfig,需确保每个集群的default命名空间中存在对应Service,且端口名、选择器与MCS完全一致:

apiVersion: v1
kind: Service
metadata:
  name: sglang-service
  namespace: default
spec:
  selector:
    app: sglang-server
  ports:
  - name: http-health
    port: 8081
    targetPort: 8081

可靠替代方案(若上述步骤无效)

如果无法立即升级或修复Fleet配置,可直接引用手动创建的GCP健康检查:

  1. 在GCP控制台创建HTTP健康检查(路径/health,端口8081)
  2. 在BackendConfig中引用该健康检查:
    spec:
      healthCheck:
        name: manual-sglang-hc # 手动创建的健康检查名称
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:02:06