Перш ніж розпочати
Перед тим як розпочати завдання з балансування навантаження по локаціях, спочатку необхідно встановити Istio на кількох кластерах. Кластери повинні охоплювати три регіони, що містять чотири зони доступності. Кількість необхідних кластерів може змінюватися залежно від можливостей, які пропонує ваш постачальник хмари.
Ми розгорнемо кілька екземплярів застосунку HelloWorld наступним чином:
Змінні оточення
Цей посібник передбачає, що всі кластери будуть доступні через контексти у стандартному файлі конфігурації Kubernetes. Для різних контекстів будуть використовуватися наступні змінні середовища:
| Змінна | Опис |
|---|---|
CTX_PRIMARY | Контекст, який використовується для застосування конфігурації до основного кластера. |
CTX_R1_Z1 | Контекст, який використовується для взаємодії з podʼами в region1.zone1. |
CTX_R1_Z2 | Контекст, який використовується для взаємодії з podʼами в region1.zone2. |
CTX_R2_Z3 | Контекст, який використовується для взаємодії з podʼами в region2.zone3. |
CTX_R3_Z4 | Контекст, який використовується для взаємодії з podʼами в region3.zone4. |
Створення простору імен sample
Для початку створіть YAML для простору імен sample з увімкненим автоматичним додаванням 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
Створіть YAML для HelloWorld для кожної локації, використовуючи локацію як рядок версії:
$ for LOC in "region1.zone1" "region1.zone2" "region2.zone3" "region3.zone4"; \
do \
./@samples/helloworld/gen-helloworld.sh@ \
--version "$LOC" > "helloworld-${LOC}.yaml"; \
doneЗастосуйте YAML HelloWorld до відповідного кластера для кожної локації:
$ 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Зачекайте на podʼи HelloWorld
Зачекайте, поки podʼи HelloWorld в кожній зоні будуть у стані 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Вітаємо! Ви успішно налаштували систему і тепер готові розпочати завдання з балансування навантаження по локаціях!
Наступні кроки
Тепер ви можете налаштувати один з наступних варіантів балансування навантаження: