地域权重分布

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

在继续之前,请确保完成以下步骤 开始之前

在这个任务中,您将使用 region1 zone1 中的 sleep 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/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 的回复数与本指南顶部表格中的预期百分比匹配。

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

下一步

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

这些信息有用吗?
Do you have any suggestions for improvement?

Thanks for your feedback!