Сейчас в сам докер добавили кубернетес в качестве одного из доступных движков. Т.е. уже по умолчанию, «из коробки», можно работать с кубернетесом. Думаю что сам докер в будущем перейдет на Kubernetes — все таки сообщество пользователей и разработчиков гораздо больше, чем для сворма. Так что нас ждет Kubernetes, а все остальное потихоньку помрет.
Сравнение платформ
Контейнерная оркестровка быстро развивается. Как Kubernetes так и Docker Swarm являются главными в этой области. И Kubernetes, и Docker Swarm являются важными инструментами, которые используются для развертывания контейнеров внутри кластера.
Кубернетес
Kubernetes имеет основание большого опыта в работе с Google и с большими производственными нагрузками. Kubernetes — это система с открытым исходным кодом, разработанная для автоматизации развертывания, а также масштабирования и управления контейнерных приложений.
Docker Swarm
Docker Swarm является оркестровкой собственного контейнера Docker. Он использует стандартный API-интерфейс Docker и работу в сети. Это дает возможность без проблем перейти в среду, в которой Вы уже работаете с контейнерами Docker.
- Простой, но в тоже время мощный
- Имеет гибкую архитектуру
- Он безопасен и автоматически генерирует сертификаты
- Имеет обратную совместимость с существующими компонентами
Что лучше выбрать?
Оба инструмента оркестровки предлагают по сути почти одинаковые функции, между ними все же имеются отличия.
В Kubernetes приложение может быть развернуто с использованием комбинации модулей, микросервисов, развертываний.В Kubernetes установка выполняется вручную и требует серьезного планирования для того, чтобы Kubernetes работал. Инструкции по установке отличаются от ОС. Конфигурация кластера, такая как IP-адреса узла. Какой узел играет какую роль требуется знать заранее в Kubernetes.
Для работы необходимо знать интерфейс командной строки для запуска Kubernetes поверх Docker. Вы должны знать Docker CLI для навигации по структуре, а затем дополнительную общую языковую инфраструктуру Kubernetes для запуска этих программ.
В Docker Swarm Файлы YAML могут быть использованы для указания нескольких контейнеров. Кроме того, Docker Compose может развернуть приложение.
Docker Swarm прост в установке по сравнению с Kubernetes. С Docker требуется только один набор инструментов, чтобы учиться строить на основе среды и конфигурации. Docker Swarm также гибкий, позволяет любому новому узлу присоединяться к существующему кластеру в качестве менеджера или рабочего. Поскольку Docker Swarm-это инструмент Docker, то для навигации по структуре используется один и тот же общий язык. Это обеспечивает скорость и дает Docker преимущество в его использовании.
Kubernetes поддерживает несколько версий ведения журнала и мониторинга, когда службы развернуты в кластере:
- Журналы Elasticsearch / Kibana (ELK) внутри контейнера
- Гипстер / Графана / Influx для мониторинга в контейнере
- Облачная интеграция Sysdig
Docker Swarm поддерживается только для мониторинга сторонними приложениями. Рекомендуется использовать Docker с Reimann для мониторинга, но так как Docker Swarm имеет открытый API, он облегчает соединение с большим количеством приложений.По сравнению с Kubernetes он может развертывать контейнеры значительно быстрее.
Kubernetes можно назвать универсальной средой для распределенных систем. Это сложная система, так как она предлагает унифицированный набор API и надежные гарантии состояния кластера, что замедляет развертывание и масштабирование контейнера.В Kubernetes все модули распределены между узлами. Службы балансировки нагрузки обнаруживают нездоровые модули и удаляют их, что поддерживает высокую доступность.
Docker Swarm также обеспечивает высокую доступность, поскольку сервисы могут реплицироваться в узлах Swarm. В Docker Swarm узлы диспетчера Swarm отвечают за весь кластер и управляют ресурсами рабочих узлов.
Сеть Kubernetes позволяет всем модулям связываться друг с другом, модель требует двух CIDR.
В Docker Swarm узел, присоединяющийся к кластеру, создает оверлейную сеть служб, которая охватывает все хосты в Swarm, и сеть мостов Docker только для хостов для контейнеров. В Docker Swarm пользователи имеют возможность шифровать трафик контейнерных данных при создании оверлейной сети самостоятельно.
Преимущества Kubernetes
- Kubernetes поддерживается Фондом облачных вычислений (CNCF).
- Kubernetes имеет внушительно огромное сообщество среди инструментов оркестровки контейнеров.
- Kubernetes — это модульный инструмент с открытым исходным кодом, который работает с любой ОС.
- Kubernetes обеспечивает легкую организацию обслуживания
Недостатки Кубернетеса
- Сложная установка.
- В Kubernetes требуется отдельный набор инструментов для управления, включая kubectl CLI.
- Он несовместим с существующими инструментальными средствами Docker CLI и Compose.
Преимущества Docker Swarm
- Docker Swarm прост в установке с быстрой настройкой
- Docker Swarm более легок для обучения.
- Docker Swarm плавно интегрируется с Docker Compose и Docker CLI. Это потому, что это родные инструменты Docker. Большинство команд Docker CLI будут работать с Swarm.
Недостатки Docker Swarm
- Docker Swarm предоставляет ограниченную функциональность.
- Имеет ограниченную отказоустойчивость.
- Docker Swarm имеет меньшее сообщество и проект по сравнению с сообществом Kubernetes
Сравнивать сложно их между собой, поскольку Docker Swarm — это простое и легкое решение для работы, а Kubernetes имеет ориентацию на тех, кому требуется полная поддержка с высокой сложностью.
Docker Swarm те, кто любит простоту и быструю разработку. Принимая это во внимание. Kubernetes подходит для работы со сложными приложениями.