Яку платформу оркестровки вибрати

Nomad і Kubernetes стали двома найпопулярнішими платформами оркестровки, доступними для ваших робочих навантажень динамічної оркестровки.

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

Обидва Кочівник і Kubernetes спростіть розгортання та керування вашими контейнерними програмами. За допомогою правильної оркестровальної платформи ви можете ефективно обробляти різні мікросервіси та контейнери – від виявлення та розгортання сервісів до координації та масштабування.

Перш ніж вибрати правильну платформу, давайте дізнаємося більше про Nomad і Kubernetes.

Що таке Nomad?

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

З Nomad ви отримуєте простий двійковий файл, який потрібно запустити. На відміну від інших рішень, це дуже мало ресурсів, що не займає багато обчислень з ваших серверів. Окрім контейнерів, ви можете запускати різні робочі навантаження, як-от Windows, Java, віртуальні машини та Docker.

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

Nomad доступний у двох версіях – Community Edition та Enterprise Edition. The Видання спільноти є безкоштовним і дозволяє вам самостійно керувати своїм кластером Nomad. Протягом 15 хвилин ви можете запустити його локально або у своєму хмарному середовищі. Тим часом, Enterprise Edition забезпечує підтримку та додаткові функції, такі як співпраця, операції та керування.

Що таке Kubernetes?

Kubernetes — це платформа оркестровки, яка є розширюваною, портативною та високоефективною. Також відомий як K8s, він спочатку був розроблений Google. Наразі нею керує Cloud Native Computing Foundation або CNCF, і вона є найпопулярнішою платформою оркестровки.

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

Це, безперечно, найпопулярніша платформа оркестровки. Провідні постачальники хмарних послуг, як-от Amazon Web Service і Google Cloud Platform, надають керовані послуги Kubernetes – Amazon Elastic Kubernetes Service (AWS EKS) і Google Kubernetes Engine (GKE) відповідно.

Читайте також: Початок роботи з Kubernetes: вступ для початківців

Але який з них вибрати відповідно до вимог до платформи оркестровки? Давайте дізнаємося, порівнявши ці два.

Nomad проти Kubernetes

#1. монтаж

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

Кочівник

Для Nomad ви отримуєте попередньо скомпільований двійковий файл або пакет, який потрібно встановити. Для встановлення вручну на вашій локальній машині ви можете завантажити та встановити офіційний двійковий файл. Якщо ви використовуєте Linux, ви можете встановити офіційний пакет Linux. У будь-якому випадку, після інсталяції все, що вам потрібно зробити, це встановити плагіни CNI (Container Network Interface) безпосередньо з командного рядка.

Це ще простіше, якщо ви встановлюєте на MacOS або Windows за допомогою інструментів керування пакетами, таких як Homebrew і Chocolatey відповідно. За допомогою лише однієї команди ваша інсталяція, включаючи плагіни CNI, буде завершена.

Kubernetes

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

Ви можете перевірити офіційний репозиторій для офіційного двійкового файлу, який відповідає вашій платформі, будь то Darwin, Linux або Windows, і архітектурі вашої системи. Коли ви завершите встановлення правильного образу контейнера, вам знадобиться kubectl – інструмент командного рядка, який дозволяє взаємодіяти з контейнерами.

#2. Масштабованість

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

Кочівник

Доведено, що Nomad запускає кластери, що перевищують 10 000 вузлів у робочому середовищі. У 2020 році Nomad завершив стрес-тест із 2 мільйонами докер-контейнерів на 6100 хостах. Це охопило понад 10 різних регіонів AWS і тривало 22 хвилини. Це перевершило їхні попередні успішні результати 1 млн контейнерів.

Ви також отримуєте горизонтальне автомасштабування за допомогою Nomad Autoscaler. За потреби ви можете запустити це як окремий процес.

Kubernetes

Починаючи з версії 1.28, Kubernetes дозволяє масштабувати кластер до 5000 вузлів. Загалом ви можете запустити 150 000 контейнерів або 300 000 контейнерів.

Завдяки підвищеній масштабованості обслуговування кластера Kubernetes стає складнішим у порівнянні з керуванням кластером Nomad. Nomad дає вам перевагу над Kubernetes із загальною кількістю вузлів, які ви можете запустити.

#3. Продуктивність

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

