Короткий посібник з Knative Serverless Framework для початківців

Безсерверні фреймворки користуються попитом протягом останніх кількох років, і розробники їх поширюють.

Тим не менш, контейнерні програми вже популярні, як і Kubernetes серед компаній.

Kubernetes, без сумніву, є чудовим інструментом із хорошим потенціалом. Його екосистема також розвивається завдяки різноманітним новим інструментам і новітнім технологіям, таким як Knative, яка може зробити Kubernetes ще кращим.

Knative було представлено для подолання ситуацій, які призводять до збою, і створення основного стандарту для хмарних платформ і оркестровки в хмарі.

Іншими словами, безсерверна структура Knative може краще задовольнити потреби компанії, ніж інші хмарні безсерверні розгортання.

У цьому посібнику я розповім про Knative, його переваги, випадки використання, процедуру встановлення, робочу процедуру тощо.

Ось і ми!

Що таке Knative?

Knative — це безсерверний фреймворк на основі Kubernetes, який вперше був розроблений Google. Він завантажує та запускає безсерверні функції відповідно до вимог компанії, таким чином мінімізуючи відходи. Це проект із відкритим кодом, який додає компоненти для розгортання, запуску та керування безсерверними програмами на Kubernetes.

Основна мета безсерверної структури Knative — керувати стандартами для кросплатформної оркестровки. Це реалізовано шляхом інтеграції функції створення контейнера, автомасштабування, моделей подій і керування навантаженням.

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

Проте на передову почали виходити міграційні проблеми. І щоб уникнути таких проблем, було представлено безсерверний фреймворк Knative. Отже, якщо вам важко інтегрувати будь-які завдання, Knative може ефективно виконувати це в конвеєрі на основі Kubernetes.

Knative має три частини:

  • Knative Build: створює зображення контейнерів і робить їх доступними з вихідного коду.
  • Knative Serving: він використовує Istio та Kubernetes для підключення та розгортання цих образів контейнерів через призначені ресурси інфраструктури.
  • Knative Eventing: дозволяє користувачам визначати тригери подій і дозволяє користувачам пов’язувати тригери подій із контейнерними функціями.

Щоразу, коли Knative ідентифікує подію, він визначає пов’язаний процес для її запуску на вимогу. З Knative немає потреби виділяти контейнерні вузли, кластери та модулі для роботи, оскільки Knative фіксує ресурси хостингу лише під час виконання певного процесу. Таким чином, Knative збалансовує безсерверні та контейнерні переваги.

Основні поняття Knative

Давайте обговоримо основні поняття Knative Serverless Framework і їхнє відношення до примітивів Knative.

Будувати

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

Події

Подія допомагає вам налагодити кращий зв’язок між слабко пов’язаними споживачами подій і виробниками для створення керованої подіями архітектури. Knative розміщує ці події в черзі, які повинні виконуватися автоматично без сценарію розробників.

Пізніше ці заходи доставляються в контейнери. Потім він надсилає канали виробникам подій для виконання завдань. Це зменшить навантаження розробника на створення коду для встановлення з’єднання.

  Як дискретно дивитися Netflix на роботі

Функції

Функція є незалежною одиницею розгортання та сервісом Knative, як мікросервіс. Його код написаний для виконання одного завдання, наприклад:

  • Обробка файлу в базі даних
  • Збереження користувача в базі даних
  • Виконання планової роботи

Безсерверна структура Knative розроблена, щоб дозволити вам ефективно розробляти й розгортати функції та керувати ними.

Плагіни

Легко розширюйте або перезаписуйте функціональність безсерверної фреймворку Knative за допомогою плагінів. Кожен файл serverless.yml містить властивість плагіна, яка містить різні плагіни.

Ресурси

Ресурси — це компоненти безсерверної інфраструктури Knative, які використовує ваша функція, зокрема:

  • Джерело подій AWS SQS
  • Заплановане завдання (виконувати кожні 5 хвилин, 10 хвилин тощо)
  • Джерело подій Кафки

І більше.

Послуги

Послуги схожі на проект. Отже, служба є організаційною одиницею безсерверної структури Knative. Хоча ви можете мати багато служб для однієї програми, ви можете думати про службу як про файл проекту.

