Перевірка встановлення

Слідуйте цьому посібнику, щоб перевірити, що ваша установка Istio для кількох кластерів працює належним чином.

Перед тим як продовжити, обовʼязково завершите кроки в розділі перш ніж почати, а також виберіть і дотримуйтесь одного з посібників з установки для кількох кластерів.

У цьому посібнику ми розгорнемо застосунок HelloWorld V1 у cluster1 та V2 у cluster2. При отриманні запиту HelloWorld включатиме свою версію у відповідь.

Ми також розгорнемо контейнер curl в обох кластерах. Ми будемо використовувати ці контейнери як джерело запитів до сервісу HelloWorld, імітуючи трафік всередині мережі. Нарешті, після генерації трафіку ми спостерігатимемо, який кластер отримав запити.

Розгортання сервісу HelloWorld

Щоб зробити сервіс HelloWorld доступним з будь-якого кластера, пошуковий запит DNS повинен успішно проходити в кожному кластері (див. моделі розгортання для деталей). Ми вирішимо це, розгорнувши сервіс HelloWorld в кожному кластері в мережі.

Для початку створіть простір імен sample в кожному кластері:

$ kubectl create --context="${CTX_CLUSTER1}" namespace sample
$ kubectl create --context="${CTX_CLUSTER2}" namespace sample

Увімкніть автоматичне додавання sidecar контейнерів для простору імен sample:

$ kubectl label --context="${CTX_CLUSTER1}" namespace sample \
    istio-injection=enabled
$ kubectl label --context="${CTX_CLUSTER2}" namespace sample \
    istio-injection=enabled

Створіть сервіс HelloWorld в обох кластерах:

ZipZip
$ kubectl apply --context="${CTX_CLUSTER1}" \
    -f @samples/helloworld/helloworld.yaml@ \
    -l service=helloworld -n sample
$ kubectl apply --context="${CTX_CLUSTER2}" \
    -f @samples/helloworld/helloworld.yaml@ \
    -l service=helloworld -n sample

Розгортання HelloWorld V1

Розгорніть застосунок helloworld-v1 в cluster1:

Zip
$ kubectl apply --context="${CTX_CLUSTER1}" \
    -f @samples/helloworld/helloworld.yaml@ \
    -l version=v1 -n sample

Перевірте статус podʼа helloworld-v1:

$ kubectl get pod --context="${CTX_CLUSTER1}" -n sample -l app=helloworld
NAME                            READY     STATUS    RESTARTS   AGE
helloworld-v1-86f77cd7bd-cpxhv  2/2       Running   0          40s

Дочекайтесь, поки статус helloworld-v1 буде Running.

Розгортання HelloWorld V2

Розгорніть застосунок helloworld-v2 в cluster2:

Zip
$ kubectl apply --context="${CTX_CLUSTER2}" \
    -f @samples/helloworld/helloworld.yaml@ \
    -l version=v2 -n sample

Перевірте статус podʼа helloworld-v2:

$ kubectl get pod --context="${CTX_CLUSTER2}" -n sample -l app=helloworld
NAME                            READY     STATUS    RESTARTS   AGE
helloworld-v2-758dd55874-6x4t8  2/2       Running   0          40s

Дочекайтесь, поки статус helloworld-v2 буде Running.

Розгортання curl

Розгорніть застосунок curl в обох кластерах:

ZipZip
$ kubectl apply --context="${CTX_CLUSTER1}" \
    -f @samples/curl/curl.yaml@ -n sample
$ kubectl apply --context="${CTX_CLUSTER2}" \
    -f @samples/curl/curl.yaml@ -n sample

Перевірте статус podʼа curl в cluster1:

$ kubectl get pod --context="${CTX_CLUSTER1}" -n sample -l app=curl
NAME                             READY   STATUS    RESTARTS   AGE
curl-754684654f-n6bzf            2/2     Running   0          5s

Дочекайтесь, поки статус podʼа curl буде Running.

Перевірте статус podʼа curl в cluster2:

$ kubectl get pod --context="${CTX_CLUSTER2}" -n sample -l app=curl
NAME                             READY   STATUS    RESTARTS   AGE
curl-754684654f-dzl9j            2/2     Running   0          5s

Дочекайтесь, поки статус podʼа curl буде Running.

Перевірка міжкластерного трафіку

Щоб перевірити, чи працює міжкластерне балансування навантаження як очікується, викликайте сервіс HelloWorld кілька разів за допомогою podʼа curl. Щоб забезпечити правильність балансування навантаження, викликайте сервіс HelloWorld з усіх кластерів у вашій установці.

Відправте один запит з podʼа curl в cluster1 до сервісу HelloWorld:

$ kubectl exec --context="${CTX_CLUSTER1}" -n sample -c curl \
    "$(kubectl get pod --context="${CTX_CLUSTER1}" -n sample -l \
    app=curl -o jsonpath='{.items[0].metadata.name}')" \
    -- curl -sS helloworld.sample:5000/hello

Повторіть цей запит кілька разів і перевірте, що версія HelloWorld повинна перемикатися між v1 і v2:

Hello version: v2, instance: helloworld-v2-758dd55874-6x4t8
Hello version: v1, instance: helloworld-v1-86f77cd7bd-cpxhv
...

Тепер повторіть цей процес з podʼа curl в cluster2:

$ kubectl exec --context="${CTX_CLUSTER2}" -n sample -c curl \
    "$(kubectl get pod --context="${CTX_CLUSTER2}" -n sample -l \
    app=curl -o jsonpath='{.items[0].metadata.name}')" \
    -- curl -sS helloworld.sample:5000/hello

Повторіть цей запит кілька разів і перевірте, що версія HelloWorld повинна перемикатися між v1 і v2:

Hello version: v2, instance: helloworld-v2-758dd55874-6x4t8
Hello version: v1, instance: helloworld-v1-86f77cd7bd-cpxhv
...

Вітаємо! Ви успішно встановили та перевірили Istio на кількох кластерах!

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

Ознайомтесь з завданнями з балансування навантаження за локальністю, щоб дізнатися, як керувати трафіком у мережі з кількома кластерами.

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

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