Перевірка встановлення
Слідуйте цьому посібнику, щоб перевірити, що ваша установка 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
в обох кластерах:
$ 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
:
$ 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
:
$ 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
в обох кластерах:
$ 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 на кількох кластерах!
Наступні кроки
Ознайомтесь з завданнями з балансування навантаження за локальністю, щоб дізнатися, як керувати трафіком у мережі з кількома кластерами.