Как это часто бывает в первые годы жизни инфраструктурных проектов, стремительно набирающих популярность, пока многие только присматриваются к Kubernetes, оценивая его возможности и зрелость, другие успевают продвинуться дальше, протестировать и запустить в production (полностью или частично), получив свой первый «взрослый» опыт эксплуатации. Эта статья начинает обзорный цикл примеров из мировой практики достаточно известных компаний, использующих Kubernetes в production.



Примечание: все примеры рассказывают об использовании оригинального upstream-дистрибутива Kubernetes, а не его производных вроде OpenShift (Red Hat) и Tectonic (CoreOS).

Начнём с eBay, специалисты которой серьёзно работают с Kubernetes уже более 2 лет и значительно продвинулись в этом…

2015 год: начало


Итак, в 2015 году один из крупнейших онлайн-магазинов eBay (входит в топ-10 мировых интернет-компаний по прибыли) начал внедрять Kubernetes. Как рассказывал Ashwin Raveendran из облачной команды eBay на конференции KubeCon 2015, его компания, имевшая на тот момент более 150 тысяч серверов, стала одним из первых публичных примеров внедрения системы Kubernetes поверх облачной Open Source-платформы OpenStack.


(Слайд из презентации «Kubernetes on OpenStack at eBay» на OpenStack Day Seattle 2015)

Ранние этапы адаптации Kubernetes в eBay «были не только о переходе на контейнеры для деплоя приложений, но и об изменении жизненного цикла приложений в компании», что стало ответом на потребности разработчиков. Тогда же в eBay рассказывали о планах «перейти к более гибкой модели деплоя с использованием контейнеров в качестве исполняемой среды и Kubernetes поверх OpenStack для управления этими контейнерами». Инсталляция Kubernetes в eBay получила внутреннее название Tess.IO, но публичной информации об особенностях этого форка(?) найти не удалось. (Не сообщается и о каких-либо планах eBay по открытию кода Tess.IO: на GitHub-аккаунте компании есть форк кодовой базы Kubernetes, который не обновлялся с 2015 года.)

2016 год: первые результаты


Через год после первого упоминания Tess.IO от директора облачной инфраструктуры компании (Suneet Nandwani) стало известно, что в eBay функционировало семь кластеров Kubernetes, каждый из которых обслуживал примерно по 100 физических серверов. Для работы с ними в компании подготовили единый административный интерфейс, интегрированный с OpenStack и названный TessMaster.

Новый проект eBay, до сих пор опубликованный на GitHub лишь как небольшое README без каких-либо исходников, позиционировался как альтернатива для OpenStack Magnum — официального API, предлагаемого в OpenStack для интеграции инструментов оркестровки (Docker Swarm, Kubernetes и Apache Mesos) с облачной платформой. Magnum использует Heat (ключевой сервис оркестровки в OpenStack для управления жизненным циклом инфраструктуры и приложений) для оркестровки образа операционной системы и его запуска на виртуальных машинах или на голом железе в кластерной конфигурации.

Из слов Suneet Nandwani в 2016 году:
«Мы очень целеустремлённо занимались адаптацией Kubernetes. Команды разработки в eBay любят контейнеры Docker для dev- и test-окружений, а Kubernetes поддерживает работу с Docker и берёт на себя управление им. В дополнение к окружениям dev и test мы начали запускать production-приложения в контейнерах. Каждое приложение представлено набором из контейнеров, реализующих различные компоненты и зависимости. [..] В этом году мы запустили в Kubernetes четыре приложения. Видим огромный потенциал в том, как приложения работают и какая гибкость появляется у разработчиков».

По состоянию на конец 2016 года, около 2000 контейнеров в production у eBay управлялись с Kubernetes, и это количество обещали увеличить «до десятков тысяч в ближайшем будущем».

Kubernetes или Apache Mesos?


Что делает этот случай ещё более интересным: за полтора года до первых новостей про eBay и Kubernetes, в апреле 2014 года, инженеры компании рассказывали о своём подходе к непрерывной интеграции, реализованном с помощью прямого конкурента Kubernetes — Apache Mesos (а также Marathon, ZooKeeper, Jenkins):



