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

如何通过Kubernetes原生API实现Deployment A、B的流量百分比拆分?

Kubernetes原生实现精准流量拆分的方法

标准的Ingress资源(networking.k8s.io/v1)不支持按百分比分配流量,要实现90%/10%的流量拆分且无需调整Deployment副本数,推荐使用Kubernetes官方的Gateway API——这是原生的新一代路由API,已纳入官方API组,不属于第三方扩展。

用Gateway API实现流量拆分的步骤

  1. 确认集群已启用Gateway API:主流K8s发行版(如EKS、GKE、AKS)默认支持,若未启用,可通过安装官方提供的Gateway CRDs完成初始化。
  2. 创建基础的GatewayClass和Gateway资源,定义集群的入口访问点。
  3. 创建HTTPRoute资源,通过weight字段指定流量权重,将流量按比例导向两个Deployment对应的Service:
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: traffic-split-route
spec:
  parentRefs:
  - name: my-gateway
    namespace: gateway-system # 对应你的Gateway所在命名空间
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: service-a # Deployment A对应的Service名称
      port: 80
      weight: 90
    - name: service-b # Deployment B对应的Service名称
      port: 80
      weight: 10

其他原生方案说明

如果暂时无法部署Gateway API,还有一种精度有限的原生方法:手动调整Service的Endpoint列表,通过增减对应Pod的Endpoint数量模拟流量比例,但这种方式维护成本高,且受kube-proxy负载均衡策略影响,无法保证精准的流量拆分,不推荐用于生产环境。

另外,通过调整副本数实现流量比例的方式不可靠:这种方式依赖kube-proxy的轮询策略,当副本数量较少时(如9个A、1个B),Pod健康状态、会话亲和性等因素都会导致实际流量比例偏离预期,无法达到精准的90/10拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:10:37