Docker vs. Kubernetes: Давайте жить дружно
О технологиях

Docker vs. Kubernetes: Давайте жить дружно

9017
11 минут

В мире современного ПО мало что может сравниться по крутости с Docker и Kubernetes.

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

Kubernetes, в свою очередь, называют одной из самых скоростных платформ за всю историю ПО с открытым исходным кодом, и в действительности так оно и есть. Изначально компания Google разрабатывала инструмент для внутреннего пользования под названием Borg, который затем разросся до платформы контейнерной оркестрации с открытым исходным кодом, известной как Kubernetes.

Хотя первопроходцы уже получили хороший гандикап, многие ИТ-специалисты и организации только начинают осваивать контейнеры, технологии контейнерной оркестрации и сопутствующие тренды. В этой статье мы объясним, что такое и Docker, и Kubernetes, а также с чем их едят, разберем главные тренды и сценарии использования, расскажем об основных принципах их работы и ответим на самые животрепещущие вопросы, например: «Обязательно ли я должен выбрать одно или другое?» (спойлер: нет, не обязательно, и мы сейчас объясним, почему).

Погнали!

Docker и контейнеры

Согласно собственному определению Docker, образ контейнера — это «легкий, автономный, исполняемый программный пакет, в котором есть всё необходимое для его выполнения: код, среда выполнения, служебные программы, системные библиотеки и настройки».

docker.jpg

Иначе говоря, в контейнер упаковано всё, что нужно приложению — не просто голый код, а все зависимые объекты, библиотеки и данные конфигурации, и, кроме того, контейнер отделяет это всё от любой физической или виртуальной среды, в которой приложение будет работать. При идеальном раскладе это значит, что ваш код нормально работает во всех средах (от разработки и тестирования до продуктивной среды) как на локальных машинах, так и в облаке, и даже отладка не нужна. Кто-то называет это виртуализацией на уровне операционной системы, но термин «контейнер» привычнее и пользуется большей популярностью.

Главная причина, по которой название Docker стало нарицательным среди платформ контейнеризации, заключается в том, что Docker первым научился упаковывать расширенные функции ядра Linux вместе, тем самым позволив командам разработчиков быстрее создавать упаковываемые продукты, способные работать на разных серверах.

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

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

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

Контейнеризация дает много преимуществ в эпоху DevOps, облачных архитектур и набирающих популярность распределенных вычислительных сред, что поспособствовало быстрому и широкому распространению Docker.

Kubernetes и контейнерная оркестрация

Конечно, контейнеризированные процессы могут быть сложными. Первые адепты Docker очень скоро обнаружили, что они заполнили контейнеры сотнями или даже тысячами рабочих нагрузок. Всё это быстро привело к проблемам эксплуатации, ведь масштабируемость стоит денег.

Когда у вас 10 контейнеров и четыре приложения, контейнерная оркестрация — это не повод для беспокойства. Но если у вас 1 000 контейнеров и четыре сотни сервисов, то все уже не так просто. Еще немного, и черт ногу сломит.

kubernetes.jpg

Добро пожаловать в эпоху Kubernetes и контейнерной оркестрации. Kubernetes — это инструмент, автоматизирующий развертывание, масштабирование и управление контейнерными приложениями. Автоматизация — ключевое слово и одна из причин, по которой Kubernetes становится все более популярным среди инженеров и других специалистов, отвечающих за работоспособность веб-сайтов, инфраструктур и эксплуатацию систем. Kubernetes позволяет управлять непрерывной оркестрацией тысяч контейнеров, т.е. ваши сервисы будут всегда доступны.

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

По сути Docker и Kubernetes не исключают, а, наоборот, дополняют друг друга как части более крупной системы, и вопрос выбора между ними просто не стоит. К слову, недавний опрос, проведенный организацией The New Stack, показал, что переход на контейнеры приводит к внедрению Kubernetes, причем оба процесса неразрывно связаны между собой. (Мы подробнее осветим эту тему ниже в обзоре рынка.)

Внедряем и поддерживаем Kubernetes/DevOps
Проектируем, развертываем и сопровождаем инфраструктуру для бизнес-приложений на базе микросервисов и контейнеров

Kubernetes vs. Docker Swarm

О Docker и Kubernetes закрепилось ложное представление как о конкурентах (либо одно, либо другое), но, как говорится, нет дыма без огня. Дело в том, что в экосистеме Docker есть собственное решение для контейнерной оркестрации Docker Swarm — функциональный аналог Kubernetes.

Кто бы ни одержал безоговорочную победу в контейнерной оркестрации, Kubernetes был как никогда к этому близок в 2018 г. Доказательства? Docker добавил мощную поддержку для Kubernetes в начале года, выпустив официальный релиз Docker Enterprise Edition 2.0, которой позволяет пользователям запускать Kubernetes и Docker Swarm на одном кластере.

