Давайте поговоримо про деякі популярні інструменти оркестровки контейнерів, доступні на ринку.
Що таке оркестровка контейнера?
Контейнерні платформи, такі як 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
Його створено на базі Redhat Enterprise Linux і двигуна Kubernetes. Openshift має різні функції для керування кластерами через UI та CLI. Redhat надає Openshift ще у двох варіантах,
- Openshift Online – пропонується як програмне забезпечення як послуга (SaaS)
- OpenShift Dedicated – пропонується як керовані служби
Openshift Origin (Origin Community Distribution) — це проект спільноти з відкритим вихідним кодом, який використовується в OpenShift Container Platform, Openshift Online і OpenShift Dedicated.
Кочівник
Кочівник це простий, гнучкий і легкий у використанні оркестровник робочого навантаження для масштабного розгортання контейнерів і неконтейнерних програм і керування ними в локальних і хмарних середовищах. Nomad працює як єдиний двійковий файл із невеликим обсягом ресурсів (35 МБ) і підтримується в macOS, Windows і Linux.
Розробники використовують декларативну інфраструктуру як код (IaC) для розгортання своїх програм і визначають спосіб розгортання програми. Nomad автоматично відновлює програми після збоїв.
Зображення Nomad
Nomad Orchestrate будь-які програми (не лише контейнери). Він забезпечує першокласну підтримку Docker, Windows, Java, віртуальних машин тощо.
особливості
- Простий і надійний
- Модернізуйте застарілі програми без переписування
- Легка федерація в масштабі
- Перевірена масштабованість
- Мультихмарне з легкістю
- Рідна інтеграція з Terraform, Consul і Vault
Зграя докерів
Зграя докерів використовує декларативну модель. Ви можете визначити бажаний стан служби, і Docker підтримуватиме цей стан. Docker Enterprise Edition інтегрував Kubernetes із Swarm. Тепер Docker надає гнучкість у виборі механізму оркестровки. CLI механізму докерів використовується для створення ряду механізмів докерів, де можна розгортати служби додатків.
Зображення Docker
Команди Docker використовуються для взаємодії з кластером. Машини, які приєднуються до кластера, відомі як вузли, а Swarm manager керує діяльністю кластера.
Docker Swarm складається з двох основних компонентів:
- Менеджер – керуючі вузли призначають завдання робочим вузлам у групі. Лідер обирається на основі консенсусного алгоритму Рафта. Керівник керує всіма рішеннями щодо управління роєм і оркестровки завдань для рою.
- Worker Node – робочий вузол отримує завдання від вузла менеджера та виконує їх.
особливості
- Керування кластером інтегроване з Docker Engine
- Децентралізований дизайн
- Декларативна модель обслуговування
- Масштабування
- Бажане державне примирення
- Багатохостова мережа
- Відкриття служби
- Балансування навантаження
- Безпечний за умовчанням
- Поточні оновлення
Docker Compose
Docker Compose призначений для визначення та запуску багатоконтейнерних програм, які працюють разом. Docker-compose описує групи взаємопов’язаних служб, які спільно використовують програмні залежності, а також оркестровані та масштабовані разом.
Ви можете використовувати файл YAML (докер-файл) для налаштування служб програми. Потім за допомогою команди 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 може бути автономним екземпляром, наданим Docker Machine, або цілим кластером Docker Swarm.
особливості
- Кілька ізольованих середовищ на одному хості
- Зберігати дані обсягу під час створення контейнерів
- Відтворюйте лише контейнери, які були змінені
- Змінні та переміщення композиції між середовищами
MiniKube
Мінікубе дозволяє користувачам запускати Kubernetes локально. За допомогою Minikube ви можете тестувати програми локально в одновузловому кластері Kubernetes на вашому персональному комп’ютері. Minikube має вбудовану підтримку інформаційної панелі Kubernetes.
Minikube використовує останню стабільну версію Kubernetes і підтримує такі функції.
- Балансування навантаження
- Мультикластерний
- Постійні томи
- NodePorts
- ConfigMaps і секрети
- Середа виконання контейнерів: Docker, CRI-O та контейнери
- Увімкнення CNI (інтерфейс мережі контейнерів)
марафон
марафон призначений для Apache Mesos, який має можливість оркеструвати програми, а також фреймворки.
Apache Mesos — це менеджер кластерів з відкритим кодом. Mesos — це проект Apache, який має можливість запускати як контейнерні, так і неконтейнерні робочі навантаження. Основними компонентами в кластері Mesos є Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks – Frameworks координують роботу з головним для планування завдань на агентських вузлах. Користувачі взаємодіють із структурою Marathon, щоб планувати завдання.
Планувальник Marathon використовує ZooKeeper, щоб знайти поточного майстра для надсилання завдань. Планувальник Marathon і майстер Mesos мають вторинний майстер, що забезпечує високу доступність. Клієнти взаємодіють із Marathon за допомогою REST API.
особливості
- Висока доступність
- Програми з підтримкою стану
- Гарний і потужний інтерфейс користувача
- обмеження
- Виявлення служб і балансування навантаження
- Перевірки стану здоров’я
- Підписка на подію
- Метрики
- REST API
Хмарити
Хмарити це хмарний інструмент оркестрації з відкритим кодом для автоматизації розгортання та керування життєвим циклом контейнерів і мікросервісів. Він надає такі функції, як кластери на вимогу, автоматичне відновлення та масштабування на рівні інфраструктури. Cloudify може керувати контейнерною інфраструктурою та оркеструвати служби, які працюють на контейнерних платформах.
Його можна легко інтегрувати з Docker і менеджерами контейнерів на основі Docker, включаючи наступні.
- Докер
- Зграя докерів
- Docker Compose
- Kubernetes
- Apache Mesos
Cloudify може допомогти створювати, відновлювати, масштабувати та руйнувати контейнерні кластери. Оркестровка контейнерів є ключовою для забезпечення масштабованої та високодоступної інфраструктури, на якій можуть працювати менеджери контейнерів. Cloudify надає можливість оркеструвати різнорідні служби на різних платформах. Ви можете розгортати програми за допомогою CLI та Cloudify Manager.
власник ранчо
власник ранчо це платформа з відкритим вихідним кодом, яка використовує оркестровку контейнерів, відому як бидло. Це дозволяє вам використовувати такі сервіси оркестровки, як 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.
Контейнерні перевезення
Контейнерність призначена для розгортання багатохмарної інфраструктури Kubernetes і керування нею. Це гнучко для роботи в загальнодоступній, приватній хмарі та локальних середовищах за допомогою єдиного інструменту. Він дає змогу надавати, керувати та контролювати ваші кластери Kubernetes у всіх основних хмарних постачальниках.
Контейнерство створено за допомогою хмарних інструментів, таких як 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 на порталі 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 Fragrate, який є безсерверним обчисленням для контейнерів. Fragrance усуває потребу в наданні та управлінні серверами, дозволяючи платити за ресурс за програму.
AWS дозволяє використовувати додаткові функції з EKS, такі як Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups і Access Management (IAM), додатки для моніторингу, масштабування та балансування навантаження. EKS інтегрується з сіткою додатка AWS і забезпечує нативний досвід Kubernetes. EKS використовує останню версію Kubernetes і сертифіковано відповідає Kubernetes.
Висновок
Зрештою, я сподіваюся, що наведений вище список дав ясне розуміння різних інструментів оркестровки контейнерів, і тепер, залежно від випадку використання, буде легше вибрати найкращий.
Далі дізнайтеся про програмне забезпечення для керування Kubernetes.