This is the Trace Id: d15ef16bb70fd2b205e211dfb714e24a
Перейти к основному контенту
Azure
градиентный фон

Что такое Kubernetes?

Узнайте, как запускать контейнеры, автоматизируя их развертывание, управление и масштабирование.

Определение Kubernetes

Kubernetes — это программное обеспечение с открытым исходным кодом, которое автоматизирует развертывание, управление и масштабирование контейнеризированных приложений. Система управляет кластерами виртуальных машин, планирует размещение контейнеров, а также обеспечивает функции самовосстановления, балансировки нагрузки и переносимости между различными средами.

Основные выводы

  • Kubernetes — это платформа, которая помогает запускать, контролировать и масштабировать контейнерные рабочие нагрузки на нескольких серверах в кластере.
  • Система объединяет контейнеры в Pod, а уровень управления отвечает за планирование и работу контроллеров, поддерживающих целевое состояние.
  • Система обеспечивает обнаружение сервисов, балансировку нагрузки, автоматическое масштабирование и самовосстановление (перезапуск, замену и перепланирование).
  • Команды используют его для развертывания переносимых релизов в различных средах, а также для отслеживания показателей работоспособности и стабильности.

Описание Kubernetes

Kubernetes — это программное обеспечение с открытым исходным кодом, которое используется в DevOps для развертывания, управления и масштабирования контейнеров в кластере. Docker — еще одна технология с открытым исходным кодом — представляет собой стандартный формат файлов контейнеров, широко используемый совместно с Kubernetes.

Контейнеры

Контейнеры объединяют приложение вместе с его зависимостями и конфигурацией, обеспечивая его стабильную работу в различных средах. По мере развития приложения вам может потребоваться запускать множество контейнеров на множестве серверов, и координировать все это вручную становится сложно. Kubernetes решает эту проблему сложности с помощью API с открытым исходным кодом и системы управления, которая определяет, что и где должно выполняться, и обеспечивает непрерывную работу этих процессов.

Что Kubernetes делает для вас

Планирование и распределение ресурсов

Kubernetes управляет кластерами виртуальных машин и планирует запуск контейнеров с учетом доступных вычислительных ресурсов и потребностей каждого контейнера в ресурсах.

Обнаружение сервисов и балансировка нагрузки

Kubernetes управляет обнаружением сервисов и балансировкой нагрузки, обеспечивая маршрутизацию трафика к нужным Pod, даже когда Pod со временем меняются.

Масштабирование в соответствии со спросом

Kubernetes масштабирует рабочие нагрузки на основе использования вычислительных ресурсов и заданного вами целевого состояния.

Самовосстановление при сбое

Kubernetes проверяет состояние ресурсов и может перезапускать или реплицировать контейнеры при возникновении проблем. Система перезапускает или заменяет отказавшие контейнеры и приостанавливает передачу трафика до тех пор, пока рабочие нагрузки не будут готовы к работе.

Поддерживает контролируемые изменения

Kubernetes поддерживает различные шаблоны развертывания приложений, включая автоматическое развертывание и откат изменений на основе описанного вами целевого состояния.

Управление конфигурациями и секретами

Kubernetes обеспечивает управление секретами и конфигурациями для конфиденциальной информации, такой как пароли или токены.

оркестрация хранилища

Kubernetes позволяет подключать выбранные вами системы хранения (например, локальные хранилища или решения в публичных облаках), опираясь на модель оркестрации хранилищ Kubernetes.

Краткий глоссарий объектов

Kubernetes построен на основе объектов API — ресурсов, которые вы объявляете и которыми управляете. Вот несколько из них:

  • Pod: базовая единица, запускающая один или несколько контейнеров.

  • Служба: надежный способ предоставить доступ к приложению и маршрутизировать трафик к динамически меняющимся Pod.

  • Развертывание: способ описания желаемого состояния приложения и его обновления с течением времени (часто связано с процессами развертывания и отката).

  • Узел: компьютер в кластере, на котором работают Pod.

  • Уровень управления: компоненты, управляющие состоянием кластера и принятием решений о планировании.

Как все это работает вместе

  1. Вы описываете желаемое состояние вашего приложения (что должно быть запущено, количество копий, потребности в ресурсах).

  2. Уровень управления фиксирует этот запрос и выполняет соответствующие действия, используя API Kubernetes и базовое хранилище.

  3. Планиров­щик размещает Pod на узлах с достаточными ресурсами.

  4. Компоненты узла выполняют рабочую нагрузку.

  5. Контроллеры непрерывно выполняют сверку, чтобы фактическое состояние соответствовало целевому, при необходимости масштабируя, заменяя и обновляя рабочие нагрузки.

Архитектура Kubernetes

