我有两个在 Kubernetes 中运行的 Pod,这些 Pod 由 ClusterIP 服务公开,假设为 nginx-1
和 nginx-2
。我想创建一个虚拟服务 nginx-split
,它将 75% 的流量路由到 nginx-1
,将 25% 的流量路由到 nginx-2
。我从文档中了解到我应该创建一个 VirtualService 定义文件:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: nginx
spec:
hosts:
- nginx-split
http:
- route:
- destination:
host: nginx-1
weight: 75
- destination:
host: nginx-2
weight: 25
VirtualService 定义是不够的,也许我还应该创建一个 ServiceEntry。问题是我不知道如何为 nginx-split
定义服务条目,因为它只是虚拟的,不应解析为(一个)IP 地址。
答案 0 :(得分:0)
TRAFFIC SPLITTING:How it works
流量分流由two Istio Objects:
处理我们创建了一个 VirtualService
,其中列出了带有 weight
的不同变体:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: service-a
spec:
hosts:
- service-a
http:
- route:
- destination:
host: service-a
subset: v1
weight: 80
- destination:
host: service-a
subset: v2
weight: 20
然后DestinationRule
负责定义流量的目的地和流量策略:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: property-business-service
spec:
host: property-business-service
subsets:
- name: v1
labels:
version: "1.0"
- name: v2
labels:
version: "1.1"