На прошлой неделе Kubernetes отметил своё 4-летие: первый коммит в его публичной кодовой базе состоялся 6 июня 2014 года. По этому случаю один из его основателей, Joe Beda, поделился в блоге проекта своими воспоминаниями о том, как всё начиналось.
Первый коммит
А начиналось всё, как известно, гораздо раньше — с «идей, что были проверены опытом Google на протяжении 10 лет с Borg» — системой, которая в свою очередь «обязана своим существованием ещё более ранней работе в Google и вне его». Вот как описывает истоки Kubernetes, предшествовавшие первому коммиту, сам Джо:
Если говорить конкретно, Kubernetes начался с прототипов от Brendan Burns и моей продолжающейся работы Craig McLuckie с целью согласовать внутренние наработки Google с Google Cloud. Вместе с Бренданом и Крейгом мы хотели, чтобы люди могли воспользоваться нашими трудами, поэтому решили создать прототип в виде Open Source-проекта, который откроет миру лучшие идеи из Borg.
Joe Beda, Craig McLuckie и Brendan Burns (слева направо) — оригинальные авторы Kubernetes — на панельной дискуссии об истории проекта (видео 2018 года)
Мы получили добро и занялись собственно созданием системы. Взяв прототип Брендана (на Java), мы переписали его на Go и собрали лишь тот необходимый минимум, что позволяет показать основные идеи. К этому времени наша команда выросла — её пополнили Ville Aikas, Tim Hockin, Brian Grant, Dawn Chen и Daniel Smith. Получив нечто работающее, мы нуждались в человеке, который навёл бы порядок, подготовив всё для публичного запуска. Этим человеком стал я. Не осознавая всей значимости момента, я создал новый репозиторий, поместил туда наработки и коммитнул их. Несмотря на то, что мне принадлежит первый публичный коммит в репозиторий, до этого момента было проделано много работы.
Joe Beda начинал свою карьеру в Microsoft (1997), перейдя оттуда в Google (2004), а затем был советником в CoreOS (2015) и создал свою компанию Heptio (2016)
Но первые наработки Kubernetes были очень сырыми:
Версия Kubernetes того времени была лишь тенью того, чем станет проект. Основные концепции присутствовали, но находились в очень сыром виде. Например, поды (pods) назывались задачами (tasks). Мы изменили это буквально за день до публичного коммита. [..] Однако, несмотря на эту сырость, даже такого начала было достаточно для того, чтобы вызвать интерес сообщества, которое быстро сплотилось, а со временем становилось только сильнее.
Очевидная причина последовавшего всплеска популярности Kubernetes — индустрия в целом пришла к тем же проблемам и не имела достаточно подходящего решения. Словам Джо вторит Крейг:
Мы долго размышляли над тем, как сделать запуск приложений в production более прогрессивным, «оркестрированным». Просто основываясь на своём опыте с Google Compute Engine, мы из первых рядов увидели проблемы, с которыми компании сталкиваются при переносе рабочих нагрузок в облака. [..]
Если вы взглянете на историю, мы приняли решение открыть код Kubernetes и сделать его проектом, ориентированным на сообщество, гораздо раньше, чем того рекомендует привычный ход мысли, и по-настоящему сосредоточились на создании сообщества, которое будет открытым и вовлечённым. И это действительно принесло свои плоды: развитие Kubernetes ускорилось и он быстро стал стандартом для оркестровки контейнеров.
Первый анонс
Публичный анонс Kubernetes состоялся через несколько дней после первого коммита — 10 июня 2014 года на первой конференции DockerCon. Это сделал Eric Brewer — вице-президент Google по инфраструктуре — в рамках доклада «Robust Containers» (видео, презентация) следующими словами:
Сегодня мы выпускаем код Kubernetes. Это ещё одна система оркестровки… [..] Не буду её демонстрировать, т.к. у меня всего 25 минут на доклад. Позже сегодня это сделают Крейг и Брендан. [..] Причина, по которой мы сейчас публикуем Kubernetes как Open Source-проект, заключается в идеях [которыми мы хотим поделиться с сообществом].
… и кратким рассказом о базовой архитектуре Kubernetes и ключевых концепциях нового проекта: labels для подов (термин pod уже использовался в Google для обозначения групп контейнеров), replica set («группа подов с одинаковыми лейблами»), service («replica set с балансировкой нагрузки»), reconciler model («модель примирителя»; ключевая идея этого подхода — объявлять желаемое состояние, чтобы в дальнейшем система автоматизированно следила за соответствием ему).
Анонс Kubernetes на конференции DockerCon'14
Ценности проекта
Что было дальше с Kubernetes, нам известно уже не понаслышке… Подводя итог 4-летия, Джо отмечает, что «успех проекта был во многом обусловлен не просто кодом и технологией, а тем, как замечательная группа людей собралась вместе для того, чтобы сделать нечто особенное». И лучшей иллюстрацией тому служат ценности сообщества Kubernetes, которые представлены в репозитории проекта:
- Распространение лучше централизации. Масштаб, которого добился Kubernetes, возможен только благодаря открытому и доверительному распределению полномочий на управление, принятие решений, архитектуру, владение кодом, документацию.
- Сообщество превыше продукта или компании. Приверженность развитию проекта в интересах всех его участников и пользователей. Проявляется это в публичной совместной работе (и отдельных энтузиастов, и компаний), направленной на достижение общих целей.
- Автоматизация превыше процесса. «Героизм нежизнеспособен», поэтому рутинная работа должна быть максимально автоматизирована, а там, где это невозможно, по достоинству оценена.
- Вбирать в себя лучше, чем исключать. Широкий успех технологии требует взглядов с разных сторон и большого числа навыков, которые должны встречаться в дружелюбной и уважительной атмосфере.
- Эволюция лучше, чем стагнация. В основе культуры проекта Kubernetes — постоянное совершенствование, servant leadership (подход «лидер-служитель»), наставничество и уважение. В обязанности лидеров проекта входит поиск и спонсирование новых членов сообщества, которые должны иметь возможность присоединиться, а сами лидеры в то же время должны быть готовы уйти.
Резюмирует же ценности проекта известная цитата Питера Друкера: «Культура ест стратегию на завтрак».
P.S.
Читайте также в нашем блоге:
- «Разработчики Kubernetes отвечают на вопросы пользователей Reddit»;
- «Зачем нужен Kubernetes и почему он больше, чем PaaS?»;
- «Истории успеха Kubernetes в production. Часть 8: Huawei»;
- «Kubernetes 1.10: обзор основных новшеств»;
- «Путеводитель CNCF по решениям Open Source (и не только) для cloud native».
Автор: shurup