Иногда, если речь идет не о продуктивной среде, а только о средах разработки или тестирования, использовать контейнеры Docker можно и без Kubernetes. Принято считать, что Docker Swarm легче использовать, тогда как большинству пользователей освоение Kubernetes дается куда труднее.

Однако стоит организациям переместить огромные контейнеризированные рабочие нагрузки в продуктивную среду, сразу становится понятно, что нет ничего лучше Kubernetes (статистические данные будут уже через пару строк). Теперь, когда Docker облегчил бизнесу использование Kubernetes, у этого легендарного дуэта появится еще больше фанатов.

Обзор рынка контейнеризации

Давайте немного сменим тему и посмотрим на ценность контейнеров в долларовом эквиваленте. По прогнозам исследовательской группы 451 Research, рынок контейнеров приложений вырастет с запланированных 1,5 млрд долл. США в 2018 году до 2,7 млрд долл. США в 2020 году. Неплохо, учитывая, что Docker существует всего лишь пять лет, а Kubernetes 1.0 вышел в июле 2015 года.

Достоверные данные о доле рынка контейнеризации достаточно сложно найти, потому что рынок еще только формируется, но приведенные выше цифры указывают на то, что он стремительно растет.

Например, исследовательская группа 451 Research во время ежеквартального опроса Voice of the Enterprise обнаружила, что 23,7% респондентов уже применяют контейнеризацию, а недавний опрос, проведенный компанией New Relic, показал, что эта тенденция гораздо ярче прослеживается среди пользователей публичного облака: 26% респондентов предпочитают пользоваться контейнерами, а 39% — контейнерной оркестрацией. Кроме того, группа 451 Research отмечает, что все больше компаний используют контейнеры в продуктивной среде, т.е. мы сейчас переживаем переходный период, и скоро еще больше компаний будут использовать контейнеры уже не только в средах разработки и тестирования, но и в продуктивной среде.

В марте 2018 года по случаю пятилетнего юбилея Docker компания подвела итоги: скачано 37 млрд контейнеров, 3,5 млн приложений упаковано в контейнеры Docker, более 450 клиентов пользуются корпоративной версией Enterprise Edition.

Kubernetes тоже продолжает завоевывать мир. Организация New Stack опубликовала электронную книгу «Текущее состояние экосистемы Kubernetes», где собран богатый пользовательский опыт и, в частности, сказано, что многие организации не осознают, насколько важна оркестрация, пока не начнут развертывать контейнеры в продуктивной среде.

Данные исследования можно посмотреть на сайте New Stack: 60% организаций, активно использующих контейнеры в продуктивной среде, используют и Kubernetes, а еще 19% — только начали использовать Kubernetes в продуктивной среде. Аналогично, 58% компаний, которые только начинают использовать контейнеры в продуктивной среде, сообщают, что только начали использовать в ней и Kubernetes. При этом 22% респондентов пока думают, стоит ли переходить на Kubernetes.

Последние тренды: Docker и контейнеры

Чем же обусловлен такой спрос на контейнеры? Рассмотрим несколько значимых и часто пересекающихся примеров, когда точно стоит использовать контейнеры:

  • Мультиоблачные среды: Слово «мультиоблачный» сейчас на слуху, и оно в буквальном смысле означает одновременное использование нескольких облачных сервисов от разных поставщиков. Когда разрабатывается приложение под разные публичные облака, контейнеры (и оркестрация) позволяют «создать одно приложение для всех сред сразу». Кроме того, контейнеры можно переносить, а это еще одно их неоспоримое преимущество для мультиоблачных сред.
  • Миграция в облако и модернизация приложений: Казалось бы, многие сейчас создают заточенные под облако приложения и упаковывают их в контейнеры, но по-прежнему куча организаций работает на унаследованных приложениях. Пусть есть много способов модернизации устаревших приложений, как правило, для последующей их миграции в облачную среду, обновление унаследованного ПО — это еще одна потенциальная точка роста для распространения контейнеризации. Директор по облачной стратегии компании Deloitte Consulting Дэвид Линтикам разбирает потенциальные преимущества контейнеризации для обновления унаследованных приложений в статье «От контейнеров к микросервисам: модернизация унаследованных приложений» (From Containers to Microservices: Modernizing Legacy Applications).
  • Микросервисы: Микросервисная архитектура — или, по сути, разбивка приложений на множество более мелких и самостоятельных сервисов — набирает популярность; многие компании считают вполне логичным использовать контейнеры и оркестрацию для упаковки, развертывания и обслуживания этих микросервисов, особенно в масштабе.
  • Растущее сообщество: Kubernetes, равно как и Docker, — это ПО с открытым исходным кодом. Сообщество Docker будет неизбежно расти и развиваться по мере дальнейшего распространения самой платформы. Например, на портале Docker Hub, пользователи могут выкладывать в открытый доступ и обмениваться образами докеров, а новички найдут здесь много интересного и полезного, чтобы быстрее освоиться на платформе.

