Часто Kubernetes описывают как операционную систему для облака: решение представляет собой платформу с открытым исходным кодом для управления кластерами контейнерных приложений и сервисов. Решение Kubernetes, разработанное инженерами Google Джо Бедой (Joe Beda), Бренданом Бернсом (Brendan Burns) и Крейгом Мак-Лаки (Craig McLuckie) в 2014 году и выпущенное с открытым исходным кодом вскоре после этого, быстро стало самостоятельной, активно развивающейся экосистемой cloud native. Сегодня Kubernetes (древнегр. «кормчий», «штурман») управляется Cloud Native Computing Foundation (CNCF), подразделением Linux Foundation.
Kubernetes стал первым выпускным проектом CNCF, и одним из самых быстро растущих проектов с открытым исходным кодом в истории. Над Kubernetes теперь работают более 2300 участников, и широко используется крупными и малыми компаниями, в том числе половиной Fortune 100.
Начнем с нескольких ключевых терминов, связанных с Kubernetes. На странице стандартного глоссария Kubernetes доступен более исчерпывающий список. Также можно использовать шпаргалку Kubernetes, которая содержит список часто используемых команд и флагов kubectl.
Набор машин, которые по отдельности называются узлами, используемый для выполнения контейнеризированных приложений под управлением Kubernetes.
Это виртуальная или физическая машина. Кластер состоит из главного узла и ряда рабочих узлов.
Образ, содержащий программное обеспечение и его зависимости.
Является одним контейнером или набором контейнеров, запущенным в Вашем кластере Kubernetes.
Объект, управляющий реплицированными приложениями, представленными отсеками. Отсеки развертываются на узлах кластера.
Обеспечивает одновременное выполнение указанного числа реплик отсеков.
Описывает способ доступа к приложениям, представленным набором отсеков. Сервисы обычно описывают порты и балансировщики нагрузки и могут использоваться для управления внутренним и внешним доступом к кластеру.
KubeCon — это ежегодная конференция для разработчиков и пользователей Kubernetes. С момента первого KubeCon в 2015 году, где было 500 участников, KubeCon стал важным мероприятием для сообщества cloud native технологий. В 2019 году в Сан-Диего в калифорнийской версии KubeCon приняли участие 12 000 разработчиков и инженеров по надежности сайтов, которые отмечали расширение экосистемы с открытым исходным кодом на базе облачной платформы оркестровки Kubernetes.
По мере того как разработчики все больше развертывают программное обеспечение для разнообразных вычислительных сред с разными облаками, тестовыми средами, ноутбуками, устройствами, операционными системами и платформами, проблема надежной работы программного обеспечения приобретает первостепенное значение. Именно здесь в дело вступают контейнеры: они объединяют приложение со всей средой выполнения. В этом смысле контейнеры представляют собой разновидность виртуализации, обеспечивая своего рода «пузырь», со всеми необходимыми библиотеками, зависимостями и операционными системами. Но контейнеры меньше виртуальных машин, потому что содержат только ресурсы, необходимые для приложения, и ничего больше.
Хотя контейнеры Linux существовали с 2008 года, известность им принесло появление контейнеров Docker в 2013 году. Точно так же взрыв интереса к развертыванию контейнерных приложений — приложений, содержащих все необходимое для работы — в конечном итоге создал новую проблему: управление тысячами контейнеров. Kubernetes автоматически управляет жизненным циклом контейнера, распределяя контейнеры по хостинговой инфраструктуре. Kubernetes масштабирует ресурсы вверх или вниз в зависимости от потребностей. Содержит положения, графики, удаления и мониторинг состояния контейнеров.
Ключевыми компонентами Kubernetes являются кластеры, узлы и плоскость управления. Кластеры содержат узлы. Каждый узел состоит из набора минимум с одним рабочим компьютером. На узлах размещаются отсеки, содержащие элементы развернутого приложения. Плоскость управления позволяет управлять узлами и отсеками в кластере, часто на множестве компьютеров, обеспечивая высокую доступность.
Область управления содержит следующие элементы:
Компоненты узла включают в себя:
Контейнеры дают уверенность, что приложения укомплектованы всем необходимым для работы. Однако по мере добавления контейнеров, которые часто содержат микросервисы, можно автоматически управлять ими и распространять их с помощью Kubernetes.
Kubernetes позволяет компаним:
выполнять автоматическое масштабирование | расширять или сокращать развертывания в зависимости от потребностей. |
Знакомство с сервисами | Поиск сервисов в контейнерах с помощью DNS или IP-адреса. |
Балансировка нагрузки | Стабилизируйте развертывание, распределяя сетевой трафик. |
Управление хранилищем | Выберите локальное или облачное хранилище. |
Управление версиями | Выберите типы контейнеров, которые планируется запускать и которые следует заменить, используя новые ресурсы образа или контейнера. |
Обеспечение безопасности | Безопасное обновление паролей, маркеров OAuth и ключей SSH, связанных с конкретными образами контейнеров. |
Хотя среда Kubernetes отличается высокой гибкостью и способна поддерживать приложения любого типа, она трудна в понимании и использовании. Kubernetes не всегда является оптимальным решением для заданной нагрузки, по мнению ряда членов CNCF. Именно поэтому экосистема Kubernetes содержит ряд связанных инструментов cloud native, созданных компаниями для решения проблем с конкретными нагрузками.
Kubernetes развертывает контейнеры, а не исходный код и не создает приложения. Для журналирования, промежуточного ПО, мониторинга, настройки, непрерывной интеграции и развертывания ПО и многих других производственных операций необходимы дополнительные инструменты. Таким образом, Kubernetes является расширяемой и отлично подходит для самых разных сценариев использования: от авиации до машинного обучения. По сути, поставщики облачных решений, включая Oracle, Google, Amazon Web Services и другие, использовали собственные возможности расширения Kubernetes для создания управляемой среды Kubernetes, которая обеспечивает сокращение сложности и повышение производительности разработчиков.
Наша облачная инфраструктура Container Engine for Kubernetes — это удобный для разработчиков управляемый сервис с возможностью использования для развертывания контейнерных приложений в облаке. Используйте Container Engine for Kubernetes для надежного создания и развертывания cloud native приложений и управления ими. Вы указываете вычислительные ресурсы, необходимые для приложений, и Container Engine for Kubernetes их инициализирует в существующей области аренды облачной инфраструктуры.
Хотя Вам не требуется использовать управляемый сервис Kubernetes, наш Container Engine for Kubernetes предлагает простой способ запуска высокодоступных кластеров с возможностями управления, безопасности и предсказуемой производительностью Oracle Cloud Infrastructure. Container Engine for Kubernetes поддерживает как выделенные серверы Bare Metal, так и виртуальные машины в качестве узлов и сертифицируется в соответствии с требованиями CNCF. Вы также получаете все обновления Kubernetes, и сохраняется совместимость с экосистемой CNCF без дополнительных трудозатрат с Вашей стороны.
Oracle является платиновым участником фонда Cloud Native Computing Foundation (CNCF) — сообщества открытого кода, поддерживающего несколько десятков проектов по разработке программного обеспечения, организованных по уровню зрелости. Выпущенные проекты (Kubernetes, Promteus, Envoy, CoreDNS, containerd, Fluentd, Jaeger, Vitess, TUF и Helm) имеют неоценимую ценность для ряда аспектов освоения cloud native технологий.
Вокруг Kubernetes выросла мощная экосистема поддержки проектов, охватывающих все соответствующие сферы. Ландшафт может сбить с толку, и в поиске ответов на простые вопросы можно совершенно запутаться. Однако первые шаги на этом пути просты, и, начав с них, можно постепенно углубляться в более сложные вещи по мере необходимости. Узнайте, как выполнить следующие действия.
Разработчики, которые хотят сделать свой первый проект Kubernetes, могут обратиться к нашему порталу разработчиков, где есть информация о том, как создать свое первое Arm-приложение на Kubernetes или развернуть кластер Kubernetes с использованием облачной оболочки.