[Перевод] The history of Kubernetes

В современной ИТ-инфраструктуре невозможно переоценить роль Kubernetes — платформы с открытым исходным кодом для оркестрации контейнеров, которая автоматизирует развертывание, управление и масштабирование контейнеризированных программных приложений и сервисов.Согласно отчету организации Cloud Native Computing Foundation (CNCF), Kubernetes является вторым по величине проектом с открытым исходным кодом в мире (уступая лишь Linux®) и основным инструментом оркестрации контейнеров для 71% компаний из списка Fortune 100. Чтобы понять, как Kubernetes удалось занять доминирующее положение на рынке облачных вычислений и микросервисов, необходимо обратиться к истории его создания.

Эволюция Kubernetes

Историю Kubernetes — название которого происходит от древнегреческого слова, означающего «рулевой» (человек, стоящий у штурвала и управляющий судном), — принято отсчитывать с 2013 года. Именно тогда трое инженеров Google — Крейг Маклаки, Джо Беда и Брендан Бернс — предложили создать систему управления контейнерами с открытым исходным кодом. Эти новаторы стремились перенести опыт Google в области управления внутренней инфраструктурой в сферу масштабных облачных вычислений, а также позволить компании конкурировать с Amazon Web Services (AWS) — на тот момент бесспорным лидером среди облачных провайдеров.Традиционная ИТ-инфраструктура против виртуальной ИТ-инфраструктурыЧтобы по-настоящему понять историю Kubernetes (который часто называют «Kube» или «K8s» — сокращение, основанное на количестве пропущенных букв), необходимо рассмотреть контейнеры в контексте сравнения традиционной и виртуальной ИТ-инфраструктуры.Раньше организации запускали свои приложения исключительно на физических серверах (так называемых «голых» серверах, или bare-metal). При этом не существовало способа разграничить использование системных ресурсов между приложениями. Например, если на одном физическом сервере работало несколько программ, одна из них могла поглотить все доступные вычислительные мощности, память, дисковое пространство или другие ресурсы. Чтобы избежать этого, компании выделяли для каждого приложения отдельный физический сервер. Однако такой подход приводил к неэффективному использованию ресурсов и трудностям с масштабированием. Кроме того, большое количество физических машин требует много места и обходится очень дорого.ВиртуализацияЗатем появилась виртуализация — технология, ставшая фундаментом для облачных вычислений. Хотя корни виртуализации уходят еще в конец 1960-х годов, широкое распространение она получила лишь в начале 2000-х.В основе виртуализации лежит программное обеспечение, называемое гипервизором. Гипервизор — это специализированная программа, которая позволяет запускать несколько виртуальных машин (ВМ) на центральном процессоре (CPU) одного физического сервера. Каждая виртуальная машина имеет собственную гостевую операционную систему (ОС) и виртуальную копию аппаратного обеспечения, необходимого для работы этой ОС. …для запуска приложения, а также связанных с ним библиотек и зависимостей.Хотя виртуальные машины (ВМ) позволяют более эффективно использовать аппаратные ресурсы для запуска приложений по сравнению с физическими серверами, они всё же потребляют значительный объём системных ресурсов. Это особенно заметно, когда на одном физическом сервере работает множество ВМ, каждая из которых имеет собственную гостевую операционную систему.

Контейнеры Здесь на сцену выходит технология контейнеризации. Важной вехой в её развитии стало появление в 1979 году механизма chroot — компонента операционной системы Unix версии 7. Chroot заложил основы изоляции процессов, ограничив доступ приложения к файловой системе определённым каталогом (корневым) и всеми вложенными в него директориями.Современные контейнеры представляют собой программные единицы, в которых код приложения упакован вместе со всеми необходимыми библиотеками и зависимостями. Благодаря этому приложения могут быстро запускаться в любой среде — будь то локальная инфраструктура, частный центр обработки данных или публичное облако.В отличие от виртуальных машин (ВМ), которые виртуализируют аппаратное обеспечение, контейнеры виртуализируют операционную систему (как правило, Linux или Windows). Отсутствие гостевой ОС делает контейнеры «легкими», а также более быстрыми и мобильными по сравнению с виртуальными машинами.