Кочівник

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

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

Kubernetes

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

Завдяки широкому набору функцій і конфігурацій Kubernetes використовує більше системних ресурсів. Зі збільшенням розміру вашого кластера ви можете зіткнутися з додатковими накладними витратами та складністю керування ним.

#4. Мережа

Мережа є важливим аспектом, коли справа доходить до оркестровки контейнерів. Він визначає, як ваші вузли можуть знаходити та спілкуватися один з одним.

Кочівник

Будучи сильно зосередженим на організації робочого навантаження, Nomad майже не торкається мережі та намагається якомога менше змінювати речі.

Замість того, щоб покладатися на інфраструктуру, Nomad працює з конфігураціями. Ви отримуєте необхідну інформацію безпосередньо з конфігурації, а не запускаєте додаткові компоненти, такі як DNS-сервери або балансувальники навантаження. Базовий блок планування в Nomad, який називається Allocations, може запитувати порти за допомогою мережевого блоку.

Kubernetes

Коли мова йде про Kubernetes, мережа є центральною опорою. Ви можете контролювати наступні аспекти – зв’язок контейнер-контейнер через локальний хост, зв’язок контейнер-пакет, зв’язок модуль-сервіс і зв’язок eternal-to-service.

У порівнянні з динамічними портами в Nomad, Kubernetes має інший підхід. Ви отримуєте Service API як абстракцію для надання мережі Pods

#5. Вимоги

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

Кочівник

Для робочих серверів бажано запускати на великих примірниках машин. Добре, щоб кожен екземпляр сервера мав від 4 до 8+ ядер ЦП, 16-32 ГБ+ пам’яті та 40-80 ГБ+ швидкого диска. Ви також повинні забезпечити значну пропускну здатність мережі.

Якщо ви використовуєте брандмауер, ви повинні переконатися, що 3 порти Nomad дозволені. 3 порти: HTTP API (за замовчуванням 4646), який використовується серверами та клієнтами, RPC (за замовчуванням 4647), який використовується для внутрішнього зв’язку, і Serf WAN (за замовчуванням 4648), який використовується серверами для спілкування з іншими серверами.

Kubernetes

Кластери Kubernetes можуть стати дуже складними під час роботи у висококонтейнерних виробничих середовищах. Однак бажано, щоб кожен вузол мав мінімум 2–4 ядра ЦП і 8–16 ГБ оперативної пам’яті.

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

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

#6. Кодування

Легкість кодування визначає, наскільки ефективно ви можете взаємодіяти з обраною вами структурою. Окрім визначення платформи та завдань, вам також потрібно вивчити команди CLI для взаємодії з інструментом командного рядка.

Кочівник

HCL або HashiCorp Configuration Language є основною мовою конфігурації, яка використовується в Nomad. HCL прагне знайти баланс між зрозумілим для людини та зручним для машин. За допомогою цього ви можете написати специфікації роботи, включаючи завдання, обмеження та залежності для вашої програми та послуг.

Крім того, вам також потрібно вивчити команди CLI для інструмента командного рядка Nomad. Це дає вам змогу взаємодіяти з кластером nomad і створювати конфігурації.

Kubernetes

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

Коли ви запускаєте складні програми Kubernetes, Helm — це менеджер пакетів для Kubernetes, який дозволяє визначати, встановлювати та оновлювати навіть складні програми Kubernetes. Графіки Helm написані на YAML і можуть містити файли шаблонів і значень для налаштування розгортань.

Для взаємодії з кластером Kubernetes ви будете використовувати інструмент командного рядка kubectl. Це передбачає виконання різних команд для створення, зміни та керування ресурсами Kubernetes.

#7. Інтеграція

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

Кочівник

За допомогою Nomad ви можете активно інтегрувати різні інструменти та технології. Легко з’єднуйтеся з Docker та іншими середовищами виконання контейнерів, полегшуючи розгортання контейнерних програм. Для забезпечення інфраструктури ви можете використовувати інтеграцію Terraform і спростити створення ресурсів.

Будучи частиною HashiCrop, Nomad також дозволяє вам співпрацювати з HashiCorp Consul для виявлення служб і перевірки працездатності, а HashiCorp Vault забезпечує безпечне керування секретами. Ваші потреби в моніторингу задовольняються за допомогою таких інтеграцій, як Prometheus, Grafana та ELK Stack. Крім того, Nomad легко вписується у ваші конвеєри CI/CD, забезпечуючи автоматичне розгортання додатків.

