Перш ніж розпочати

Перед тим як розпочати завдання з балансування навантаження по локаціях, спочатку необхідно встановити 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 для кожної локації, використовуючи локацію як рядок версії:

Zip
$ 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:

Zip
$ 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

Вітаємо! Ви успішно налаштували систему і тепер готові розпочати завдання з балансування навантаження по локаціях!

Наступні кроки

Тепер ви можете налаштувати один з наступних варіантів балансування навантаження:

Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!