Кубернете

Kubernetes Ingress

Kubernetes Ingress
У Кубернетеса багато рухомих частин. Цього слід очікувати від будь-якої моделі, призначеної для розподілених обчислень. Щоб дослідити, що допомагає нам досягти Kubernetes Ingress, давайте спочатку підсумуємо кілька важливих деталей про типовий кластер Kubernetes:

  1. Додаток, розгорнутий у кластері Kubernetes, виконується як підсистема збору.
  2. Стручки - це, по суті, контейнери, які заплановані через кілька вузлів.
  3. Вузлами можуть бути фізичні сервери або віртуальні машини, пропоновані вашим хостинг-провайдером. Очевидно, ви також можете проводити Kubernetes на локальному сервері, якщо ви цього бажаєте.
  4. Кожен Pod має унікальну IP-адресу.
  5. Ваша програма розділена на багато підкомпонентів, які часто називають мікропослугами.
  6. Для кожної мікросервіси вашої програми існує відповідна Служба в Kubernetes.
  7. У контексті Кубернетеса, a Обслуговування виставляє колекцію стручків для решти скупчення як єдину абстракцію. Один віртуальний IP.
  8. Це допомагає одній службі вашої програми взаємодіяти з іншою службою. Це абстракція, яка дозволяє звертатися до колекції стручків, а не вказувати IP-адресу стручка, кожного разу, коли ви хочете поговорити з нею.
  9. Служба Kubernetes також виконує функцію балансування навантаження для всіх стручків, які вона представляє. Трафік рівномірно розподіляється по всіх вузлах.

Все йде нормально. Кожна служба може поговорити з іншою службою. Цей зв’язок можливий по всьому кластеру Kubernetes

Виставлення послуг

Якщо дерево падає в лісі, а поруч його ніхто не чує, чи видає це звук??"

Аналогічно, якщо ваш додаток не служить меті за межами кластера Kubernetes, чи насправді важливо, чи добре складений ваш кластер чи ні? Можливо, ні.

Щоб дати вам конкретний приклад, скажімо, у нас є класичний веб-додаток, що складається з інтерфейсу, написаного на Nodejs, і бекенда, написаного на Python, який використовує базу даних MySQL. Ви розгортаєте дві відповідні служби на своєму кластері Kubernetes.

Ви створюєте файл Docker, який вказує, як упакувати програмне забезпечення інтерфейсу в контейнер, і аналогічним чином ви пакуєте свій сервер. Далі у своєму кластері Kubernetes ви розгорнете дві служби, кожна з яких запускає за собою набір стручків. Веб-служба може спілкуватися з кластером баз даних і навпаки.

Однак Kubernetes не надає жодному з цих сервісів (що є важливою кінцевою точкою HTTP) в усьому світі. Як зазначено в офіційних документах:

Передбачається, що служби мають віртуальні IP-адреси, які можна маршрутизувати лише в мережі кластера"

Це цілком розумно з точки зору безпеки, ваші служби можуть спілкуватися між собою, але кластер не дозволяє стороннім об'єктам спілкуватися безпосередньо зі службами. Наприклад, лише ваш веб-інтерфейс може спілкуватися зі службою баз даних, а ніхто інший не може навіть надсилати запити до служби баз даних.

Проблема виникає, коли ми розглядаємо варіант використання інтерфейсної служби. Він повинен бути доступним для решти громадськості, щоб кінцеві користувачі могли використовувати ваш додаток. Ми надаємо такі Послуги, використовуючи Kubernetes Ingress.

Kubernetes Ingress

Ingress виставляє маршрути HTTP та HTTPS поза кластером до служб у кластері. Ви можете керувати правилами маршрутизації, визначивши ресурс Kubernetes Ingress. Але це робить набагато більше, ніж це. Виставлення однієї Служби можна досягти, використовуючи різні інші альтернативи, такі як NodePort або Балансери навантаження, але ці засоби не мають функцій, які є досить складними для сучасної веб-програми.

Такі функції, як виставлення декількох додатків за один IP, визначення маршрутів тощо.

Тож давайте розберемося з цими особливостями для решти статті:

Одномісний вхід

Це найпростіша версія викриття однієї служби, наприклад веб-інтерфейсу, з IP-адресою (або доменним ім'ям) та портами HTTP та HTTPS за замовчуванням (i.е, 80 та 443).

Одномісний фанат

Це вхідна установка, яка дозволяє дозволити вхідний трафік до однієї IP-адреси та направити його на кілька служб.

Він складається з:

Єдиний вихід - це той випадок, коли один IP використовується для кількох служб. Служби можуть знаходитись у різних шляхах в URI, як foo.бар.com / admin може бути послугою для адміністраторів та foo.бар.com / home може бути послугою, яка генерує домашню сторінку кожного користувача.

Вхідний порт завжди буде 80 або 443, але порт, на якому запущені служби (всередині кластера), може дуже сильно відрізнятися.

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

Віртуальний хостинг на основі імен

Загальнодоступні IP-адреси обмежені. Вони також досить дорогі. Ідея віртуального хостингу на основі імен давніше, ніж Kubernetes. Суть цього полягає в тому, що ви вказуєте записи DNS для різних веб-сайтів, таких як ww1.приклад.com та ww2.приклад.com на ту саму IP-адресу. Сервер, що працює за цією IP-адресою, побачить вхідний запит, і якщо назва хосту, зазначене у запиті, стосується ww1.приклад.com, то він обслуговує цей веб-сайт для вас, а якщо ww2.приклад.com запитується, тоді це подається.

У контексті Kubernetes ми можемо запустити дві служби, що працюють, скажімо, на порту 80, і виставити обидві з них на одній IP-адресі, використовуючи також вхід порту 80. У місці входу рух Ww1.приклад.com буде відокремлено від трафіку для ww2.приклад.ком. Звідси термін віртуальний хостинг на основі назви.

Висновок

Проникнення в Kubernetes досить складне, щоб висвітлити його в одному дописі. Для цього існує безліч варіантів використання, а також різноманітні контролери Ingress, які додадуть функціональність Ingress до вашого кластера. Я б порадив почати з Nginx Ingress Controller.

Для отримання детальної інформації та технічних характеристик ви також можете дотримуватися офіційної документації.

5 найкращих аркадних ігор для Linux
В наш час комп’ютери - це серйозні машини, що використовуються для ігор. Якщо ви не можете отримати новий високий бал, ви зрозумієте, що я маю на уваз...
Битва за Веснот 1.13.6 Розробка випущена
Битва за Веснот 1.13.6, випущений минулого місяця, є шостим випуском розробки в 1.13.x, і це забезпечує низку вдосконалень, особливо до інтерфейсу кор...
Як встановити League of Legends на Ubuntu 14.04
Якщо ви шанувальник League of Legends, то це можливість для вас тестувати League of Legends. Зверніть увагу, що LOL підтримується на PlayOnLinux, якщо...