Последние тренды: Kubernetes и оркестрация

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

Помимо этого, еще несколько трендов повлияли на развитие Kubernetes.

  • Поддержка Kubernetes на основных платформах: Docker совершил важный шаг, встроив поддержку Kubernetes в свою корпоративную версию Enterprise Edition. Это очередной показатель того, насколько сильна поддержка Kubernetes, в том числе со стороны известных компаний — среди недавних примеров Amazon Web Services (AWS). Крупнейшая на сегодняшний день публичная облачная платформа AWS запустила сервис масштабируемых контейнеров для Kubernetes (Amazon Elastic Container Service for Kubernetes), сокращенно Amazon EKS. Этот сервис позволяет пользователям запускать контейнеризированные приложения с помощью Kubernetes на AWS без установки или управления собственными кластерами Kubernetes.
  • Kubernetes — это грамотный карьерный ход: Инженеры, отвечающие за работу веб-сайтов, и ИТ-администраторы как никто другой понимают, что опыт работы с контейнерами и оркестрацией, особенно в Kubernetes, добавит им бонусов перед потенциальным работодателем. С другой стороны, опытные компании дают отчет, что переход на Kubernetes позволит им привлечь талантливых специалистов самого высокого уровня. Docker хвалился тем, что на LinkedIn опубликовано более 15 000 вакансий, так или иначе связанных с Docker.
  • Появляющиеся сервисные сетки: Kubernetes — это не панацея для всех проблем с микросервисами и контейнерами. Слабое место Kubernetes и контейнеров — это связь между сервисами, когда речь заходит о маршрутизации, безопасности или обнаружении. Новые проекты с открытым исходным кодом, такие как Istio (они развиваются под покровительством Lyft, IBM и Google), выполняют множество коммуникационных функций между сервисами, интегрируя их в сеть, независимо от языка программирования. Такие сетки дают разработчикам возможность сосредоточиться на бизнес-логике и не думать о том, где выполняется приложение. Сетки интегрируются на уровне оркестрации и обеспечивают весь стандартный функционал сети, например, политики безопасности или маршрутизацию.

Хотя Docker и Kubernetes появились относительно недавно, они стремительно развиваются и демонстрируют внушительный потенциал. Многие компании и команды DevOps только начинают вгрызаться в этот гранит, и им точно понадобятся крепкие зубы.

19 октября 2023
Контейнеры: технологии и процессы глазами разработчика

В выпуске#9 видеоподкаста «Откровенно об ИТ-инфраструктуре» поговорили о роли контейнеров в разработке. Приглашенные эксперты обсудили специфику использования Kubernetes и сокращение time-to-market в контексте контейнеризации.

В гостях Михаил Гудов, Orion soft, и Василий Колосов, Smartex.
1 минута
785
19 июня 2023
Семь трендов на рынке облачных услуг в 2023 году
До 2022 года на рынке облаков в России главенствовали мировые тренды, но сейчас наша страна пошла своим путем. О том, для чего сейчас компании используют облачные технологии и как меняется рынок, рассказал директор по развитию КРОК Облачные сервисы Сергей Зинкевич.
1 минута
2199
16 июня 2023
Рулевой в океане контейнеров
Выпуск#3 видеоподкаста «Откровенно об ИТ-инфраструктуре» посвящен Kubernetes и профессиональным платформам оркестрации контейнеров. Обсудили, как сегодня складывается ситуация на российском рынке контейнерных платформ, что востребовано и почему, особенности и перспективы работы с Kubernetes.

В гостях Александр Баталов, Генеральный директор Флант
1 минута
1515
29 марта 2023
Сетевые балансировщики нагрузки и другие обновления Облака КРОК

Мы рады вам представить новый сервис Облака КРОК для распределения трафика между экземплярами – Балансировщики нагрузки. Кроме того, мы автоматизировали обновление сертификатов Kubernetes и добавили возможность удаления рабочих узлов из кластера Kubernetes.

2 минуты
918
15 ноября 2022
OpenShift остался без поддержки – как решить проблему российским клиентам
Интерес к семейству ПО для контейнеризации OpenShift был довольно высоким в корпоративном сегменте в прежние годы. По данным мониторинговой службы Datadog, только за прошлый год во всем мире количество пользователей платформ от RedHat увеличилось на 28%. Весной IBM объявил об уходе из России и прекращении поддержки всех программных продуктов для текущих клиентов. Разберемся, насколько критичной оказалась данная ситуация для заказчиков, и какие варианты действий существуют, чтобы минимизировать возможные риски отключения от сервиса.
1 минута
1040
scrollup