地域权重分布
按照此指南配置跨地区的流量分布。
在继续之前,请确保完成以下步骤 开始之前。
在这个任务中,您将使用 region1
zone1
中的 sleep
Pod 作为 helloWorld
服务的请求源。您将使用以下分布在不同的地域配置Istio:
地区 | 区域 | 流量(%) |
---|---|---|
region1 | zone1 | 70 |
region1 | zone2 | 20 |
region2 | zone3 | 0 |
region3 | zone4 | 10 |
配置权重分布
应用 DestinationRule
配置如下:
故障检测 用于
helloWorld
服务。这是 Distribution 正常运行所必需的。特别是,它配置 Sidecar 代理以知道服务的 Endpoint 何时不健康。权重分布 如上表中所述的
helloWorld
服务。
$ kubectl --context="${CTX_PRIMARY}" apply -n sample -f - <<EOF
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: helloworld
spec:
host: helloworld.sample.svc.cluster.local
trafficPolicy:
loadBalancer:
localityLbSetting:
enabled: true
distribute:
- from: region1/zone1/*
to:
"region1/zone1/*": 70
"region1/zone2/*": 20
"region3/zone4/*": 10
outlierDetection:
consecutive5xxErrors: 100
interval: 1s
baseEjectionTime: 1m
EOF
验证分布
从 sleep
Pod 调用 helloWorld
服务:
$ kubectl exec --context="${CTX_R1_Z1}" -n sample -c sleep \
"$(kubectl get pod --context="${CTX_R1_Z1}" -n sample -l \
app=sleep -o jsonpath='{.items[0].metadata.name}')" \
-- curl -sSL helloworld.sample:5000/hello
重复多次,并验证每个 Pod 的回复数与本指南顶部表格中的预期百分比匹配。
恭喜! 你成功配置了地域权重分布!
下一步
清理 任务中的文件与资源。