Kubernetes исполняется 10 лет: как он управлял облачными вычислениями за последнее десятилетие — и что дальше
Как и Linux, Kubernetes является свидетельством силы сотрудничества и инноваций с открытым исходным кодом. Как бы мы обходились без этого?
Если бы вы отказались от Linux, облака, контейнеров или Kubernetes, вы бы не узнали сегодняшний мир технологий. Linux является основой операционной системы для всего этого; облако дает нам доступ ко всем своим приложениям и ресурсам; контейнеры — это место, где живут эти приложения; и Kubernetes управляет всеми контейнерами. Уберите любой из них, и мы будем жить и работать в более примитивном мире.
Лишь немногие технологии оказали такое глубокое влияние на постоянно развивающуюся среду облачных вычислений, как Kubernetes. Отмечая свое 10-летие, Kubernetes является свидетельством силы сотрудничества и инноваций с открытым исходным кодом. Начиная со скромного зарождения в Google и заканчивая фактическим стандартом оркестрации контейнеров, Kubernetes изменил то, как мы развертываем, управляем и масштабируем приложения.
Вам не обязательно верить мне на слово. В недавно опубликованном отчете экспертов Pure Storage «Голос Kubernetes за 2024 год» компания Pure Storage обнаружила, что «в течение следующих пяти лет 80% новых приложений будут создаваться на облачных платформах». Я удивлен, что это так низко.
Видите ли, Kubernetes изменил то, как мы выполняем вычисления. Как рассказала мне Лиз Райс, директор по открытому исходному коду в Isoвалентной компании, занимающейся сетями, безопасностью и наблюдением на основе eBPF, Kubernetes фундаментально изменил наш подход к сетям и безопасности:
Kubernetes по своей сути динамичен. Поды могут масштабироваться вверх и вниз в зависимости от спроса, а рабочие нагрузки можно планировать и переносить на разные машины. Таким образом, хотя в сети между рабочими нагрузками Kubernetes используются IP-пакеты, IP-адреса имеют смысл только в краткосрочной перспективе, поскольку они используются и повторно используются для разных рабочих нагрузок в разное время. Это означает, что традиционных сетевых инструментов и инструментов безопасности, которые идентифицируют трафик на основе портов и IP-адресов, больше недостаточно. Нам нужны инструменты, которые сопоставляют эфемерные IP-адреса со значимыми идентификаторами Kubernetes, такими как модули, сервисы, пространства имен и узлы.
Давайте совершим путешествие по прошлому десятилетию, чтобы понять, где зародился Kubernetes, как он сформировал облачный мир и что ждет впереди.
Происхождение Кубернетеса
История Kubernetes начинается в начале 2010-х годов в Google, где инженеры пытались решить проблемы управления крупномасштабными контейнерными приложениями. Все понимали, насколько важны контейнеры и что нам нужен способ управлять ими.
В Google уже знали, насколько важны организационные контейнеры. В конце концов, Google использовал контейнеры до того, как Docker сделал их популярными. Когда в 2013 году инженеры Google Крейг Маклаки, Джо Беда и Брендан Бернс впервые предложили эту идею Урсу Хёльцле, тогдашнему руководителю технической инфраструктуры Google, он ответил: «Итак, позвольте мне сказать прямо. Вы хотите создать внешнюю версию Borg планировщик задач. Одно из наших важнейших конкурентных преимуществ, о котором мы даже не говорим внешне. И, кроме того, вы хотите сделать его открытым?
Да, да, они это сделали. В конце концов они убедили Хёльцле, что это хорошая идея.
Почему? Маклаки объяснил:
Мы всегда считали, что Kubernetes с открытым исходным кодом — правильный путь, приносящий проекту множество преимуществ. Во-первых, циклы обратной связи были практически мгновенными: если возникала проблема или что-то работало не так, как надо, мы немедленно знали об этом. Но самое главное, нам удалось поработать со множеством замечательных инженеров, многие из которых действительно понимали потребности компаний, которые выиграют от развертывания контейнеров. Это был благотворный цикл: работа талантливых инженеров привела к увеличению интереса к проекту, что еще больше увеличило скорость его совершенствования и использования.
Так получилось, что в начале июня 2014 года на первом DockerCon началась «Война за оркестровку контейнеров». Были анонсированы Apache Mesos, GearD от Red Hat, Docker Libswarm, Tupperware от Facebook и Kubernetes. Как сказал Брэд Рыдзевски, тогда основатель Drone.io: «Что я узнал на #dockercon: каждый создает свою собственную платформу оркестрации. Серьезно. Каждый».
Рыдзевский не ошибся. Вскоре последовали и другие программы оркестровки.
Однако даже в те первые дни я думал, что Kubernetes станет явным победителем. Поскольку он был вдохновлен программой управления контейнерами Borg от Google, которая использовалась с 2003 года, она обладала зрелостью, которой не хватало другим программам.
Kubernetes быстро набрал обороты. Название «Kubernetes» происходит от греческого слова «рулевой» или «пилот», что символизирует его роль в управлении контейнерными приложениями. Логотип Kubernetes, корабельное колесо с семью спицами, отдает дань уважения наследию Боргов и его имени. Седьмая из девяти, дружелюбный борг из «Звездного пути», который был исключен по очевидным причинам, связанным с торговой маркой.
Быстрое внедрение и рост сообщества
Открытый исходный код Kubernetes и надежный набор функций мгновенно сделали его хитом среди разработчиков и предприятий. К 2015 году Kubernetes достиг версии 1.0, и Google в партнерстве с Linux Foundation сформировал Cloud Native Computing Foundation (CNCF), используя Kubernetes в качестве исходной технологии. Этот шаг сыграл решающую роль в формировании активного сообщества вокруг Kubernetes, что привело к быстрым инновациям и широкому распространению.
Хотя другие программы оркестрации контейнеров все еще существуют, в 2017 году Amazon Web Services (AWS) анонсировала Elastic Container Service for Kubernetes (EKS), и каждый мог прочитать надпись на стене. Kubernetes будет доминировать в облачном мире.
Одновременно CNCF развивал экосистему Kubernetes. Сегодня сотни облачных программ зависят от Kubernetes. Сегодня нет крупных поставщиков облачных услуг, которые бы не полагались на Kubernetes. Она стала популярной платформой оркестрации контейнеров.
Преобразование облачной разработки
Влияние Kubernetes на облачную разработку невозможно переоценить. Он представил новую парадигму развертывания приложений и управления ими, позволив разработчикам сосредоточиться на написании кода, а не беспокоиться об инфраструктуре. Kubernetes абстрагирует сложности оркестровки контейнеров, предоставляя такие функции, как автоматическое развертывание и откат, самовосстановление и горизонтальное масштабирование.
Еще одним ключевым преимуществом Kubernetes является его переносимость. Приложения, развернутые в Kubernetes, могут работать на любом поставщике облачных услуг или в локальной инфраструктуре, что делает его идеальным выбором для гибридных и мультиоблачных сред. Действительно, гибридное облако живет и умирает благодаря Kubernetes. Эта гибкость изменила правила игры для предприятий, позволив им избежать привязки к поставщику и оптимизировать свои облачные стратегии.
За прошедшие годы, в дополнение к соответствующим облачным программам, Kubernetes породил богатую экосистему инструментов и проектов, расширяющих его возможности. К ним относятся Helm, менеджер пакетов Kubernetes, который упрощает развертывание приложений и управление ими, предоставляя многоразовые диаграммы, и Prometheus, мощную программу мониторинга и оповещения среды Kubernetes.
Развитие Kubernetes также привело к появлению новых парадигм, таких как GitOps, которые используют Git как единственный источник достоверных данных для декларативного управления инфраструктурой и приложениями.
Будущее Кубернетеса
Заглядывая в будущее, Kubernetes не демонстрирует никаких признаков замедления. Платформа продолжает развиваться, регулярно добавляются новые функции и улучшения. Сообщество Kubernetes изучает способы упрощения взаимодействия с пользователем, повышения безопасности и масштабируемости.
Вилле Айкас, соучредитель Chainguard и один из создателей Kubernetes, заметил:
У нас есть огромный цветущий ландшафт CNCF, и это замечательно с точки зрения всего разнообразия инструментов и вариантов инфраструктуры, которые он предоставляет командам платформ. Но я думаю, что это также создает множество вариантов выбора, которые необходимо сделать для работы Kubernetes – и этот ландшафт стал огромным. Я всегда чувствовал, что одна из основных причин, по которой Kubernetes стал настолько популярным, заключается в том, что его интерфейс прикладного программирования (API) настолько прост и что когнитивная нагрузка при его использовании относительно невелика. Поскольку Kubernetes продолжает развиваться, ему необходимо каким-то образом сохранять простоту своей ментальной модели и удобство использования API.
Это легче сказать, чем сделать. Жонглировать Kubernetes и облачными парадигмами программирования становится все труднее.
Как сказал Шахар Азулай, генеральный директор и соучредитель Groundcover, компании по мониторингу производительности eBPF:
Kubernetes продемонстрировал свою способность эффективно управлять разнообразными задачами, но его сложность требует значительной настройки и постоянного обслуживания. Подобно тому, как Linux превратился в надежную операционную систему, я ожидаю, что Kubernetes превратится в более удобный для пользователя уровень абстракции. Поскольку внедрение Kubernetes продолжает расти в течение десятилетия, потребность в эффективности и оптимизации затрат становится все более важной.
Забегая вперед, Райс из Isoвалент сказал:
Мы уже видим, что Kubernetes используется в более гибридных средах наряду с устаревшими рабочими нагрузками и на периферийных устройствах. Концепция Cilium, облачной программы Networking, Observability and Security с открытым исходным кодом на основе eBPF, заключается в том, что разработчику приложений не нужно знать или заботиться о том, где работают сервисы, с которыми он хочет взаимодействовать: связь и безопасность должны все обрабатывается на уровне платформы.
Еще одно интересное событие на горизонте — интеграция Kubernetes с бессерверными вычислениями. Такие проекты, как Kubeless и Fission, привносят в Kubernetes бессерверные возможности, позволяя разработчикам создавать и развертывать функции как услугу (FaaS) поверх существующих кластеров Kubernetes. Это сочетание бессерверных технологий и Kubernetes обещает открыть новые возможности для облачных приложений.
Комбинация периферийных вычислений и Kubernetes также растет. По мере того, как все больше устройств и приложений перемещаются на периферию, Kubernetes адаптируется для поддержки периферийных развертываний. Сообщество Kubernetes работает над такими проектами, как KubeEdge, MicroK8s и Red Hat Device Edge, чтобы создать легкие и эффективные кластеры Kubernetes, которые могут работать на периферийных устройствах.
Будущее Kubernetes светлое. Благодаря постоянным инновациям и процветающей экосистеме Kubernetes готов продолжать формировать облачную среду на долгие годы вперед. Поднимите тост за десятилетие Kubernetes, и вот еще 10 лет его инноваций, сотрудничества и превосходства в оркестрации контейнеров.