開始之前
在開始區域性負載平衡任務之前,您必須先在多個叢集上安裝 Istio。這些叢集必須跨越三個區域,包含四個可用區域。所需的叢集數量可能會因您的雲端供應商所提供的功能而異。
我們將按照以下方式部署 HelloWorld
應用程式的多個實例
環境變數
本指南假設所有叢集都將透過預設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
恭喜! 您已成功配置系統,現在可以開始區域性負載平衡任務了!
下一步
您現在可以設定以下其中一個負載平衡選項