Более того, eBay по сей день значится в актуальном списке Organizations using Mesos. Однако материал InformationWeek от 28 декабря 2016 года ссылается на слова всё того же Suneet Nandwani (директора облачной инфраструктуры и платформ в eBay), который утверждает, что компания выбирала между имеющимися решениями оркестровки в 2015 году*. Несмотря на то, что разработчики оценили удобство контейнеров при тестировании и доставке кода, «запуск Docker сам по себе [в рамках имеющейся инфраструктуры] был очень непростым» и требовал удобного обслуживания. Docker Swarm на тот момент ещё не было, а выбор между Apache Mesos и Kubernetes пал в пользу последнего, поскольку эту систему сочли наиболее зрелым решением по итогам внутреннего тестирования вместе с Docker-контейнерами.

* В статье указан 2016 год, однако другое выступление Suneet (см. ниже) + профиль одного из разработчиков Tess.IO указывают, что активное использование Kubernetes в eBay (создание Tess.IO) началось всё же раньше, в 2015 году:



2017 год: настоящее и перспективы


Выступая в мае 2017 года на OpenStack Summit в Бостоне, Suneet Nandwani заявил, что Kubernetes в eBay по-прежнему запущен поверх частного облака OpenStack и на сегодняшний день обслуживает 178 приложений в 4200 подах.



На заметку: Всё облако OpenStack в eBay (по состоянию на май 2017 года) насчитывает 167 тысяч виртуальных машин и 4000 приложений, обслуживает 95 % трафика. Это одна из крупнейших инсталляций OpenStack в мире!

В рамках того же доклада специалист из eBay подробнее рассказал о причинах выбора Kubernetes. Таковыми были названы:

  • ориентированность на приложения (app centric) в противовес (а точнее — в дополнение) ориентированности на инфраструктуру (в OpenStack);
  • Open Source («Мы имеем большой опыт работы с OpenStack, мы вносим и свой вклад в развитие этого проекта»; «Все большие платформы, которые мы используем, должны быть открытыми»);
  • поддержка Docker-контейнеров (стала очевидной необходимостью для разработчиков после перехода на микросервисную архитектуру);
  • архитектура, управляемая моделью (model driven);
  • декларативный подход;
  • активное сообщество;
  • продвинутые механизмы планирования;
  • географическая федеративность («Будучи крупным предприятием, мы запускаем всё в разных дата-центрах»).

Инженеры eBay запускают в Kubernetes и stateful-, и stateless-приложения, а среди конкретных применений называются: платформа искусственного интеллекта, решения для автоматизации управления сетью, ElasticSearch, Apache Kafka, распределённые NoSQL-решения.

Основные группы проблем, с которыми им пришлось столкнуться при внедрении и эксплуатации Kubernetes, перечислены на этом слайде:



О некоторых технических подробностях их преодоления на ранних этапах внедрения Kubernetes можно послушать в докладе 2015-го года «Cloud-Scale Kubernetes at eBay» (Ashwin Raveendran на KubeCon 2015). А более законченную форму решение некоторых из этих проблем нашло в разработке собственного продукта.

TessMaster


Уже упомянутое решение TessMaster, созданное в eBay, задаётся целью обеспечить управление всем жизненным циклом для кластеров Kubernetes, размещённых у разных провайдеров (публичные/приватные облачные окружения, bare metal). Из виртуализации (т.е. ВМ, образующих инфраструктуру в дополнение к железным серверам) в TessMaster на настоящий момент поддерживается OpenStack и VirtualBox.

Для конечного пользователя (DevOps-инженера) TessMaster предлагает веб-интерфейс, в котором наглядно представляется вся инфраструктура (кластеры Kubernetes). Она разбита по регионам, зонам доступности, сетевым контурам (например, dev и prod). Для каждого кластера показаны используемые ресурсы и доступные узлы, в которые можно «зайти» с тем, чтобы посмотреть список виртуальных/физических серверов и узлов в кластере… и буквально в пару кликов изменить количество узлов (т.е. поменять конфигурацию кластера Kubernetes и увидеть наглядно, «в реальном времени», как это изменение приводится в действие).



Самое приятное в презентации TessMaster — обещание eBay опубликовать свою разработку как Open Source-проект «в течение пары месяцев». Учитывая, что мероприятие состоялось в мае, ожидать этого события следует в самое ближайшее время. Тогда-то мы узнаем о других возможностях этой разработки, скрывающихся за остальными табами её веб-интерфейса, а действующие и потенциальные крупные пользователи Kubernetes получат весьма интересный инструмент для удобной эксплуатации масштабных кластеров.

P.S.


Подписывайтесь на наш блог, чтобы не пропустить следующие статьи из этого цикла, а также обратите внимание на другие уже доступные публикации:

Поделиться с друзьями
-->

Комментарии (0)