开始之前

在开始区域负载均衡任务之前,必须首先 在多个集群上安装 Istio。 这些集群必须跨越三个地区,其中包含四个可用区。 所需集群的数量可能会因您的云提供商所提供的功能而异。

我们将部署 HelloWorld 应用程序的多个实例,如下所示:

Setup for locality load balancing tasks
Setup for locality load balancing tasks

环境变量

本指南假定将通过默认的 Kubernetes 配置文件中的上下文访问所有集群。 以下环境变量将用于各种上下文:

变量描述
CTX_PRIMARY用于主集群的上下文。
CTX_R1_Z1用于与 region1.zone1 中的 Pod 交互的上下文。
CTX_R1_Z2用于与 region1.zone2 中的 Pod 交互的上下文。
CTX_R2_Z3用于与 region2.zone3 中的 Pod 交互的上下文。
CTX_R3_Z4用于与 region3.zone4 中的 Pod 交互的上下文。

创建 sample 命名空间

首先,启用自动注入 Sidecar 并为 sample 命名空间生成 yaml:

$ cat <<EOF > sample.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: sample
  labels:
    istio-injection: enabled
EOF

为每个集群添加 sample 命名空间:

$ for CTX in "$CTX_PRIMARY" "$CTX_R1_Z1" "$CTX_R1_Z2" "$CTX_R2_Z3" "$CTX_R3_Z4"; \
  do \
    kubectl --context="$CTX" apply -f sample.yaml; \
  done

部署 HelloWorld

使用地域作为版本号,为每个地域生成 HelloWorld 的 yaml:

Zip
$ for LOC in "region1.zone1" "region1.zone2" "region2.zone3" "region3.zone4"; \
  do \
    ./@samples/helloworld/gen-helloworld.sh@ \
      --version "$LOC" > "helloworld-${LOC}.yaml"; \
  done

应用 HelloWorld YAML 到每个地域的合适集群:

$ kubectl apply --context="${CTX_R1_Z1}" -n sample \
  -f helloworld-region1.zone1.yaml
$ kubectl apply --context="${CTX_R1_Z2}" -n sample \
  -f helloworld-region1.zone2.yaml
$ kubectl apply --context="${CTX_R2_Z3}" -n sample \
  -f helloworld-region2.zone3.yaml
$ kubectl apply --context="${CTX_R3_Z4}" -n sample \
  -f helloworld-region3.zone4.yaml

部署 curl

部署 curl 应用到 region1 zone1

Zip
$ kubectl apply --context="${CTX_R1_Z1}" \
  -f @samples/curl/curl.yaml@ -n sample

等待 HelloWorld Pod

等到 HelloWorld 在每个区域的 Pod 都为 Running

$ kubectl get pod --context="${CTX_R1_Z1}" -n sample -l app="helloworld" \
  -l version="region1.zone1"
NAME                                       READY   STATUS    RESTARTS   AGE
helloworld-region1.zone1-86f77cd7b-cpxhv   2/2     Running   0          30s
$ kubectl get pod --context="${CTX_R1_Z2}" -n sample -l app="helloworld" \
  -l version="region1.zone2"
NAME                                       READY   STATUS    RESTARTS   AGE
helloworld-region1.zone2-86f77cd7b-cpxhv   2/2     Running   0          30s
$ kubectl get pod --context="${CTX_R2_Z3}" -n sample -l app="helloworld" \
  -l version="region2.zone3"
NAME                                       READY   STATUS    RESTARTS   AGE
helloworld-region2.zone3-86f77cd7b-cpxhv   2/2     Running   0          30s
$ kubectl get pod --context="${CTX_R3_Z4}" -n sample -l app="helloworld" \
  -l version="region3.zone4"
NAME                                       READY   STATUS    RESTARTS   AGE
helloworld-region3.zone4-86f77cd7b-cpxhv   2/2     Running   0          30s

恭喜您! 您已成功完成系统配置,现在可以开始进行地域负载均衡任务了!

下一步

现在,您可以配置以下负载均衡选项之一:

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

感谢您的反馈!