14 інструментів оркестровки контейнерів для DevOps

Огляд популярних інструментів оркестрування контейнерів

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

Що таке оркестрування контейнерів?

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

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

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

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

На щастя, на ринку існує багато інструментів для оркестрування контейнерів.

Давайте їх розглянемо!

Kubernetes

Ви, мабуть, вже здогадалися, правда?

Kubernetes – це платформа з відкритим кодом, розроблена спочатку Google, а зараз підтримується Cloud Native Computing Foundation. Kubernetes підтримує як декларативну конфігурацію, так і автоматизацію. Він може допомогти автоматизувати розгортання, масштабування та керування контейнерними навантаженнями і сервісами.

Зображення з Kubernetes.io

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

Такі компанії, як Babylon, Booking.com, AppDirect, активно використовують Kubernetes.

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

  • Виявлення сервісів та балансування навантаження
  • Оркестрування зберігання
  • Автоматизоване розгортання та відкат змін
  • Горизонтальне масштабування
  • Управління секретами та конфігураціями
  • Самовідновлення
  • Пакетне виконання
  • Подвійний стек IPv4/IPv6
  • Автоматичне пакування в контейнери

Хочете вивчити Kubernetes? Ознайомтеся з цими навчальними ресурсами.

OpenShift

Redhat пропонує OpenShift, контейнерну платформу як послугу (PaaS). Вона допомагає автоматизувати додатки на безпечних та масштабованих ресурсах у гібридних хмарних середовищах. OpenShift надає платформи корпоративного рівня для створення, розгортання та управління контейнерними програмами.

Зображення від Openshift

OpenShift побудовано на базі Redhat Enterprise Linux та двигуна Kubernetes. OpenShift має різні функції для управління кластерами через інтерфейс користувача та командний рядок (CLI). Redhat надає OpenShift у двох додаткових варіантах:

  • Openshift Online – пропонується як програмне забезпечення як послуга (SaaS)
  • OpenShift Dedicated – пропонується як керовані сервіси

Openshift Origin (Origin Community Distribution) – це проект спільноти з відкритим кодом, який використовується в OpenShift Container Platform, Openshift Online і OpenShift Dedicated.

Nomad

Nomad – це простий, гнучкий та легкий у використанні оркестратор робочих навантажень для масштабного розгортання та керування контейнерними і неконтейнерними програмами в локальних та хмарних середовищах. Nomad працює як єдиний виконуваний файл з невеликим об’ємом ресурсів (35 МБ) і підтримується на macOS, Windows та Linux.

Розробники використовують декларативний підхід інфраструктури як код (IaC) для розгортання своїх програм і визначають спосіб розгортання. Nomad автоматично відновлює програми після збоїв.

Зображення Nomad

Nomad оркеструє будь-які програми (не тільки контейнери). Він забезпечує першокласну підтримку Docker, Windows, Java, віртуальних машин тощо.

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

  • Простий і надійний
  • Модернізуйте застарілі програми без переписування
  • Легка федерація в масштабі
  • Перевірена масштабованість
  • Мультихмарне середовище з легкістю
  • Власна інтеграція з Terraform, Consul і Vault

Docker Swarm

Docker Swarm використовує декларативну модель. Ви можете визначити бажаний стан служби, і Docker підтримуватиме цей стан. Docker Enterprise Edition інтегрував Kubernetes зі Swarm. Тепер Docker надає гнучкість у виборі механізму оркестрування. Інтерфейс командного рядка (CLI) Docker Engine використовується для створення ряду Docker-механізмів, де можна розгортати служби додатків.

Зображення Docker

Команди Docker використовуються для взаємодії з кластером. Машини, що приєднуються до кластера, відомі як вузли, а Swarm manager керує діяльністю кластера.