Основные структурные блоки

Кластер: уровень управления и рабочие узлы

Кластер Kubernetes обычно описывается как состоящий из двух частей: уровня управления, который управляет кластером, и рабочих узлов, на которых выполняются рабочие нагрузки.

Компоненты уровня управления

Эти компоненты управляют общим состоянием кластера:

  • kube-apiserver: Предоставляет доступ к HTTP API Kubernetes (входная точка для запросов).

  • etcd: согласованное и высокодоступное хранилище типа "ключ-значение" для данных кластера.

  • kube-scheduler: находит Pod, требующие размещения, и назначает их на узел.

  • kube-controller-manager: запускает контроллеры, которые приводят фактическое состояние в соответствие с желаемым.

  • Cloud-controller-manager (необязательно): связывает Kubernetes с логикой управления, специфичной для облачного провайдера.

Компоненты узла

На каждом рабочем узле выполняется программное обеспечение, которое управляет Pod и сетевыми правилами:

  • kubelet: обеспечивает работу Pod на узле, включая их контейнеры.

  • kube-proxy (необязательный компонент): поддерживает сетевые правила для обеспечения работы служб.

  • среда выполнения контейнера: запускает контейнеры на узле.

Pod: базовая единица работы

Kubernetes не планирует отдельные контейнеры напрямую в абстрактном виде. Он объединяет один или несколько контейнеров в Pod, который становится базовой единицей эксплуатации. Затем Pod масштабируются в большую или меньшую сторону в соответствии с заданным вами целевым состоянием.

На практике это означает:

  1. Вы описываете приложение, которое нужно запустить.

  2. Kubernetes размещает Pod на узлах, располагающих свободными вычислительными ресурсами.

  3. Контроллеры обеспечивают переход кластера к заданному вами состоянию.

сетевые функции службы

Pod могут появляться и исчезать, поэтому Kubernetes предоставляет примитивы — базовые строительные блоки, комбинируя которые можно описывать и запускать приложения в кластере, — обеспечивающие надежные способы доступа к рабочим нагрузкам.

Основы сетей Pod

Каждый Pod получает собственный IP-адрес, уникальный в масштабах кластера, и поды могут взаимодействовать между узлами без использования трансляции сетевых адресов (NAT) в рамках сетевой модели Kubernetes.

Услуги

Service API предоставляет стабильный IP-адрес или имя узла для группы Pod серверной части, даже если отдельные Pod со временем меняются.

EndpointSlice

Kubernetes поддерживает объекты EndpointSlice для отслеживания того, какие Pod в данный момент обеспечивают работу сервиса.

Ingress API / Gateway API

Для предоставления доступа к сервисам клиентам за пределами кластера Kubernetes поддерживает Gateway API (а также Ingress — его предшественник).

Сервисы балансировщика нагрузки

В некоторых средах можно открыть доступ к сервису извне, используя тип службы LoadBalancer.

Дополнения, которые можно запустить в кластере

Кластеры Kubernetes часто включают в себя дополнения, расширяющие функциональность за пределы базовых компонентов. Примеры:

  • DNS для разрешения имен в масштабе кластера.

  • Веб-интерфейс (панель управления) для администрирования кластера.

  • Мониторинг ресурсов контейнеров для сбора метрик.

  • Логирование на уровне кластера для централизованного сбора логов.

Как работает Kubernetes?

Kubernetes запускает контейнеризированные приложения на кластере машин и поддерживает их в том состоянии, которое вы описываете. Система делает это, распределяя задачи на подходящие машины, направляя трафик в нужные узлы и отслеживая сбои и изменения.

Базовый поток

1. Вы описываете то, что хотите запустить

Большинство рабочих нагрузок в Kubernetes начинаются с объявления "желаемого состояния" (что именно должно быть запущено, сколько экземпляров и каким образом они должны быть доступны). Kubernetes построен на принципах декларативной конфигурации и автоматизации.

2. Kubernetes определяет, где это должно выполняться

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

3. Kubernetes постоянно сверяет реальное состояние с желаемым

Контроллеры отслеживают состояние кластера и стремятся приблизить текущее состояние к целевому, внося изменения через API-сервер.

Планирование размещения и текущее управление контейнерами

Планирование — это решение вопроса: "Где это должно выполняться?" решение.

1. Планируются Pod, а не отдельные контейнеры

Kubernetes группирует контейнеры в Pod, а затем размещает эти Pod на машинах.

2. Планиров­щик назначает Pod на подходящий узел

kube-scheduler ищет Pod, которым еще не назначен узел, и выбирает для них узел.

3. Агенты узлов поддерживают работу Pod

На каждом узле kubelet следит за тем, чтобы Pod (включая их контейнеры) были запущены.