Borg: предшественник KubernetesВ начале 2000-х годов компании Google потребовался способ максимально эффективно использовать виртуальные серверы для поддержки растущей инфраструктуры и развития своей платформы публичного облака. Это привело к созданию Borg — первой унифицированной системы управления контейнерами. Система Borg, разработанная в 2003–2004 годах, получила свое название в честь «Боргов» (Borg) — инопланетной расы из вселенной «Звездного пути» (Star Trek). Это кибернетические организмы, которые действуют как единое целое, обладая общим коллективным разумом, называемым «Коллективом» (The Collective).Название «Borg» отлично подошло для проекта Google. Масштабная система управления кластерами Borg, по сути, выполняет роль центрального «мозга», координирующего выполнение контейнеризированных задач в различных дата-центрах компании. Изначально созданная для обеспечения работы поисковой системы Google, в дальнейшем Borg легла в основу многих интернет-сервисов компании, включая Gmail, Google Docs, Google Search, Google Maps и YouTube.Borg позволила Google запускать сотни тысяч задач для множества различных приложений на огромном количестве серверов. Благодаря этому компания добилась высокой эффективности использования ресурсов, отказоустойчивости и масштабируемости для своих масштабных рабочих нагрузок. Borg используется в Google и по сей день, оставаясь основной внутренней системой управления контейнерами.В 2013 году Google представила Omega — систему управления контейнерами второго поколения. Omega развила идеи, заложенные в экосистеме Borg, предложив гибкое и масштабируемое решение для планирования задач в крупных компьютерных кластерах. В том же 2013 году на сцене появился Docker — ключевой участник истории развития Kubernetes.

Docker открывает эру контейнеризации с открытым исходным кодом
Система Docker, разработанная компанией dotCloud (поставщиком технологий класса «платформа как услуга» — PaaS), была представлена ​​в 2013 году как программный инструмент с открытым исходным кодом. Она позволила разработчикам создавать, развертывать и обслуживать приложения в контейнерах.

Технология контейнеров Docker использует ядро ​​Linux (базовый компонент операционной системы) и его функциональные возможности для изоляции процессов, благодаря чему они могут выполняться независимо друг от друга. Стоит уточнить: название Docker относится не только к самой технологии, но и к компании Docker, Inc. (ранее dotCloud), которая разрабатывает инструменты для повышения эффективности на базе своей платформы контейнеризации, а также к экосистеме и сообществу Docker, развивающим этот проект с открытым исходным кодом.

Популяризировав легковесную среду выполнения контейнеров и предложив простой способ упаковки, распространения и развертывания приложений, Docker послужил источником вдохновения для создателей Kubernetes. Когда Docker появился на рынке, сотрудники Google Крейг Маклаки, Джо Беда и Брендан Бернс высоко оценили его способность создавать отдельные контейнеры и запускать их на отдельных машинах.

Несмотря на то что Docker произвел революцию в сфере облачных инфраструктур, у него были свои ограничения: он был спроектирован для работы на одном узле, что исключало возможность автоматизации. Например, при создании приложений, состоящих из тысяч отдельных контейнеров, управление ими в различных средах становилось сложной задачей, поскольку каждый компонент приходилось упаковывать вручную. Команда Google увидела потребность — и возможность — в создании системы оркестрации контейнеров, способной развертывать и обслуживать множество контейнеров на разных машинах. Так появилась система управления контейнерами третьего поколения от Google — Kubernetes.

Зарождение KubernetesМногие разработчики Kubernetes ранее участвовали в создании системы Borg. Они стремились разработать инструмент для оркестрации контейнеров, который вобрал бы в себя весь опыт, полученный при проектировании и создании систем Borg и Omega. Целью было создание менее сложного решения с открытым исходным кодом и удобным пользовательским интерфейсом (UI). В качестве отсылки к Borg проект получил название «Project Seven of Nine» («Проект «Семь из девяти»») — в честь персонажа сериала «Звёздный путь: Вояджер» (Star Trek: Voyager), бывшей участницы коллектива Боргов. Хотя первоначальное название не прижилось, память о нём сохранилась в логотипе Kubernetes: он содержит семь точек.Устройство кластера KubernetesАрхитектура Kubernetes основана на работе кластеров, которые позволяют запускать контейнеры на множестве машин и в различных средах. Каждый кластер обычно состоит из узлов (нод) двух типов:Рабочие узлы (worker nodes), на которых выполняются контейнеризированные приложения.Узлы плоскости управления (control plane nodes), которые управляют кластером.Плоскость управления (control plane) фактически выступает в роли оркестратора кластера Kubernetes. В её состав входят несколько компонентов: сервер API (управляет всеми взаимодействиями с Kubernetes), менеджер управления (отвечает за все процессы управления), менеджер облачных контроллеров (интерфейс для взаимодействия с API облачного провайдера) и другие. На рабочих узлах контейнеры запускаются с помощью специальных сред выполнения (container runtimes), таких как Docker. Поды (pods) — наименьшие развертываемые единицы в кластере — содержат один или несколько контейнеров приложений и совместно используют такие ресурсы, как хранилище и сетевые настройки.

