Table of Contents
ЧТО ТАКОЕ ОРКЕСТРАЦИЯ КОНТЕЙНЕРОВ?
Контейнерные платформы, такие как Docker, в настоящее время очень популярны для упаковки приложений, основанных на микросервисной архитектуре. Контейнеры можно сделать высокомасштабируемыми, которые можно создавать по требованию. Это удобно, когда речь идет о нескольких контейнерах, но представьте, что у вас их сотни.
Управление жизненным циклом контейнера и управление самим контейнером становится чрезвычайно трудным, когда число постоянно увеличивается по мере увеличения спроса.
Оркестрация контейнеров решает проблему за счет автоматизации планирования, развертывания, масштабируемости, балансировки нагрузки, доступности и организации сетей контейнеров. Оркестрация контейнеров – это автоматизация и управление жизненным циклом контейнеров и услуг.
Это процесс управления и организации архитектуры нескольких контейнеров и микросервисов в масштабе.
К счастью, на рынке имеется много инструментов для оркестрации контейнеров. Давайте рассмотрим их!
1. KUBERNETES
Kubernetes – платформа с открытым исходным кодом, изначально разработанная Google и в настоящее время поддерживаемая Cloud Native Computing Foundation. Kubernetes поддерживает как декларативную конфигурацию, так и автоматизацию. Это может помочь автоматизировать развертывание, масштабирование и управление контейнерной рабочей нагрузкой и услугами.
API Kubernetes помогает установить связь между пользователями, компонентами кластера и внешними компонентами сторонних производителей. Уровень управления Kubernetes и сами узлы выполняются на группе узлов, которые вместе образуют кластер. Рабочая нагрузка приложения состоит из одного или нескольких модулей, которые выполняются на узле (узлах) Worker. Уровень управления контролирует группы контейнеров (Pod-ы) и рабочие узлы.
Такие компании, как Babylon, Booking.com, AppDirect широко используют Kubernetes.
ОСОБЕННОСТИ
- Обнаружение служб и балансировка нагрузки
- Оркестрация системы хранения данных
- Автоматизированные развертывания и откаты
- Горизонтальное масштабирование
- Управление секретом и конфигурацией
- Самовосстановление
- Пакетное выполнение
- Двойной стек IPv4/IPv6
- Автоматическая упаковка ячеек
2. OPENSHIFT
Redhat предлагает OpenShift Container Platform как сервис (PaaS). Он помогает автоматизировать приложения на безопасных и масштабируемых ресурсах в гибридных облачных средах. Он предоставляет платформы корпоративного уровня для создания, развертывания и управления контейнерными приложениями.
Сервис построен на движке Redhat Enterprise Linux и Kubernetes. Openshift имеет различные функциональные возможности для управления кластерами через интерфейс пользователя и интерфейс командной строки. Redhat предоставляет Openshift еще в двух вариантах,
- Openshift Online – предлагается как программное обеспечение в качестве услуги (SaaS)
- Выделенный OpenShift – предлагается как управляемые услуги
Openshift Origin (Origin Community Distribution) – родительский проект сообщества с открытым исходным кодом, который используется в OpenShift Container Platform, Openshift Online и OpenShift Distributed.
3. NOMAD
Nomad – это удобный, гибкий и простой в использовании оркестратор рабочей нагрузки для развертывания контейнеров и неконтейнерных приложений и управления ими не зависимо от того расположены они в облачной или в локальной среде. Nomad работает как единый двоичный файл с небольшим ресурсом (35MB) и поддерживается в macOS, Windows, Linux.
Разработчики используют декларативную инфраструктуру как код (IaC) для развертывания своих приложений и определяют способ развертывания приложения. Nomad автоматически восстанавливает приложения после сбоев.
Nomad подходит для оркестрации любого типа приложений (не только контейнеры). Она обеспечивает первоклассную поддержку Docker, Windows, Java, виртуальных машин и многого другого.
ОСОБЕННОСТИ
- Простота и надежность
- Модернизация устаревших приложений без перезаписи
- Проверенная масштабируемость
- Поддержка работы с несколькими облаками
- Встроенная интеграция с Terraform, Consul и Vault
4. DOCKER SWARM
Docker Swarm использует декларативную модель. Можно определить требуемое состояние службы, и Docker будет поддерживать это состояние. Docker Enterprise Edition интегрировал Kubernetes с Swarm. Docker теперь обеспечивает гибкость в выборе движка оркестровки. Интерфейс командной строки Docker Engine используется для создания роя Docker движков, в которых могут быть развернуты службы приложений.
Для взаимодействия с кластером используются команды Docker. Машины, которые присоединяются к кластеру, называются узлами, а управление действиями кластера осуществляет менеджер Swarm.
Docker Swarm состоит из двух основных компонентов:
- Менеджер (Manager) узлы-менеджеры назначают задачи рабочим узлам роя. Лидер избирается на основе консенсусного алгоритма Рафта. Руководитель обрабатывает все решения по управлению роем и оркестровке задач для роя.
- Рабочий узел – рабочий узел получает задачи от узла менеджера и выполняет их.
ОСОБЕННОСТИ
- Управление кластерами, интегрированное с Docker Engine
- Децентрализованное проектирование
- Декларативная модель службы
- Масштабирование
- Выверка требуемого состояния
- Многосерверная сеть
- Обнаружение услуг
- Балансировка нагрузки
- Безопасность по умолчанию
- Скользящие обновления
5. DOCKER COMPOSE
Docker Compose предназначен для определения и запуска многопоточных приложений, работающих вместе. Docker-compose описывает группы взаимосвязанных служб, которые совместно используют программные зависимости, и организованы и масштабированы вместе.
Для настройки служб приложения можно использовать файл YAML (dockerfile). Затем с помощью команды 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 можно включить код приложения в несколько независимо работающих служб, которые взаимодействуют с помощью внутренней сети. Инструмент предоставляет интерфейс командной строки для управления всем жизненным циклом приложений. Docker Compose традиционно был сосредоточен на разработке и тестировании рабочих процессов, но сейчас они фокусируются на более ориентированных на производство функциях.
Docker Engine может быть автономным экземпляром, подготовленным с помощью Docker Machine, или целым кластером Docker Swarm.
ОСОБЕННОСТИ
- Несколько изолированных сред на одном хосте
- Сохранять данные тома при создании контейнеров
- Воссоздавать только измененные контейнеры
- Переменные и перемещение композиции между средами
6. MINIKUBE
Minikube позволяет пользователям запускать Kubernetes локально. С помощью Minikube можно локально тестировать приложения внутри одноузлового кластера Kubernetes на персональном компьютере. В Minikube интегрирована поддержка Kubernetes Dashboard.
Minikube работает под управлением последнего стабильного выпуска Kubernetes и поддерживает следующие функции:
- Балансировка нагрузки
- Мультигруппа
- Постоянные тома
- NodePorts
- Конфигурационные карты и секреты
- Container Runtime: Docker, CRI-O
- Включение CNI (интерфейс контейнерной сети)
7. MARATHON
Marathon предназначен для Apache Mesos, который может организовывать как приложения, так и фреймворки.
Apache Mesos – менеджер кластеров с открытым исходным кодом. Mesos – проект компании Apache, способный выполнять как контейнерные, так и неконтейнерные рабочие нагрузки. Основными компонентами в кластере Mesos являются узлы-агенты Mesos, Mesos мастер, ZooKeeper, фреймворки. Фреймворки вместе с мастером создают расписание заданий для узлов-агентов. Разработчики используют платформу Marathon в основном для планирования заданий.
Планировщик Marathon использует ZooKeeper для поиска текущего хозяина для отправки заданий. Планировщик Marathon и мастер имеют второго мастера, чтобы обеспечить высокую доступность. Клиенты взаимодействуют с Marathon с помощью REST API.
ОСОБЕННОСТИ
- Высокая доступность
- Приложения с отслеживанием состояния
- Красивый и мощный пользовательский интерфейс
- Ограничения
- Обнаружение служб и балансировка нагрузки
- Проверки работоспособности
- Подписка на событие
- Метрики
- API REST
8. CLOUDIFY
Cloudify – облачное средство оркестровки с открытым исходным кодом для автоматизации развертывания и управления жизненным циклом контейнеров и микросервисов. Она предоставляет такие функции, как кластеры по требованию, автоматическое восстановление и масштабирование на уровне инфраструктуры. Cloudify может управлять контейнерной инфраструктурой и управлять службами, работающими на контейнерных платформах.
Его можно легко интегрировать с менеджерами контейнеров на базе Docker и самим Docker, включая следующие:
- Docker
- Docker Swarm
- Docker Composes
- Kubernetes
- Apache Mesos
Cloudify помогает создавать, восстанавливать, масштабировать и удалять кластеры контейнеров. Оркестровка контейнеров является ключевым фактором в обеспечении масштабируемой и высокодоступной инфраструктуры, на которой могут работать менеджеры контейнеров. Cloudify обеспечивает возможность управления разнородными службами между платформами. Приложения можно развернуть с помощью CLI и Cloudify Manager.
9. RANCHER
Rancher – платформа с открытым исходным кодом, использующая оркестровку контейнеров, известную как скот. Он позволяет использовать такие службы оркестрации, как Kubernetes, Swarm, Mesos. Rancher предоставляет программное обеспечение, необходимое для управления контейнерами, чтобы организациям не требовалось создавать платформы контейнерных услуг с нуля, используя отдельный набор технологий с открытым исходным кодом.
Rancher 2.x позволяет управлять кластерами Kubernetes, работающими на указанных клиентом поставщиках.
Начало работы с Rancher – это двухшаговый процесс.
ПОДГОТОВКА ХОСТА LINUX
Подготовьте узел Linux с 64-разрядным Ubuntu 16.04 или 18.04 (или другим поддерживаемым дистрибутивом Linux, и не менее 4GB памяти. Установите поддерживаемую версию Docker на узел.
ЗАПУСК СЕРВЕРА
Чтобы установить и запустить Rancher, выполните следующую команду Docker на хосте:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Пользовательский интерфейс Rancher позволяет управлять тысячами кластеров и узлов Kubernetes.
10. CONTAINERSHIP
Containership предназначен для развертывания инфраструктуры Kubernetes с несколькими облаками и управления ею. Он гибок в работе с общедоступными, частными облачными средами и локальными средами с помощью единого инструмента. Он позволяет обслуживать, управлять и контролировать кластеры Kubernetes всех основных облачных провайдеров.
Containership построена с использованием облачных инструментов, таких как Terraform для выделения ресурсов, Prometheus для мониторинга и Calico для управления сетями и политиками. Он построен на чистом Kubernetes. Платформа Containership предлагает интуитивно понятную панель управления, а также мощный REST API для коплексной автоматизации.
ОСОБЕННОСТИ
- Панель управления с поддержкой нескольких облачных платформ
- Журналы аудита
- Поддержка экземпляра графического процессора
- Модернизация без прерывания работы
- Запланированные шаблоны
- Интегрированные метрики
- Ведение журнала в реальном времени
- Развертывание с нулевым временем простоя
- Поддержка постоянных хранилищ
- Поддержка частных реестров
- Автоматическое масштабирование рабочей нагрузки
- Управление ключами SSH
11. AZK
AZK – это инструмент оркестровки с открытым исходным кодом для сред разработки через файл манифеста (Azkfile.js), который помогает разработчикам устанавливать, настраивать и запускать часто используемые инструменты для разработки веб-приложений с различными технологиями с открытым исходным кодом.
AZK использует контейнеры вместо виртуальных машин. Контейнеры подобны виртуальным машинам с более высокой производительностью и более низким потреблением физических ресурсов.
Файлы Azkfile.js можно повторно использовать для добавления новых компонентов или создания новых с нуля. Он может использоваться совместно, что обеспечивает полный паритет между средами разработки на разных машинах программистов и снижает вероятность ошибок во время развертывания.
12. GKE
GKE предоставляет полностью управляемое решение для оркестровки контейнерных приложений на Google Cloud Platform. Кластеры GKE созданы на основе Kubernetes. Вы можете взаимодействовать с кластерами с помощью Kubernetes CLI. Команды Kubernetes можно использовать для развертывания приложений и управления ими, выполнения задач администрирования, установки политик и мониторинга работоспособности развернутых рабочих нагрузок.
Расширенные функции управления Google Cloud также доступны с кластерами GKE, такими как балансировка нагрузки Google Cloud, пулы узлов, автоматическое масштабирование узлов, автоматическое обновление, автоматическое восстановление узлов, ведение журнала и мониторинг с помощью операционного пакета Google Cloud.
Google Cloud предоставляет инструменты CI/CD, помогающие создавать и обслуживать контейнеры приложений. Cloud Build можно использовать для создания образов контейнеров (например, Docker) из различных репозиториев исходного кода, а Container Registry – для хранения образов контейнеров.
GKE – готовое для предприятия решение с предварительно разработанными шаблонами развертывания.
13. AKS
AKS является полностью управляемым сервисом Kubernetes, предлагаемым Azure, который предлагает безсерверные Kubernetes, безопасность и управление. AKS управляет кластером Kubernetes и позволяет легко развертывать контейнерные приложения. AKS автоматически настраивает все главные и подчиненные узлы Kubernetes. Необходимо только управлять узлами агента и выполнять их обслуживание.
AKS бесплатен; вы платите только за узлы агентов в кластере, а не за мастер узеал. Кластер AKS можно создать на портале Azure или программно. Azure также поддерживает дополнительные функции, такие как расширенные сетевые возможности, интеграция Azure с Active Directory и мониторинг с помощью Azure Monitor.
AKS также поддерживает контейнеры Windows Server. Производительность кластера и развернутых приложений можно контролировать с помощью Azure Monitor. Журналы хранятся в рабочей области Azure Log Analytics.
AKS сертифицирован как как совместимый с Kubernetes.
14. AWS EKS
AWS EKS – полностью управляемый сервис Kubernetes. AWS позволяет запускать кластер EKS с помощью AWS Fargate, который является безсерверной мощностью для контейнеров. Fargate устраняет необходимость в выделении ресурсов и управлении серверами, позволяя платить за ресурс за приложение.
AWS позволяет использовать дополнительные функции EKS, такие как Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, группы автоматического масштабирования и управление доступом (IAM), приложения мониторинга, масштабирования и балансировки нагрузки. EKS интегрируется с сеткой AWS App и предлагает собственный опыт Kubernetes. EKS работает под управлением последнего Kubernetes и сертифицирован как совместимый с Kubernetes
ЗАКЛЮЧЕНИЕ
Надеемся, что приведенный выше список дал общее представление о различных инструментах оркестрации контейнеров, и теперь в зависимости от ваших требований, будет легче выбрать подходящий.