地域权重分布
按照此指南配置跨地区的流量分布。
在继续之前,请确保完成开始之前这一节所包含的步骤。
在这个任务中,您将使用 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/v1
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 的回复数与本文开头表格中所列的预期百分比匹配。
恭喜! 您成功配置了地域权重分布!
下一步
清理任务中的文件与资源。