Балансировка нагрузки и обнаружение служб

Контейнеры и Pod могут создаваться, перемещаться или заменяться, поэтому приложениям необходимы надежные способы нахождения друг друга.

Обнаружение сервисов и балансировка нагрузки — это встроенные функции

Kubernetes управляет обнаружением сервисов и использует балансировку нагрузки, что позволяет маршрутизировать трафик даже при изменении Pod с течением времени.

Службы предоставляют постоянный адрес для меняющегося набора Pod

Service API предоставляет стабильный IP-адрес или имя узла для службы, поддерживаемой одним или несколькими Pod, а Kubernetes отслеживает эти Pod с помощью объектов EndpointSlice.

Обновление маршрутизации трафика при изменении Pod

При изменении Pod, стоящих за службой, маршрутизация службы адаптируется, благодаря чему трафик продолжает поступать на актуальные серверные части.

Масштабирование приложений (и почему важно понятие "целевого состояния")

Kubernetes может масштабировать рабочие нагрузки до заданного вами состояния, в том числе на основе уровня использования вычислительных ресурсов.

К числу распространенных идей по масштабированию относятся:

  • Больше реплик (больше Pod) для обработки возросшего спроса.

  • Меньше реплик при снижении спроса.

  • Отслеживание ресурсов, поэтому решения о размещении учитывают потребности в процессоре и памяти.

Это возвращает нас к модели "желаемого состояния": вы задаете целевое состояние, а контроллеры продолжают работать над его достижением.

Самовосстановление: что происходит, когда что-то ломается

Kubernetes включает механизмы самовосстановления, призванные поддерживать работоспособность и доступность рабочих нагрузок. К ним относятся:

  • Перезапуск сбойных контейнеров (перезапуск на уровне контейнера).

  • Замена сбойных Pod для поддержания требуемого числа реплик (замена реплик).

  • Перераспределение рабочих нагрузок при недоступности узлов.

  • Удаление неисправных Pod из конечных точек службы, чтобы трафик направлялся только на исправные Pod (балансировка нагрузки для служб).

Функция самовосстановления отслеживает состояние контейнеров и перезапускает или реплицирует их при возникновении проблем.

Роль KPI в Kubernetes

Ключевые показатели эффективности (КПЭ, или метрики) используются для оценки состояния кластера и характера рабочей нагрузки.

Откуда берутся КПЭ

  • Системные компоненты Kubernetes генерируют метрики (в формате Prometheus), которые полезны для создания панелей мониторинга и настройки оповещений.

  • Метрики обычно доступны через конечную точку /metrics компонента по HTTP, включая такие компоненты, как kube-apiserver, kube-scheduler, kubelet, kube-proxy и kube-controller-manager.

Примеры того, что помогают выявить КПЭ

  • Сигналы о состоянии кластера (метрики на уровне компонентов и шаблоны ошибок)

  • Стабильность рабочей нагрузки (например, частые перезапуски или замены)

  • Нагрузка на емкость (выделение ресурсов и спрос, привязанные к решениям масштабирования)

Почему это важно для ежедневной работы

Мониторинг обеспечивает командам более полное представление о ресурсах кластера, API Kubernetes, контейнерах и логах, что сокращает цикл обратной связи между возникновением проблемы и ее устранением.

Преимущества и варианты использования

Kubernetes часто выбирают, когда командам требуется унифицированный способ запуска множества контейнеров на большом количестве машин, при этом перекладывая задачи маршрутизации трафика, масштабирования и восстановления на платформу.

Масштабируемость

Kubernetes способен масштабировать рабочие нагрузки — то есть увеличивать или уменьшать их объем в зависимости от изменения спроса — для достижения целевого состояния, а также выполнять масштабирование на основе уровня использования вычислительных ресурсов.

Типичные варианты использования

  • Веб-приложения с переменным трафиком (рекламные кампании, сезонные пики): регулировка количества реплик в зависимости от изменения нагрузки.

  • Пакетная обработка или обработка на основе событий: увеличение мощности для пиковых нагрузок с последующим ее снижением.

  • Микрослужбы: масштабируйте отдельные службы без масштабирования всего приложения.

Эффективное использование ресурсов

Kubernetes поддерживает автоматическую плотную упаковку — размещение контейнеров на узлах с учетом потребностей в ресурсах ЦП и памяти для более эффективного использования доступных ресурсов. Кроме того, система отслеживает распределение ресурсов в процессе управления рабочими нагрузками.

Типичные варианты использования

  • Общие кластеры для нескольких команд: сократите потери ресурсов, размещая рабочие нагрузки там, где есть доступные ресурсы.

  • Кластеры со смешанной рабочей нагрузкой (службы и задания): обеспечение загрузки узлов без ручного размещения.

