地域权重分布

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

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

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

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

配置权重分布

应用 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

验证分布

curl Pod 调用 HelloWorld 服务:

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

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

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

下一步

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

这些信息有用吗?
您是否有更多建议和改进意见?

感谢您的反馈!