開始之前

在開始區域性負載平衡任務之前,您必須先在多個叢集上安裝 Istio。這些叢集必須跨越三個區域,包含四個可用區域。所需的叢集數量可能會因您的雲端供應商所提供的功能而異。

我們將按照以下方式部署 HelloWorld 應用程式的多個實例

Setup for locality load balancing tasks
設定區域性負載平衡任務

環境變數

本指南假設所有叢集都將透過預設Kubernetes 設定檔中的 context 存取。以下環境變數將用於各種 context

變數描述
CTX_PRIMARY用於將配置應用於主要叢集的 context。
CTX_R1_Z1用於與 region1.zone1 中的 Pod 互動的 context。
CTX_R1_Z2用於與 region1.zone2 中的 Pod 互動的 context。
CTX_R2_Z3用於與 region2.zone3 中的 Pod 互動的 context。
CTX_R3_Z4用於與 region3.zone4 中的 Pod 互動的 context。

建立 sample 命名空間

首先,為 sample 命名空間產生 YAML,並啟用自動 Sidecar 注入

$ 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,並使用區域作為版本字串

壓縮
$ 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

壓縮
$ 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

恭喜! 您已成功配置系統,現在可以開始區域性負載平衡任務了!

下一步

您現在可以設定以下其中一個負載平衡選項

此資訊是否有用?
您有任何改進建議嗎?

感謝您的回饋!