Открыть сервисСервис

Kubernetes — система оркестровки контейнеров

Kubernetes (сокр. K8s) — открытая система оркестровки контейнеров, разработанная Google и переданная в 2014 году в управление Cloud Native Computing Foundation (CNCF). Она автоматизирует развёртывание, масштабирование и управление контейнеризированными приложениями, объединяя физические и виртуальные машины в единый вычислительный кластер. Название происходит от греческого слова, означающего «кормчий» или «рулевой».

История

Проект был начат в Google в 2003–2004 годах как внутренняя система оркестровки Borg, а затем Omega. Опыт эксплуатации этих систем привёл к созданию в 2014 году открытого проекта Kubernetes, который был анонсирован на конференции DockerCon. Инициаторами выступили инженеры Google Брендан Бёрнс, Джо Беда и Крейг Маклюк. В 2015 году исходный код был передан CNCF, которая с тех пор курирует развитие проекта. С 2016 года Kubernetes стал фактическим стандартом оркестровки контейнеров в индустрии.

Основные понятия

Kubernetes работает с абстракциями, описывающими состояние приложений:

Вся информация о состоянии кластера хранится в etcd — распределённом хранилище ключей со значениями.

Архитектура

Управляющая плоскость (control plane) включает:

  • kube-apiserver — фронтенд для всех операций с кластером;
  • kube-scheduler — назначение подов на узлы с учётом ресурсов;
  • kube-controller-manager — набор контроллеров, отвечающих за желаемое состояние (репликации, узлы, эндпоинты);
  • etcd — база состояния кластера.

На каждом рабочем узле работает kubelet, отвечающий за запуск подов, и kube-proxy, обеспечивающий сетевое взаимодействие. Для изоляции контейнеров используются рантаймы, поддерживающие стандарт containerd или CRI-O, а также механизмы Linux-контейнеризации (namespaces, cgroups).

Сетевые возможности

Сетевое взаимодействие в Kubernetes реализуется через плагины CNI (Container Network Interface). Среди распространённых решений — Calico, Cilium, Flannel и Weave Net. Для балансировки входящего трафика используются объекты LoadBalancer и Ingress, а с 1.19 года — Gateway API. Сетевая модель Kubernetes предполагает, что каждый под получает собственный IP-адрес, а коммуникация между подами не требует NAT.

Управление и декларативность

Основной принцип работы Kubernetes — декларативное описание желаемого состояния. Пользователь описывает ресурсы в формате YAML или JSON и применяет их к API-серверу. Контроллеры непрерывно сверяют фактическое состояние с заданным и принимают меры по устранению расхождений. Этот подход обеспечивает самовосстановление: при отказе пода система автоматически создаёт замену.

Масштабирование и автоскалирование

Kubernetes поддерживает горизонтальное масштабирование (HPA — Horizontal Pod Autoscaler) на основе загрузки CPU, памяти или пользовательских метрик, а также вертикальное (VPA — Vertical Pod Autoscaler). Кластер может масштабироваться с помощью Cluster Autoscaler, добавляющего узлы при нехватке ресурсов.

Экосистема и распространение

Вокруг Kubernetes сформировалась обширная экосистема проектов CNCF, включая Helm (пакетный менеджер), Prometheus (мониторинг), Istio (сервис-меш), ArgoCD и Flux (GitOps). Среди крупных российских дистрибутивов — «Ред ОС» и «Альт», включающие собственные сборки Kubernetes. В России разработаны и поддерживаются дистрибутивы на основе Kubernetes для государственных и корпоративных инфраструктур, в том числе в рамках импортозамещения.

Применение

Kubernetes применяется в облачных платформах (Google Kubernetes Engine, Yandex Managed Kubernetes, Selectel, Timeweb Cloud), в промышленной разработке для развёртывания микросервисной архитектуры, в машинном обучении (Kubeflow), а также в высоконагруженных информационных системах. По данным CNCF, к 2023 году Kubernetes использовался более чем в 90 % организаций, внедривших контейнерные технологии.

Источники

  • Documentation of the Kubernetes project (kubernetes.io)
  • Cloud Native Computing Foundation — Kubernetes project page
  • Burns B., Beda J., Hightower K. «Kubernetes: Up and Running». O'Reilly Media, 2017
  • Статьи журнала «Открытые системы» о контейнерных технологиях
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru