地域权重分布

按照此指南配置跨地区的流量分布。

在继续之前,请确保完成开始之前这一节所包含的步骤。

在这个任务中,您将使用 region1 zone1 中的 curl Pod 作为 HelloWorld 服务的请求源。 您将使用以下分布在不同的地域配置Istio:

地区区域流量(%)
region1zone170
region1zone220
region2zone30
region3zone410

配置权重分布

应用 DestinationRule 配置如下:

  • 针对 HelloWorld 服务执行故障检测。 这是 Distribution 正常运行所必需的。 特别是,它配置 Sidecar 代理以了解服务的 Endpoint 何时会不健康。

  • 权重分布 如上表中所述的 HelloWorld 服务。

  1. $ kubectl --context="${CTX_PRIMARY}" apply -n sample -f - <<EOF
  2. apiVersion: networking.istio.io/v1
  3. kind: DestinationRule
  4. metadata:
  5. name: helloworld
  6. spec:
  7. host: helloworld.sample.svc.cluster.local
  8. trafficPolicy:
  9. loadBalancer:
  10. localityLbSetting:
  11. enabled: true
  12. distribute:
  13. - from: region1/zone1/*
  14. to:
  15. "region1/zone1/*": 70
  16. "region1/zone2/*": 20
  17. "region3/zone4/*": 10
  18. outlierDetection:
  19. consecutive5xxErrors: 100
  20. interval: 1s
  21. baseEjectionTime: 1m
  22. EOF

验证分布

curl Pod 调用 HelloWorld 服务:

  1. $ kubectl exec --context="${CTX_R1_Z1}" -n sample -c curl \
  2. "$(kubectl get pod --context="${CTX_R1_Z1}" -n sample -l \
  3. app=curl -o jsonpath='{.items[0].metadata.name}')" \
  4. -- curl -sSL helloworld.sample:5000/hello

重复多次,并验证每个 Pod 的回复数与本文开头表格中所列的预期百分比匹配。

恭喜! 您成功配置了地域权重分布!

下一步

清理任务中的文件与资源。