Обнаружение сервисов и балансировка нагрузки

Kubernetes позволяет предоставлять доступ к рабочим нагрузкам с использованием DNS или IP-адреса, а также распределять сетевой трафик для обеспечения стабильности развертываний. Система также управляет обнаружением служб и обеспечивает балансировку нагрузки при изменении рабочих нагрузок.

Типичные варианты использования

  • Взаимодействие микрослужб: службы находят друг друга по постоянным именам, даже когда поды меняются.

  • Внутренние API за стабильной конечной точкой: маршрутизация трафика только на актуальные серверные части.

Самовосстановление

Kubernetes предназначен для замены сбойных контейнеров, перепланирования рабочих нагрузок при недоступности узлов и поддержания целевого состояния. Примеры включают перезапуск контейнеров, замену реплик и исключение неисправных подов из конечных точек обслуживания, чтобы трафик направлялся только на исправные Pod.

Типичные варианты использования

  • Службы непрерывной работы: перезапуск или замена отказавших экземпляров без вмешательства вручную.

  • Кластеры с частой сменой узлов: перепланирование рабочих нагрузок при выходе узла из строя.

  • Службы за службой: прекращение маршрутизации трафика на неработоспособные поды.

Более безопасные выпуски

Kubernetes поддерживает автоматизированное развертывание и откат. Вы описываете желаемое состояние, а Kubernetes переводит фактическое состояние к нему с контролируемой скоростью.

Типичные варианты использования

  • Частые обновления приложения: внедряйте изменения постепенно, а при необходимости — откатывайте их.

  • Команды, выпускающие несколько служб: обеспечьте единообразие механизмов выпуска для всех приложений.

Портативность

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

Типичные варианты использования

  • Идентичность сред разработки, тестирования и эксплуатации: используйте единые модели упаковки и планирования во всех средах.

  • Гибридные развертывания: запуск части системы локально, а другой части — в облаке с использованием единого подхода к оркестрации.

Начать работу с Kubernetes

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

Почему это по-прежнему важно для ориентированных на облако приложений

По мере того как команды создают системы, состоящие из множества сервисов, кратковременных рабочих нагрузок и часто обновляемых компонентов, Kubernetes остается практичной основой, поскольку ориентирован на воспроизводимые операции:

  • Единообразие работы в различных средах (контейнеры упакованы вместе с зависимостями и запускаются одинаково в любых средах).

  • Обширная, активная экосистема с широким доступом к услугам, поддержке и инструментам.

  • Возможность расширения за счет создаваемых сообществом дополнений и плагинов, а также программы обеспечения соответствия, гарантирующей согласованность базовых API в различных версиях.

Если вы создаете или запускаете рабочие нагрузки, Azure Kubernetes Service (AKS) помогает развертывать контейнеризированные приложения и управлять ими, при этом Azure берет на себя управление уровнем управления.

градиентный фон
Ресурсы
Разработка

Ресурсы Azure

Изучайте новейшие технологии для разработчиков и осваивайте новые навыки.
Обучение

Общие сведения о Kubernetes

Этот курс знакомит с типами бизнес-задач, которые можно решать с помощью Kubernetes.
Образование

Microsoft Azure для учащихся

Приобретите навыки, которые помогут вам ускорить свою карьеру с первых шагов и изменить мир к лучшему.
Вопросы и ответы

Вопросы и ответы

  • Kubernetes используется для развертывания, управления и масштабирования контейнеризированных приложений в кластере. Система планирует выполнение рабочих нагрузок с учетом доступных вычислительных ресурсов, маршрутизирует трафик, используя механизмы обнаружения сервисов и балансировки нагрузки, а также обеспечивает непрерывную работу приложений, перезапуская или заменяя отказавшие контейнеры.
  • Kubernetes обычно используется разработчиками и администраторами платформ, которые запускают контейнеризированные приложения. Если вы хотите сократить объем работ по обслуживанию плоскости управления, можно воспользоваться управляемым сервисом, таким как Azure Kubernetes Service (AKS): он возьмет на себя управление этой плоскостью, а вы сможете сосредоточиться на узлах и приложениях.
  • Да. Kubernetes позволяет запускать контейнеризированные приложения на локальной или автономной инфраструктуре, а также поддерживает гибридные и многооблачные конфигурации. Контейнеры сохраняют переносимость, поскольку приложение упаковывается отдельно от базовых компьюте­ров.
  • На это может потребоваться время, поскольку существует несколько ключевых понятий (кластеры, узлы, Pod, сервисы). Начните с основ, затем закрепите знания на практике, развернув небольшое приложение, и следуйте пошаговому плану обучения, чтобы обрести уверенность.