如何通过GCK Ingress实现双服务流量路由及百分比管控
GKE 流量百分比分流配置方案
GKE支持基于百分比的流量路由,完全满足你初始10%流量导向新实例、故障时快速切回0%的需求,以下是具体配置方案:
核心配置思路
通过GKE原生Ingress配置多后端服务权重,直接实现流量比例分配,无需额外组件,操作简单易回滚。
步骤1:确保新旧服务已部署
确认旧Node服务(old-service)和新框架服务(new-service)都已部署为Deployment,且对应创建了ClusterIP类型的Service(端口需统一,比如都用80端口对外暴露)。
步骤2:配置带权重的Ingress
创建如下Ingress YAML文件(traffic-split-ingress.yaml):
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: traffic-split-ingress annotations: kubernetes.io/ingress.class: "gce" # 指定使用GKE原生Ingress控制器 spec: rules: - http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: old-service port: number: 80 weight: 90 # 90%流量流向旧服务 - path: /* pathType: ImplementationSpecific backend: service: name: new-service port: number: 80 weight: 10 # 10%流量流向新服务
执行部署命令:
kubectl apply -f traffic-split-ingress.yaml
步骤3:调整流量比例/快速回滚
- 若需调整流量比例(比如将新服务流量提升至30%),直接修改Ingress文件中的
weight字段,重新执行kubectl apply即可,变更会在几分钟内生效。 - 若新服务出现问题,将
new-service的weight设为0,old-service设为100,执行kubectl apply即可快速将所有流量切回旧服务。
验证配置
执行以下命令查看Ingress的后端权重配置是否生效:
kubectl describe ingress traffic-split-ingress
在输出的Rules部分可看到各后端服务的权重设置。
进阶方案(可选)
如果需要更精细的流量管控(比如基于请求头、用户群体拆分流量),可以使用GKE的Anthos Service Mesh(ASM)或Traffic Director,通过VirtualService配置更复杂的路由规则,但对于基础的百分比分流,原生Ingress方案足够轻量高效。
内容的提问来源于stack exchange,提问作者Adnan Ali
相关产品推荐
相关产品推荐