Тут ви зможете визначати функції, події та ресурси в одному файлі під назвою serverless.yml, serverless.json або serverless.js. Коли ви розгортаєте служби з безсерверною структурою, усе у файлі розгортається одночасно.

Подача

Knative-serving вбудовано в Istio та Kubernetes, що підтримує розгортання програм. Це дозволяє швидко розробляти безсерверні контейнери, мережеве програмування та автоматичне масштабування компонентів Istio. Knative-serving розглядає контейнери як масштабовану службу, яка може варіюватися від одного екземпляра до багатьох екземплярів контейнера.

Особливості Knative

Давайте обговоримо деякі особливості безсерверного фреймворку Knative:

  • Knative — це безсерверний фреймворк на основі Kubernetes, який дозволяє розгортати служби в Kubernetes.
  • Він легко інтегрує Knative із підтримуваним середовищем
  • Розробники можуть безпосередньо використовувати Kubernetes API за допомогою Knative для розгортання безсерверних служб
  • Це дозволяє користувачам запускати безсерверні служби за допомогою системи подій Knative

Як працює Knative?

Безсерверна структура Knative працює як сегмент керування подіями та з’єднує Istio та Kubernetes. Kubernetes працює як координатор мікросервісів і контейнерів. З іншого боку, Istio — це мережева технологія з відкритим вихідним кодом, яка об’єднує різні компоненти для взаємодії з користувачем і самим собою.

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

Є три компоненти безсерверного фреймворку Knative, які є ключовими для його функціонування.

Будівництво нових контейнерів

Компонент build відповідає за створення нових контейнерів. Він може конвертувати вихідні коди в контейнер. Knative можна налаштувати відповідно до потреб бізнесу.

Спочатку Knative витягує вихідний код із бібліотеки, як Github. Потім додаються базові залежності, щоб код працював ефективно. Зображення контейнерів потім створюються та поміщаються у файли, до яких може отримати доступ платформа Kubernetes.

Контейнер доступний для розробників, які використовують Kubernetes і Knative. Таким чином, контейнери створюються до тих пір, поки відомо походження коду.

Обслуговування або керування платформою

Обслуговуючий компонент відповідає за роботу платформи. Він передбачає:

  • Конфігурація: конфігурація гарантує керування кількома версіями служби. Кожного разу, коли відбувається розгортання нової функції контейнера, Knative зберігає наявну версію та створює нову з останніми змінами та функціями. Крім того, Knative визначає стан сервісу.
  • Автоматичне масштабування: для кращої роботи безсерверних контейнерів ви повинні мати можливість автоматичного масштабування контейнерів угору або вниз. Knative може автоматично масштабувати послуги для багатьох, якщо це необхідно.
  • Інтелектуальна маршрутизація послуг: це важлива частина робочого механізму Knative. Це дозволяє розробникам спрямовувати потік і обсяг трафіку на різні існуючі версії мікросервісів. Упроваджуючи нові функції та синьо-зелені стратегії розгортання, можна використовувати інтелектуальну маршрутизацію послуг.
  Як набрати нових жителів села в «Animal Crossing: New Horizons»

Це дозволяє залучити частину користувачів до останнього тестування та версії та поступово спрямувати величезний трафік до нової версії.

Події для визначення функцій

Подієвий компонент Knative відповідає за опис функції Knative. Це дозволяє визначати роботу контейнерів на основі подій. Різні події запускають певні функції контейнерів.

Розробники можуть визначати тригери подій і пов’язані контейнери, щоб дозволити Knative виконувати свою роботу. Knative обробляє список подій і доставку подій.

Переваги Knative

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

  • На відміну від інших рішень, Knative має стандартні події та сумісний із рішенням FaaS. Він пропонує стандартну структуру CloudEvent, яка допомагає розробляти безсерверну архітектуру.
  • Хоча Knative не є PaaS, він дозволяє створювати безсерверний PaaS за допомогою платформи безсерверної оркестровки.
  • Knative має повноцінний і зрілий безсерверний дизайн.
  • Він підтримує кросплатформність і дає вам універсальний стандарт серед хмарних провайдерів, щоб виключити ймовірність зв’язування постачальників із певним рішенням.

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

