在Kubernetes中,Service默认通过轮询(Round Robin)算法均衡流量到后端Pod。要调整流量分配,可通过调整Pod副本数间接影响流量比例,或使用服务网格(如Istio)配置精确的流量权重。
延伸知识点:Istio流量分割配置
Istio通过VirtualService和DestinationRule实现细粒度流量控制。例如,将80%流量路由到v1,20%到v2:
- DestinationRule定义子集:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: my-service
spec:
host: my-service
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
- VirtualService设置权重:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-service
spec:
hosts:
- my-service
http:
- route:
- destination:
host: my-service
subset: v1
weight: 80
- destination:
host: my-service
subset: v2
weight: 20
该配置将请求按比例分发到不同版本的Pod,适用于金丝雀发布和A/B测试场景。