Docker Swarm складається з двох основних компонентів:

  • Менеджер – керуючі вузли призначають завдання робочим вузлам у групі. Лідер обирається на основі консенсусного алгоритму Рафта. Менеджер керує усіма рішеннями щодо управління роєм та оркестрування завдань для рою.
  • Робочий вузол – робочий вузол отримує завдання від вузла менеджера та виконує їх.

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

  • Управління кластером інтегроване з Docker Engine
  • Децентралізований дизайн
  • Декларативна модель обслуговування
  • Масштабування
  • Бажане узгодження станів
  • Мережа на кількох хостах
  • Виявлення сервісів
  • Балансування навантаження
  • Безпечний за замовчуванням
  • Постійні оновлення

Docker Compose

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

Ви можете використовувати файл YAML (docker-файл) для налаштування сервісів програми. Потім, за допомогою команди `docker-compose up`, ви створюєте та запускаєте всі сервіси зі своєї конфігурації.

Файл `docker-compose.yml` може виглядати так:

version: '3'
volumes:
  app_data:
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
      - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data

  kibana:
    depends_on:
      - elasticsearch
    image: docker.elastic.co/kibana/kibana:6.8.0
    ports:
      - 5601:5601
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
  app:
    depends_on:
      - elasticsearch
    image: asadali08527/app:latest
    ports:
      - 8080:8080
    volumes:
      - app_data:/var/lib/app/

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

Docker Engine може бути автономним екземпляром, наданим Docker Machine, або цілим кластером Docker Swarm.

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

  • Кілька ізольованих середовищ на одному хості
  • Зберігання даних томів під час створення контейнерів
  • Відтворюйте тільки ті контейнери, які були змінені
  • Змінні та переміщення композиції між середовищами

MiniKube

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

MiniKube використовує останню стабільну версію Kubernetes і підтримує наступні функції:

  • Балансування навантаження
  • Мультикластерний
  • Постійні томи
  • NodePorts
  • ConfigMaps і секрети
  • Середовища виконання контейнерів: Docker, CRI-O та containerd
  • Увімкнення CNI (інтерфейс мережі контейнерів)

Marathon

Marathon призначений для Apache Mesos, який має можливість оркеструвати програми, а також фреймворки.

Apache Mesos – це менеджер кластерів з відкритим кодом. Mesos – це проект Apache, який має можливість запускати як контейнерні, так і неконтейнерні робочі навантаження. Основними компонентами в кластері Mesos є Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks – Фреймворки координують роботу з головним для планування завдань на агентських вузлах. Користувачі взаємодіють із фреймворком Marathon для планування завдань.

Планувальник Marathon використовує ZooKeeper, щоб знайти поточного майстра для надсилання завдань. Планувальник Marathon і майстер Mesos мають вторинний майстер, що забезпечує високу доступність. Клієнти взаємодіють з Marathon за допомогою REST API.

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

  • Висока доступність
  • Програми з підтримкою стану
  • Зручний та потужний інтерфейс користувача
  • Обмеження
  • Виявлення служб і балансування навантаження
  • Перевірки стану здоров’я
  • Підписка на події
  • Метрики
  • REST API

Cloudify

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

Cloudify можна легко інтегрувати з Docker та менеджерами контейнерів на основі Docker, включаючи:

  • Docker
  • Docker Swarm
  • Docker Compose
  • Kubernetes
  • Apache Mesos

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

Rancher

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

Rancher 2.x дозволяє керувати кластерами Kubernetes, які працюють на постачальниках, вказаних клієнтом.

Початок роботи з Rancher складається з двох кроків:

Підготовка хоста Linux

Підготуйте хост Linux із 64-розрядною версією Ubuntu 16.04 або 18.04 (або іншим підтримуваним дистрибутивом Linux) та принаймні 4 ГБ пам’яті. Встановіть підтримувану версію Docker на хості.

Запуск сервера

Щоб встановити та запустити Rancher, виконайте наступну команду Docker на своєму хості:

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

