Последние несколько лет стали переломными для технологий контейнеризации, что объясняется растущим интересом предприятий и организаций к облачным окружениям — публичным и частным — с целью переноса унаследованных, а также создания новых приложений и сервисов, отмечает портал ComputerWeekly. Применение контейнеров позволяет существенно сократить время, затрачиваемое на создание, модификацию или поддержку приложений. В число самых популярных технологий контейнеризации входят Docker и Kubernetes. Первая в определенной степени разожгла интерес к контейнерам, но со временем большинство предприятий переключило интерес на Kubernetes как более зрелую технологию. В настоящее время она стала ключевым инструментом для работы с рабочими нагрузками в облаке, обеспечивая предсказуемый уровень переносимости приложений.
Несмотря на то, что обе технологии «играют на одном поле», между ними существуют различия. И самое важное из них заключается в том, что в отличие от Docker, являющейся средой для запуска контейнеров, Kubernetes — это система оркестровки для управления кластерами контейнеров (совокупность которых является распределенным приложением). Kubernetes была разработана Google для создания собственных облачных сервисов, но после выхода в середине 2015 г. Kubernetes v1.0 технология одновременно с раскрытием исходного кода была передана под управление Cloud Native Computing Foundation (CNCF).
Как инструмент для оркестровки контейнеров, в последнее время Kubernetes начала опережать таких конкурентов, как Swarm (инструмент для создания кластеров из Docker-контейнеров) или Apache Mesos. Крупнейшие провайдеры публичных облачных служб начали предлагать ее как решение «из коробки»: Google Kubernetes Engine (GKE) на Google Cloud, Azure Container Services (AKS) на Microsoft Azure, а также Elastic Container Service for Kubernetes (Amazon EKS) на AWS. Помимо этого Kubernetes задействуется в качестве интеграционной шины с растущим числом онпремис-решений, таких как платформа для разработки и публикации ПО Red Hat OpenShift или Pivotal Container Service (PKS). Поддержку Kubernetes в свою платформу Docker Enterprise Edition (EE) добавила даже Docker.
Поддержка технологии Kubernetes столькими платформами не случайна — ее API обеспечивает необходимый уровень совместимости для переноса приложений между различными облачными службами. При помощи Kubernetes можно задействовать множество виртуальных кластеров, используя при этом одни и те же серверы, что упрощает переносимость контейнеризированных приложений. Canonical, разработчик популярного дистрибутива Ubuntu Linux, который в последние годы переключился на решения для предприятий, также признал эффективность Kubernetes в мультиоблаке, интегрировав этот инструмент контейнеризации с несколькими своими решениями.
Выступая на презентации последнего релиза Ubuntu, основатель и исполнительный директор Canonical Марк Шаттлворт упомянул, что компания в ходе разработки Ubuntu 18.04 уделила особое внимание технологиям контейнеризации. Он утверждает, что Ubuntu обслуживает большую часть рабочих нагрузок публичных облаков. Ubuntu 18.04 является ОС с длительным сроком поддержки — она будет получать обновления, патчи безопасности и техническую поддержку на протяжении пяти лет с момента выхода.
Canonical располагает собственным решением для работы с контейнерами, которое оснащено инструментами для их развертывания и оркестровки — Distribution of Kubernetes. Глава компании уточнил, что эти инструменты — надстройки над Distribution of Kubernetes, а в остальном — это свободный код, который разрабатывается при участии сообщества. «Kubernetes входит в наш пакет поддержки для Ubuntu на предприятии, мы не расцениваем его как что-то экстраординарное», — сказал Шаттлворт. Он утверждает, что такая бизнес-модель широко применяются облачными провайдерами, которые предлагают Kubernetes вместе с виртуальными машинами бесплатно, плата с клиентов взимается только за потребляемый объем вычислительных ресурсов.
Canonical — не единственная, кого интересует экосистема контейнеров. Ранее в этом году VMware и Pivotal, обе являющиеся дочерними компаниями Dell, представили Pivotal Container Service (PKS). Это решение базируется на наработках проекта Kubernetes, но обладает дополнительными возможностями для развертывания, поддержкой отказоустойчивости, автоматического масштабирования и проверки работоспособности кластеров. Большая часть этих возможностей обеспечивается Open Source-утилитой Bosh, разработанной для управления жизненным циклом широкомасштабных распределенных сервисов. Ее ключевой особенностью является Cloud Provider Interface (CPI), который задействуется для подключения к базовой инфраструктуре. При необходимости PKS может запускаться поверх VMware vSphere локально или в публичном облаке, к примеру, в Google Cloud.
Платформа Red Hat для контейнеров существует в нескольких редакциях: OpenShift Container Platform для локального развертывания, OpenShift Online для работы на удаленных серверах и OpenShift Dedicated, которая может применяться в качестве управляемого сервиса. Последняя предназначена для организаций, которые хотят разрабатывать, запускать и управлять приложениями на OpenShift Dedicated с использованием облачной инфраструктуры Google Cloud Platform или AWS. OpenShift появилась в 2011 г. в виде PaaS на базе проприетарного контейнерного фреймворка под названием Gears, но после выхода в 2015 г. третьей версии перешла на Kubernetes.
Так в чем же заключаются преимущества Kubernetes? Ее ключевым преимуществом является то, что будучи интегрированным компонентом, она избавляет пользователя от необходимости взаимодействовать с контейнерами напрямую, позволяя ему сосредоточиться на создании приложений. По мнению Шаттлворта, существует прослойка разработчиков, которые считают, что такое развитие Kubernets теряет в гибкости и было бы лучше, если бы контейнерная технология развивалась по модели Canonical, то есть открыто и без нагромождения проприетарных прослоек. «Мы не приемлем позицию некоторых наших конкурентов, которые, как нам кажется, продвигают для инфраструктуры PaaS изжившие себя, усложненные экономические модели, тогда как разработчики нуждаются в стерильном Kubernets. Именно поэтому мы сосредоточились на поставке простой и недорогой инфраструктуры с привлечением сторонних решений», — сказал он.
Вопрос открытости Kubernetes действительно важен, потому что, как показала история, закрытость технологии очень часто приводила к привязке (так называемый lock-in) к проприетарным решениям, но все же нельзя сбрасывать со счетов и то, что платформы «под ключ» могут сэкономить массу усилий и средств, предлагая для работы приложения или сервиса готовую инфраструктуру, а также дополнительные услуги (балансировка нагрузок, мониторинг и т. д.). Директор по обслуживанию клиентов аналитической компании Quocirca Клайв Лонгботтом придерживается сходной с Шаттлвортом точки зрения, говоря, что он приветствует наполнение Kubernetes дополнительными библиотеками, но основное ядро должно сохраняться в неприкосновенности.
Следует отметить, что Kubernetes — это далеко не единственный инструмент, требующийся для создания мультиоблачного окружения. Помимо него организации должны располагать платформами для управления облаком с сильной кросс-платформенной составляющей, но пока что этот рынок находится на начальной стадии развития. Так или иначе, но предприятия нуждаются в стандарте, который бы позволил им запускать контейнеры в мультиоблаке, и пока что все говорит за то, что на эту роль претендует именно Kubernetes, позволяющая запускать приложения практически отовсюду.