Проблеми Knative (і деякі рішення)

Виклики ефективності

Knative Framework, який підтримує відповідні програми, забезпечує кращу продуктивність за мінімальних витрат. Однак неправильне поєднання додатків може призвести до вищих витрат і недостатнього використання ресурсів контейнера. Це може призвести до низької продуктивності програми, що є найбільшою проблемою безсерверного розгортання Knative.

Таким чином, пул ресурсів поганого розміру або неправильні програми можуть знищити багато переваг Knative.

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

  Виправте код помилки Beaver у Destiny

Функціональні проблеми

Функціональними проблемами Knative можуть бути:

  • Knative залежить від функцій, які відповідають моделі без стану. Це означає, що в самому компоненті не зберігаються дані. Розробка функцій не є складним етапом, але вимагає невеликої зміни підходу, а це означає, що одна помилка може зіпсувати продуктивність програмного забезпечення.
  • Бізнес-дані складаються з кількох етапів транзакцій, а функції без збереження стану підтримують контекст на всіх етапах. Knative не має такої можливості, як це можуть зробити загальнодоступні хмарні безсерверні інструменти.

Регулярний моніторинг і виправлення проблем можуть допомогти вам підтримувати належні результати.

Операційні виклики

Порівняно з безсерверними пропозиціями в загальнодоступній хмарі, у Knative є складна операція. Адміністратори не контролюють базові сервери з публічною хмарою. Але їм потрібно буде керувати серверами, а також Kubernetes, контейнерами, Knative і Istio.

Knative мінімально розширює операції та складність розробки для компаній, які вже взяли на себе зобов’язання використовувати Kubernetes і контейнери. Ті, хто прихильний до обслуговування mesh і мікросервісів, знайдуть Knative природним розширенням.

Випадки використання Knative

Knative найкраще підходить для додатків, які викликають змінну кількість подій, що залишаються в межах або поза межами часу. Конкретні випадки використання безсерверної структури Knative включають:

Важлива орієнтація на подію. Якщо ІТ-команди не можуть уявити програму як серію подій замість транзакцій, Knative може бути невдалим вибором з міркувань функціональності та ефективності.

Передумови та встановлення Knative

Як ми бачимо в наведених вище розділах, Knative — це набір компонентів, таких як створення подій і обслуговування, які працюють на сітці служби та кластері оркестровки робочого навантаження. Є утиліти командного рядка, які нам потрібно встановити для простої роботи. Таким чином, нам потрібно кілька залежностей, щоб ми могли продовжити встановлення.

передумови

Є кілька варіантів встановлення Kubernetes. Docker Desktop пропонує простий кластер Kubernetes, який служить різним цілям. Простий підхід полягає у використанні Kubernetes у Docker для запуску кластера Kubernetes разом із вузлами контейнера Docker. Зручним способом роботи з кластером є використання інструменту командного рядка Knative.

Knative CLI пропонує простий і швидкий інтерфейс для створення ресурсів. Це допомагає в таких складних завданнях, як розподіл трафіку та автомасштабування. Зручний спосіб — завантажити сумісний двійковий файл зі сторінки GitHub.

монтаж

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

Висновок: Майбутнє Knative

Knative замінив безсерверні обчислення, забезпечивши автоматичне масштабування програм. Це значно впливає на сумісність і модульність системи.

Очікується, що в майбутньому Knative покриє поточні недоліки та стане однією з найефективніших технологій для запуску безсерверної архітектури.

Технологія Knative має більший вплив на розробників, оскільки розглядає її переваги перед безсерверними альтернативами. Knative допоможе вам заощадити час, замінивши необхідність створювати та підтримувати розширення Kubernetes. Розробники дуже задоволені технологією Knative, оскільки вона проста у використанні та є чудовою альтернативою безсерверним рішенням.

Отже, якщо ви хочете максимізувати потужність середовища Kubernetes у своїх хмарних робочих процесах, застосуйте технологію Knative і самі переконайтеся в перевагах.