Сравнение: Docker swarm, Kubernetes, Rancher и D2C +9


С того момента как мы начали вести корп. блог на Хабре, на демо и при обращениях в поддержку нас стали чаще сравнивать с оркестраторами. И если раньше были вопросы о том, в чем отличия D2C от Heroku, Clou66 и тому подобных сервисов, то теперь, видимо, нас стали рассматривать как альтернативное решение для оркестрации.


Чтож, попробую поправить ситуацию и провести сравнение с несколькими популярными решениями, о которых слышно чаще: Docker swarm, Kubernetes и Rancher. А чтобы зайти не «с конца», кратко дам по маленькому обзору на каждую из них.


Docker swarm


Docker swarm mode — абстракция Docker, стирающая границы между разными машинами. Тот же Docker engine, но работающий в кластере. Несколько контейнеров-воркеров объединяются в сервис, обслуживает который Swarm менеджер. Swarm менеджер размещает контейнеры с приложением на свободный хостах и принимает команды на управление кластером. Также Swarm работает как балансировщик нагрузки между несколькими «воркерами», равномерно распределяя запросы, приходящие с любой из сторон кластера.


image


Manager: управляющая нода, отправляющая задачи.
Worker: нода, выполняющая задачи.
Docker CLI: пользователь взаимодействует со Swarm через Docker CLI, оперируя помимо привычных, еще и дополнительными командами типа docker node и docker service.
Docker Hub: репозиторий готовых образов.


Плюсы: относительная простота работы и скорость освоения. Если уже работал с Docker-контейнерами, научиться пользоваться режимом Swarm не составит особого труда.


Минусы: узкий функционал, не так крут с точки зрения отказоустойчивости как kubernetes, плюс ко всему, если опыта работы с Docker контейнерами нет, придется все равно въезжать в матчасть.


Kubernetes


Kubernetes, как сказано в официальной документации, это система для автоматизации процесса развертывания, масштабирования и управления контейнеризированными приложениями с открытым кодом. Я бы дополнил это утверждение, сказав, что Kubernetes это скорее фреймворк, который помогает построить отказоустойчивую и масштабируемую платформу управления контейнерами, нежели готовое к употребление easy-to-use решение. Поэтому порог входа в эту технологию выше.


image


Pods : контейнеры в Kubernetes объеденены в группы, называемые Pods (Поды). Обычно Pod включает в себя от 1 до 5 контейнеров.


Flat Networking Space: сетевая модель в Kubernetes плоская и позволяет Подам взаимодействовать друг с другом. Контейнеры в каждому Поде используют общий IP и взаимодействуют друг с другом, используя порты на локалхосте.


Services: абстракция над pods, определяющая политику доступа к ним. Service автоматически распределяет нагрузку между Подами.


Replication Controllers: контролируют количество «реплик» Pods внутри сервера и гарантируют запуск «реплик» для поддержания работоспособности ноды, чем улучшают отказоустойчивость.


Плюсы: Kubernetes — это бесплатный и мощный инструмент. Умеет управлять контейнерами и сочетает в себе бесконечную масштабируемость и автоматизацию.


Минусы: изучать его сильно не просто. Хорошая штука в руках грамотного OPS, но разработчику без админа с ним придется туго.


Rancher


Rancher — своеобразный шажок к удобству и простоте освоения благодаря добротному веб-интерфейсу. Ранчер облегчит управление сложными средами. Он может как управлять контейнерами сам, так и управлять другими планировщиками. Например, если потребуются функции, которых нет в Rancher, можно поверх него запустить те же Kubernetes и Docker Swarm. Они там ставятся буквально в пару кликов мыши, что сильно приятнее, чем ставить их вручную.


image


Также, у Ранчера есть обширный каталог приложений, которые можно быстро поставить поверх собственной инфраструктуры. Однако на 100% готовым к употреблению продуктом Rancher не назовешь. Собственные приложения с его помощью можно разворачивать только из Docker образов. Исходников будет недостаточно, потребуется еще и окружение подготовить. Будут некоторые затруднения с масштабированием БД. В пару кликов мыши изменить конфигурацию на master-slave или multimaster не получится.


Плюсы: Несомненным плюсом будет наличие каталога готовых к запуску сервисов и приложений. Также у Ранчера понятный веб-интерфейс и есть возможность быстро запускать другие решения для оркестрации, такие как Kubernetes и Docker Swarm, что делает его более гибким.


Минусы: Все же, Ранчер — не самая простая платформа и в нем придется разбираться. Чтобы развернуть с его помощью собственное приложение, как минимум надо уметь создавать Docker-образы, отчего определенный порог входа в технологию имеется.


D2C


В D2C сделан упор на удобстве пользования и низком пороге входа в мир масштабируемых приложений для разработчика. Весь фокус сосредоточен на исходниках приложения и сервисах, необходимых для его запуска.


image


Да, под капотом мы тоже используем Docker контейнеры, и далеко не тривиальную оркестровку в виде Ansible в качестве «управляющего», однако от пользователя эта кухня спрятана и подана в виде достаточно понятного интерфейса, выраженного в простых действиях:


image


Плюсы: В D2C разработчику не надо вникать в подкапотную история при разработке масштабируемых приложения, можно даже без OPS решать достаточно серьезные проблемы. Так же D2C интегрирован с Letsencrypt, а тестовым хостам можно присваиваются домены вида *.d2c.io.


Чтобы начать пользоваться D2C для решения задач по созданию контейнеризированных кластерных систем, разработчику достаточно понимать основы конфигурирования сервисов и предоставить системе исходники приложения для развертывания хоть в облаке, хоть на собственных серверах.


Минусы: Бесплатная только урезанная версия на 1 хост, полноценная версия платная. Для бывалых админов сервис может оказаться не достаточно гибким, так как основной фокус на простоту для разработчика.




На этом все! Приходите тестировать D2C, чтобы увидеть как все устроено и записывайтесь на демо, расскажем все лично. Если остались вопросы, задавайте в комментариях – постараюсь ответить.




К сожалению, не доступен сервер mySQL