Яка оркестровка контейнерів найкраща для вас?

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

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

Ця публікація порівнює два вагомі варіанти: Amazon Elastic Container Service (ECS) і Kubernetes.

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

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

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

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

Що таке Amazon ECS?

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

ECS дозволяє розгортати ваші програми через групу серверів, які називаються кластерами, використовуючи визначення завдань і виклики інтерфейсів прикладних програм (API).

Читайте також: Які екземпляри AWS EC2 вам слід використовувати?

Переваги Amazon ECS

  • Традиційний ECS – цю версію було запущено в 2015 році та працює на базі Amazon EC2 для легкого запуску контейнерів Dockers у хмарі. Традиційний ECS дає базовий контроль над параметрами EC2, що забезпечує гнучкість. Це означає, що ви вибираєте типи екземплярів, які хочете запускати у своєму контейнері. Крім того, модель зв’язує вас з іншими службами AWS, які можна використовувати для моніторингу та реєстрації активності в екземплярах EC2.
  • Fargate ECS – випущений у 2017 році для запуску контейнерів без необхідності керування основними параметрами обчислення EC2. Fargate використовує інший підхід, обчислюючи необхідний процесор і пам’ять. Якщо ви хочете швидко запустити робочі навантаження, це може бути найкращим варіантом, оскільки вам не доведеться турбуватися про основні обчислювальні параметри.
  • Спрощена архітектура додатків – ECS є хорошим варіантом для додатків із кількома мікросервісами (з невеликою кількістю зовнішніх залежностей або з кількома рухомими частинами), що працюють незалежно.
  • Легкий моніторинг і ведення журналів – ви можете легко інтегрувати ECS із інструментами журналювання та моніторингу AWS, такими як CloudWatch. Вам не потрібно налаштовувати видимість робочих навантажень контейнера, що економить ваш час.
  • Легке навчання – ECS легко освоїти. Розміщений Kubernetes набуває більшої популярності, ніж традиційні моделі, такі як KOPS flavors і Kubeadm.
  • Безсерверна інфраструктура – ​​ECS дозволяє запускати контейнери без необхідності керування віртуальними машинами; розгортає контейнери без втручання людини.
  • Вбудована безпека – за замовчуванням Amazon ECS захищено та каскадує заходи безпеки через ізольований мережевий механізм віртуальної приватної хмари.
  •   Автоматизуйте HR-завдання за допомогою Freshteam і підвищуйте ефективність

    Обмеження ECS

  • Обмежене сховище – Зовнішнє сховище обмежується виключно Amazon, аж до Amazon EBS.
  • Обмеження перевірки – ECS є продуктом на основі Amazon, тому недоступний для публічного розгортання за межами Amazon.
  • Прив’язаність до постачальника – ECS є упередженим; він може керувати лише своїми створеними контейнерами.
  • Недоступність коду ECS – значна частина коду ECS недоступна для всіх. Такі інструменти, як AWS Blox (фреймворк для створення користувальницьких планувальників), мають дуже невелику частину бази коду з відкритим кодом.
  • Що таке Kubernetes?

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

    Використовуючи 15-річний досвід роботи з робочими навантаженнями Google (поєднуючи найкращі ідеї та практики спільноти), K8s групує ваші контейнери додатків у логічні блоки, які можна легко знайти та керувати ними.

    Крім того, основні функції K8s, як-от балансування навантаження, постійне сховище, автоматичні відкати для контейнерних програм, секрети, самовідновлення для кластерів Kubernetes і керування конфігурацією.

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

    Переваги Kubernetes

  • Відкритий вихідний код (без прив’язки до постачальника) – незалежно від того, працюєте ви локально чи в хмарі, ви можете використовувати Kubernetes без зміни архітектури стратегії оркестровки. На відміну від традиційного програмного забезпечення, за яке стягується певна плата за ліцензію, K8s є безкоштовним із відкритим кодом. Наче цього недостатньо, кластери K8s працюють у публічних і приватних хмарах, забезпечуючи ресурси віртуалізації для обох об’єктів.
  • Висока потужна гнучкість – K8s є чудовим рішенням, якщо вашим програмам потрібна висока доступність із підтримкою ефективності та масштабованості. Ця риса є тактично корисною в додатках, які генерують високий дохід. Простіше кажучи, це детальний контроль над вашими робочими навантаженнями. У випадках, коли ви бажаєте перевести свої програми на більш потужні платформи, K8s не обмежується блокуванням постачальників, як-от ECS.
  • Висока доступність. Як зазначалося вище, конструкція K8s спрямована на забезпечення доступності додатків та їхньої необхідної інфраструктури, що робить його необхідною функцією для контейнерів, що розробляються. Під високою доступністю існує кілька прийомів:
    • Перевірки працездатності та самовідновлення – Kubernetes захищає ваші програми від збоїв шляхом регулярних перевірок вузлів. Якщо капсула або контейнер розчавлені через помилку, K8s автоматично пропонує заміну.
    • Балансування навантаження та маршрутизація трафіку – Що стосується маршрутизації трафіку, K8s надсилатиме запити лише до відповідних контейнерів. А за допомогою балансування навантаження K8s розподіляє навантаження між модулями, балансуючи ваші ресурси для кількох випадків, таких як збої, випадковий пік трафіку або пакетна обробка. Знову ж таки, ви також можете використовувати зовнішні балансувальники навантаження, якщо хочете.
  • Масштабованість робочого навантаження. Хоча це було сказано вище, давайте розберемо це далі. K8s використовує свої ресурси для забезпечення ефективного масштабування за такими критеріями.
    • Автоматичне масштабування – ця функція дозволяє автоматично регулювати кількість запущених контейнерів відповідно до використання ЦП та інших показників ЦП.
    • Ручне масштабування – за допомогою цієї функції ви можете масштабувати кількість запущених контейнерів через командний рядок або інтерфейс.
    • Контролер реплікації – цей інструмент дозволяє визначати кількість модулів, які відповідають вашим специфікаціям кластера; якщо їх небагато, він починає новий, а якщо їх занадто багато, він їх припиняє.
      Вирішіть проблему Killing Floor 2 Waiting for Players
  • Розроблено для розгортання – K8s спеціально розроблено для прискорення процесу створення, тестування та доставки програмного забезпечення. Ось деякі з пропонованих функцій:
    • Автоматичне відкочування та розгортання – ви можете розгорнути деякі нові конфігурації або оновлення програм під час розробки. K8s дозволяє виконувати процес без простою програми. У разі збою K8s автоматично повертається до попередньої версії.
    • Розгортання Canary – ви можете скористатися цією функцією, протестувавши нові розгортання у виробництві паралельно з попередньою версією; K8s дозволяє зменшити масштаб останньої версії програми, одночасно збільшуючи останню версію.
    • Різноманітна підтримка мов програмування та фреймворків. Кубернетес підтримує багато мов розробки та фреймворків, незалежно від того, чи є у вас досвід роботи з мовами програмування Go, Java чи .Net. Якщо програма може працювати в контейнері, вона працює на K8s.
  • Виявлення служб – кожен розробник бажає, щоб усі надані служби мали спосіб спілкування між собою. Однак модель роботи K8s передбачає безперервне створення та знищення контейнерів, що робить деякі служби неіснуючими в певних місцях. У традиційному розвитку реєстр послуг буде адаптований для відстеження місць розташування цих послуг. K8s вирішує цю проблему за допомогою нативної концепції сервісу для групування модулів і безперешкодного виявлення сервісів. Таким чином, K8s надає IP-адреси для всіх модулів, призначає DNS-імена для кожного набору модулів, а потім балансує трафік навантаження на кожному наборі модулів. Ця архітектура створює середовище, у якому пошук служб абстрагується від кожного контейнера.
  • Енергійна спільнота – K8s підтримується жвавою спільнотою з тисячами розробників, які використовують її послуги. На момент написання статті понад 100 мільйонів розробників використовують K8s для відкриття, створюючи 330 мільйонів проектів. Спільнота не демонструє ознак сповільнення та заохочує співпрацю між розробниками.
  • Обмеження Kubernetes

  • Крута крива навчання. Щоб розпочати роботу з Kubernetes, вам потрібно зрозуміти її ландшафт. Крім того, надання наскрізного рішення вимагає включення різноманітних технологій і послуг. Оскільки додаткові технології суттєво відрізняються (іноді деякі рішення походять із домінування UNIX, тоді як інші є новими технологіями з низьким рівнем впровадження), з’ясувати, які з них включити, може бути неспокійним. Вам також потрібно з’ясувати, як усі компоненти поєднуються разом, щоб забезпечити більш комплексне вирішення конкретних проблем. Документація доступна, але вам потрібно зрозуміти, як надавати ці послуги та керувати ними.
  • Розрізнення функцій і проектів – зрозуміти відмінності між проектами та функціями може бути складно. Хоча ви можете легко отримати поради щодо керування проектами, ви можете не отримати чіткої різниці між функціями та проектами спільноти.
  • Знання за межами Kubernetes – Kubernetes — це складна платформа. З огляду на всю цю складність у наданні рішень, ви, ймовірно, зіткнетеся з деякою плутаниною, особливо якщо ви новачок у цьому. Тим не менш, організації все ще хочуть надавати рішення (наприклад, сховища даних як послугу), підвищуючи криву навчання. Якщо ви використовуєте такі послуги у своєму продукті, ви повинні розширити свої знання за межі Kubernetes.
  • Керувати Kubernetes складно – перейти до виробництва з K8s – це одне. Вам потрібно буде надати всі необхідні ресурси для ваших програм, щоб керувати ним. Вам також потрібно буде впоратися з усіма засобами безпеки та інтегрувати їх у свою інфраструктуру. Крім того, вам знадобиться певний досвід високого рівня, щоб ефективно обробляти та використовувати інструменти. Вам знадобиться отримати глибокі знання, щоб керувати кластерами Kubernetes, контролювати та виправляти неполадки кластерів, а також підтримувати їх у масштабі.
  •   Як додати веб-сайт до швидкого набору в Firefox

    Порівняння ECS і Kubernetes

    Ось паралельне порівняння, яке показує відмінності:

    Відмінність KubernetesAmazon ECSAВизначення програми. Програми розгортаються шляхом поєднання модулів, вузлів і служб. Розгортання програми відбувається у формі завдань. Завдання є екземплярами контейнерів – наприклад, контейнери Docker, що працюють на екземплярах ECS. DeploymentComplex, оскільки вам потрібно розгортати та налаштовувати кластери вручну. Просте розгортання через консоль AWS. Підтримка вузлів (кількість машин) 5000 вузлів на кластер. 1000 вузлів на кластер .КонтейнериДо 300 000 контейнерів на кластер. Обмежується використаною потужністю інфраструктури. Балансування навантаження. Підрозділи доступні через служби, що використовуються як балансувальники навантаження за вхідними контролерами. Доступні два балансувальники навантаження; ELB-Application або Network.PricingFree.ECS є безкоштовним, але ви повинні платити за ресурси EC2. Оптимізація Добре оптимізовано для одного великого кластера. Попередньо налаштовано з вимогами та вимогами до контейнера. Автомасштабування. Ви визначаєте параметри автомасштабування під час створення розгортань. Ви використовуєте служби моніторингу, такі як CloudWatch для автоматичного масштабування на основі процесора, пам’яті та користувацьких параметрів. Перевірка працездатності Доступні дві перевірки працездатності: готовність і живучість. Досягається за допомогою служб моніторингу, таких як CloudWatch. Відкриття служб Запроваджується за допомогою змінних середовища або DNS. Одержується за допомогою служб моніторингу – CloudWatch.Vendor-lock в Ні.Так.

    Випадки використання ECS і Kubernetes

    Ось як технологія контейнеризації ECS і Kubernetes робить революцію в галузях:

    ECS INC International висвітлює численні випадки використання технології ECS. У сучасних медичних пристроях ви знайдете революційні методи лікування пацієнтів і методи доставки ліків. Існує багато інструментів, наприклад електронні інгалятори, медичні автоін’єктори та інфузійні насоси.

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

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

    З іншого боку, Kubernetes має свою частку практичних застосувань. По-перше, хмара IBM пропонує приватні, загальнодоступні та гібридні функції в широкому діапазоні середовищ виконання.

    Spotify, гігант у сфері потокового передавання музики, використовує технологію Kubernetes для безперебійної роботи, до 10 мільйонів запитів на секунду. Хоча це випадки реального використання, K8s надає більше функцій у архітектурі мікросервісів, мережевих функціях у хмарі, машинному навчанні та повороті життєвого циклу розробки програмного забезпечення.

    Заключні слова

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

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

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