Выход Kubernetes в открытый доступ В 2014 году Kubernetes дебютировал как версия системы Borg с открытым исходным кодом. Компании Microsoft, Red Hat®, IBM и Docker стали одними из первых участников сообщества Kubernetes. Программный инструмент включал базовые функции для оркестрации контейнеров, в том числе: —

  • Репликацию — для развертывания нескольких экземпляров приложения.

  • Балансировку нагрузки и обнаружение сервисов (service discovery).

  • Базовые механизмы проверки работоспособности и восстановления.

  • Планирование — для объединения множества машин в единую систему и распределения задач между ними.

    В 2015 году на конференции O’Reilly Open Source Convention (OSCON) создатели Kubernetes представили расширенную и доработанную версию — Kubernetes 1.0. Вскоре после этого к команде Google присоединились разработчики из проекта Red Hat OpenShift®, привнеся в работу над Kubernetes свой инженерный опыт и знания в области корпоративных решений.

    История Kubernetes и фонда Cloud Native Computing Foundation

    Одновременно с выпуском Kubernetes 1.0 в 2015 году компания Google передала проект фонду Cloud Native Computing Foundation (CNCF), который является частью некоммерческой организации Linux Foundation. Фонд CNCF был создан совместными усилиями представителей ведущих мировых технологических компаний, включая Docker, Google, Microsoft, IBM и Red Hat. Миссия CNCF заключается в том, чтобы «сделать облачные технологии (cloud-native computing) повсеместными».

    В 2016 году Kubernetes стал первым проектом, принятым под эгиду CNCF, а к 2018 году — первым проектом фонда, успешно прошедшим все этапы развития (получившим статус «выпускника» — graduated project). Число компаний, активно участвующих в разработке, быстро превысило 700, и Kubernetes стал одним из самых быстрорастущих проектов с открытым исходным кодом в истории.

    К 2017 году он обошел таких конкурентов, как Docker Swarm и Apache Mesos, став отраслевым стандартом для оркестрации контейнеров.

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

    Продолжающееся влияние Kubernetes

    История Kubernetes — переносимой, расширяемой платформы с открытым исходным кодом, предназначенной для управления контейнеризированными рабочими нагрузками и микросервисами, — продолжает развиваться. С момента присоединения Kubernetes к CNCF в 2016 году число участников проекта выросло до 8012 человек, что составляет увеличение на 996% (ссылка ведет на внешний ресурс, не принадлежащий ibm.com). Главная международная конференция CNCF — KubeCon + CloudNativeCon (ссылка ведет на внешний ресурс, не принадлежащий ibm.com) — ежегодно собирает тысячи участников и служит площадкой для обмена информацией и опытом между разработчиками и пользователями по вопросам Kubernetes и других тенденций в сфере DevOps.Процессы облачной трансформации и модернизации приложений, в которых активно используется Kubernetes, не демонстрируют признаков замедления. Согласно отчету Gartner «Руководство по контейнерам и Kubernetes для технических директоров» (The CTO’s Guide to Containers and Kubernetes; ссылка ведет на внешний ресурс, не принадлежащий ibm.com), к 2027 году более 90% организаций по всему миру будут использовать контейнеризированные приложения в промышленной эксплуатации.IBM и KubernetesЕще в 2014 году компания IBM одной из первых среди крупных корпораций начала сотрудничать с сообществом разработчиков Kubernetes, способствуя внедрению технологий оркестрации контейнеров в бизнес-среде. Сегодня IBM помогает компаниям на пути к облачным технологиям, внедряя системы оркестрации контейнеров Kubernetes и другие облачные решения для управления инфраструктурой.Независимо от того, стоит ли перед вами задача разработки облачно-ориентированных (cloud-native) приложений, развертывания масштабных систем или управления микросервисами, мы поможем вам эффективно использовать Kubernetes и его широкие функциональные возможности.Платформа Red Hat OpenShift в среде IBM Cloud® предоставляет разработчикам OpenShift быстрый и безопасный способ контейнеризации и развертывания корпоративных рабочих нагрузок в кластерах Kubernetes.IBM Cloud Code Engine — полностью управляемая бессерверная (serverless) платформа, позволяющая запускать контейнеры, программный код приложений или пакетные задания в полностью обслуживаемой среде выполнения контейнеров.

Author

StephanieStephanie

Stephanie Susnjara

Staff Writer

IBM Think

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев