Проекту Kubernetes исполнилось 4 года

r96vjshmdaaqpsyfhqar6iontw4.png

На прошлой неделе Kubernetes отметил своё 4-летие: первый коммит в его публичной кодовой базе состоялся 6 июня 2014 года. По этому случаю один из его основателей, Joe Beda, поделился в блоге проекта своими воспоминаниями о том, как всё начиналось.

Первый коммит


А начиналось всё, как известно, гораздо раньше — с «идей, что были проверены опытом Google на протяжении 10 лет с Borg» — системой, которая в свою очередь «обязана своим существованием ещё более ранней работе в Google и вне его». Вот как описывает истоки Kubernetes, предшествовавшие первому коммиту, сам Джо:

Если говорить конкретно, Kubernetes начался с прототипов от Brendan Burns и моей продолжающейся работы Craig McLuckie с целью согласовать внутренние наработки Google с Google Cloud. Вместе с Бренданом и Крейгом мы хотели, чтобы люди могли воспользоваться нашими трудами, поэтому решили создать прототип в виде Open Source-проекта, который откроет миру лучшие идеи из Borg.


3x94mxjxvoh6gc2otzbchyfnble.jpeg
Joe Beda, Craig McLuckie и Brendan Burns (слева направо) — оригинальные авторы Kubernetes — на панельной дискуссии об истории проекта (видео 2018 года)

Мы получили добро и занялись собственно созданием системы. Взяв прототип Брендана (на Java), мы переписали его на Go и собрали лишь тот необходимый минимум, что позволяет показать основные идеи. К этому времени наша команда выросла — её пополнили Ville Aikas, Tim Hockin, Brian Grant, Dawn Chen и Daniel Smith. Получив нечто работающее, мы нуждались в человеке, который навёл бы порядок, подготовив всё для публичного запуска. Этим человеком стал я. Не осознавая всей значимости момента, я создал новый репозиторий, поместил туда наработки и коммитнул их. Несмотря на то, что мне принадлежит первый публичный коммит в репозиторий, до этого момента было проделано много работы.


8t_elp-ee2arbyhw4diiezarswy.png

yb43785xgkpwt76eua21iriwluc.jpeg
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 («модель примирителя»; ключевая идея этого подхода — объявлять желаемое состояние, чтобы в дальнейшем система автоматизированно следила за соответствием ему).

0p3b02rvoutypdeowspxmvime1q.jpeg
Анонс Kubernetes на конференции DockerCon'14

Ценности проекта


Что было дальше с Kubernetes, нам известно уже не понаслышке… Подводя итог 4-летия, Джо отмечает, что «успех проекта был во многом обусловлен не просто кодом и технологией, а тем, как замечательная группа людей собралась вместе для того, чтобы сделать нечто особенное». И лучшей иллюстрацией тому служат ценности сообщества Kubernetes, которые представлены в репозитории проекта:

  1. Распространение лучше централизации. Масштаб, которого добился Kubernetes, возможен только благодаря открытому и доверительному распределению полномочий на управление, принятие решений, архитектуру, владение кодом, документацию.
  2. Сообщество превыше продукта или компании. Приверженность развитию проекта в интересах всех его участников и пользователей. Проявляется это в публичной совместной работе (и отдельных энтузиастов, и компаний), направленной на достижение общих целей.
  3. Автоматизация превыше процесса. «Героизм нежизнеспособен», поэтому рутинная работа должна быть максимально автоматизирована, а там, где это невозможно, по достоинству оценена.
  4. Вбирать в себя лучше, чем исключать. Широкий успех технологии требует взглядов с разных сторон и большого числа навыков, которые должны встречаться в дружелюбной и уважительной атмосфере.
  5. Эволюция лучше, чем стагнация. В основе культуры проекта Kubernetes — постоянное совершенствование, servant leadership (подход «лидер-служитель»), наставничество и уважение. В обязанности лидеров проекта входит поиск и спонсирование новых членов сообщества, которые должны иметь возможность присоединиться, а сами лидеры в то же время должны быть готовы уйти.


Резюмирует же ценности проекта известная цитата Питера Друкера: «Культура ест стратегию на завтрак».

P.S.


Читайте также в нашем блоге:

© Habrahabr.ru