Блог

Kubernetes изнутри: что происходит, когда вы деплоите контейнер

· 2 мин чтения

Control Plane, Worker Nodes, etcd, kubelet — слова знакомые, но мало кто может объяснить, как они связаны. Разбираем архитектуру K8s от первого запроса до живого пода.

Kubernetes изнутри: что происходит, когда вы деплоите контейнер

Kubernetes изнутри: что происходит, когда вы деплоите контейнер

Control Plane, Worker Nodes, etcd, kubelet — слова знакомые, но мало кто может объяснить, как они связаны. Разбираем архитектуру K8s от первого запроса до живого пода.

Kubernetes управляет тысячами контейнеров в продакшене у Netflix, Spotify и половины корпоративного мира. При этом его архитектура на удивление логична — если один раз разобраться, как устроены её части.

Два мира: Control Plane и Worker Nodes

Весь кластер делится на две зоны ответственности. Control Plane — мозг системы: принимает решения, хранит состояние, раздаёт команды. Worker Nodes — мышцы: здесь реально запускаются ваши контейнеры.

Control Plane

API Server

Единственная точка входа. Все компоненты говорят только через него.

Control Plane

etcd

Распределённое хранилище состояния кластера. Потерял etcd — потерял всё.

Control Plane

Scheduler

Решает, на какой ноде запустить под с учётом ресурсов и ограничений.

Control Plane

Controller Manager

Следит за состоянием: если упал под — поднимает новый.

Worker Node

Kubelet

Агент на ноде. Получает инструкции от API Server и запускает поды.

Worker Node

Kube Proxy

Управляет сетевыми правилами. Обеспечивает связность между подами.

Компонент Cloud Controller Manager — это мост между кластером и облачным провайдером (AWS, GCP, Azure). Он умеет автоматически создавать Load Balancer или Persistent Volume прямо через API облака.

Жизнь пода: от kubectl до запущенного контейнера

Когда вы пишете kubectl apply -f deployment.yaml, запрос идёт в API Server. Тот сохраняет желаемое состояние в etcd. Scheduler видит, что есть неназначенный под, и выбирает ноду. Kubelet на этой ноде получает задание и передаёт его в CRI — Container Runtime Interface. CRI запускает контейнер. Kube Proxy прописывает сетевые правила. Всё — под живёт.

CRI — это абстракция над движком контейнеров. K8s не зависит от Docker: можно использовать containerd, CRI-O или любой другой совместимый рантайм. С версии 1.24 поддержка dockershim удалена из ядра Kubernetes.

Почему такая архитектура и почему она работает

Разделение на Control Plane и Worker Nodes — не прихоть. Это позволяет масштабировать вычислительную мощность (добавлять ноды), не трогая управляющую логику. API Server как единая точка входа убирает прямые зависимости между компонентами. etcd как источник истины гарантирует консистентность — любой компонент, упав и перезапустившись, читает актуальное состояние.


Kubernetes — это не «Docker на стероидах». Это операционная система для датацентра. И как любая ОС, она сложна снаружи ровно настолько, насколько элегантна внутри.

6 мин чтенияKubernetesDevOpsКонтейнеры

Нужен продукт под ключ?

Обсудим задачу за 30 минут — roadmap и ориентир по срокам и бюджету.

Обсудить проект

← Все статьи