Інтерфейс користувача Rancher дозволяє керувати тисячами кластерів і вузлів Kubernetes.

Containership

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

Containership створено за допомогою хмарних інструментів, таких як Terraform для ініціалізації, Prometheus для моніторингу та Calico для мереж та управління політикою. Він побудований на ванільному Kubernetes. Платформа Containership пропонує інтуїтивно зрозумілу інформаційну панель, а також потужний REST API для комплексної автоматизації.

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

  • Багатохмарна інформаційна панель
  • Журнали аудиту
  • Підтримка екземплярів GPU
  • Безперебійне оновлення
  • Заплановані оновлення майстра
  • Інтегровані метрики
  • Логування в реальному часі
  • Розгортання без простоїв
  • Підтримка постійного сховища
  • Підтримка приватного реєстру
  • Автомасштабування робочого навантаження
  • Управління ключами SSH

AZK

AZK – це інструмент оркестрування з відкритим кодом для середовищ розробки через файл маніфесту (Azkfile.js), який допомагає розробникам встановлювати, налаштовувати та запускати інструменти, які зазвичай використовуються для розробки веб-додатків з різними технологіями з відкритим кодом.

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

Файли `Azkfile.js` можна повторно використовувати для додавання нових компонентів або створення нових з нуля. Їх можна спільно використовувати, що забезпечує повний паритет між середовищами розробки на машинах різних програмістів і зменшує ймовірність помилок під час розгортання.

GKE

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

Зображення GCP

Розширені функції управління Google Cloud також доступні з кластерами GKE, як-от балансування навантаження Google Cloud, пули вузлів, автоматичне масштабування вузлів, автоматичне оновлення, автоматичне відновлення вузлів, журналювання та моніторинг за допомогою пакету операцій Google Cloud.

Google Cloud надає інструменти CI/CD, які допомагають створювати та обслуговувати контейнери програм. Ви можете використовувати Cloud Build для створення образів контейнерів (наприклад, Docker) із різноманітних сховищ вихідного коду та Container Registry для зберігання ваших образів контейнерів.

GKE – це корпоративне рішення з готовими шаблонами розгортання.

Зацікавлені у вивченні GKE? Подивіться цей початковий курс.

AKS

AKS – це повністю керована служба Kubernetes, яку пропонує Azure, і яка пропонує Kubernetes без серверів, безпеку та керування. AKS керує вашим кластером Kubernetes та дозволяє легко розгортати контейнерні програми. AKS автоматично налаштовує усі основні та вузли Kubernetes. Вам потрібно лише керувати та підтримувати вузли агента.

Зображення від Azure

AKS є безкоштовним; ви платите лише за агентські вузли у своєму кластері, а не за головні. Ви можете створити кластер AKS на порталі Azure або програмно. Azure також підтримує додаткові функції, такі як розширена мережа, інтеграція Azure Active Directory та моніторинг за допомогою Azure Monitor.

AKS також підтримує контейнери Windows Server. Продуктивність його кластера та розгорнутої програми можна відстежувати за допомогою Azure Monitor. Журнали зберігаються в робочій області Azure Log Analytics.

AKS сертифіковано як сумісний з Kubernetes.

AWS EKS

AWS EKS – це повністю керована служба Kubernetes. AWS дозволяє запускати кластер EKS за допомогою AWS Fargate, що є безсерверним обчисленням для контейнерів. Fargate усуває потребу в наданні та управлінні серверами, дозволяючи платити за ресурс за програму.

AWS дозволяє використовувати додаткові функції з EKS, такі як Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups та Access Management (IAM), додатки для моніторингу, масштабування та балансування навантаження. EKS інтегрується з сіткою додатків AWS та забезпечує нативний досвід Kubernetes. EKS використовує останню версію Kubernetes і сертифіковано відповідає Kubernetes.

Висновок

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

Далі ознайомтеся з програмним забезпеченням для управління Kubernetes.