Kubernetes

Будучи перевіреним часом рішенням, Kubernetes пропонує довгий список технологій для інтеграції. Ви можете підключитися до Docker для розгортання контейнерів. Для ваших мережевих потреб ви можете використовувати такі рішення, як Calico або Cilium. Такі параметри зберігання, як Ceph, і хмарні постачальники, як-от AWS EKS (Amazon Elastic Kubernetes Service) і Google GKE (Google Kubernetes Engine), активно керують вашим постійним сховищем. Хмарні рішення також надають вам додаткові послуги.

Якщо ви хочете підтримувати безсерверні робочі навантаження, Kubernetes допоможе вам. Ви можете розширити свій Kubernetes за допомогою безсерверних фреймворків, таких як Knative і KEDA (автомасштабування, кероване подіями на основі Kubernetes).

#8. GUI

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

Кочівник

Nomad надає вбудований веб-інтерфейс як частину двійкового файлу. Коли ви встановлюєте Nomad і запускаєте сервер, ви отримуєте графічний інтерфейс разом із API та CLI. Вам не потрібна нульова конфігурація, щоб почати використовувати інтерфейс і перевірити кластер.

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

Kubernetes

Kubernetes за замовчуванням не має графічного інтерфейсу користувача. Однак ви можете встановити його відповідно до ваших вимог. Сам Kubernetes пропонує офіційний інтерфейс під назвою Dashboard. Хоча він не встановлено за замовчуванням, ви можете запустити його за допомогою інструмента kubectl. Використовуючи інформаційну панель, ви можете отримати огляд свого кластера.

Ви можете розгортати контейнерні програми в кластері Kubernetes, керувати ними та усувати неполадки. Хмарні постачальники, такі як AWS EKS і Google GKE, надають власні інструменти інтерфейсу користувача. Існують також інструменти сторонніх розробників, які можна запускати.

Nomad проти Kubernetes: зведена таблиця

FeatureNomadKubernetesInstallationОдин попередньо скомпільований двійковий файлРізні двійкові файли для різних компонентів і клієнтівМасштабованістьМожливість запускати 10 000 вузлів і 2 мільйони контейнерів 5000 вузлів і 300 000 контейнерів загалом ПродуктивністьПростий і ефективний із меншим обсягом ресурсівРозширений набір функцій, але використовує більше ресурсівМережаОдна конфігурація з динамічним розподілом портівFine-gra ined контроль і робить не покладайтеся на динамічні порти. Вимоги. Нижчі системні вимоги для більшого кластера. Більший кластер потребує більше системних джерел. Кодування. Він має дуже широкий спектр інтеграцій та доступних інструментів. Може використовувати існуючі мови, як-от YAML та JSON. Інтеграція. Має гарну офіційну та сторонню інтеграцію. доступний у веб-інтерфейсі Потрібно встановити окремо

Виберіть правильну платформу для своїх потреб оркестровки

Між Nomad і Kubernetes ваш вибір платформи оркестровки залежить від ваших конкретних вимог і пріоритетів. Обидві платформи підтримують різні варіанти використання – планування розгортання, автоматичне розгортання та відновлення, а також виявлення та керування кластерами.

Якщо ви надаєте перевагу простоті та маєте невелике робоче навантаження, Nomad може бути кращим вибором для вас. Завдяки єдиному двійковому файлу та мінімальним вимогам до ресурсів Nomad полегшує налаштування та роботу. Крім того, ви можете масштабувати кластер для підтримки великої кількості вузлів.

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

Візьміть до уваги інші аспекти, наприклад необхідність вивчення нової мови (HCL) у випадку Nomad, тоді як конфігурації Kubernetes працюють із YAML або JSON. Крім того, вам може знадобитися веб-інтерфейс для зручності використання.

Також враховуйте наявні у вас системні ресурси та пов’язані з цим витрати. Вибір платформи оркестровки між Nomad і Kubernetes має ґрунтуватися на ваших потребах, досвіді та ресурсах.

Далі ознайомтеся з найкращими практиками Kubernetes щодо кращої оркестровки контейнерів.