Перш ніж розпочати
Перед тим як розпочати завдання з балансування навантаження по локаціях, спочатку необхідно встановити 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
Вітаємо! Ви успішно налаштували систему і тепер готові розпочати завдання з балансування навантаження по локаціях!
Наступні кроки
Тепер ви можете налаштувати один з наступних варіантів балансування навантаження: