📝 Kubernetes

Что такое Kubernetes и зачем он нужен

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
3 мин
👁️
Просмотров
85
🌱
Уровень
Начальный
🐦 💼 ✈️

Docker упакует приложение в контейнер. Но что делать, когда контейнеров сотни, они падают, нагрузка скачет, а один сервер уже не справляется?

Проблема: Docker Compose на одном сервере

Docker Compose отлично подходит для локальной разработки и небольших проектов. Но у него есть жёсткие ограничения:

  • Работает только на одном хосте
  • При падении сервера всё приложение недоступно
  • Нет автоматического масштабирования под нагрузку
  • Ручное обновление без zero-downtime требует скриптов
  • Нет встроенного мониторинга и самовосстановления

Когда приложение растёт, эти ограничения становятся критичными.

Что такое Kubernetes

Kubernetes (K8s) — это оркестратор контейнеров с открытым исходным кодом, созданный Google. Он автоматически управляет развёртыванием, масштабированием и работоспособностью контейнеризованных приложений на кластере серверов.

Аналогия: если Docker — это грузовой контейнер, то Kubernetes — это портовый терминал с кранами, расписанием и диспетчером. Он решает, куда поставить контейнер, следит за его состоянием и заменяет повреждённые.

Ключевые возможности

Self-healing — если контейнер упал, K8s автоматически перезапустит его. Если узел кластера вышел из строя, поды переедут на живые узлы.

Auto-scaling — HorizontalPodAutoscaler автоматически увеличивает число реплик при росте нагрузки и уменьшает при её спаде.

Rolling updates — обновление без простоя: новые поды поднимаются, старые гасятся постепенно. При ошибке — автоматический откат.

Multi-node — кластер из нескольких серверов. Нагрузка распределяется по всем узлам, нет единой точки отказа.

Declarative configuration — описываешь желаемое состояние в YAML, K8s сам приводит систему к нему и поддерживает.

Когда использовать K8s, а когда Docker Compose

Критерий Docker Compose Kubernetes
Размер команды 1–5 человек 5+ человек
Серверов 1 3+
Нагрузка Стабильная Переменная
Требования к доступности Нет 99.9%+
Сложность Низкая Высокая

Используй Docker Compose, если это стартап, пет-проект или staging-окружение. Kubernetes нужен, когда важны отказоустойчивость, масштабирование и CI/CD в production.

Архитектура кластера

Кластер K8s состоит из двух типов узлов: Control Plane (управляющий слой) и Worker Nodes (рабочие узлы).

Control Plane

Мозг кластера. Принимает решения о планировании и отвечает за состояние системы.

  • API Server — единая точка входа. Все команды kubectl идут сюда. REST API, который принимает и валидирует запросы.
  • etcd — распределённое key-value хранилище. Здесь хранится всё состояние кластера. Самый критичный компонент — потеря etcd = потеря кластера.
  • Scheduler — решает, на какой Worker Node запустить новый Pod, учитывая ресурсы, affinity-правила и ограничения.
  • Controller Manager — набор контроллеров, которые следят за текущим состоянием и приводят его к желаемому (ReplicaSet, Deployment, Node controllers).

Worker Nodes

Рабочие лошадки. Здесь запускаются контейнеры с приложениями.

  • kubelet — агент на каждом узле. Получает задания от API Server и управляет подами через container runtime.
  • kube-proxy — сетевой прокси. Обеспечивает сетевые правила и балансировку нагрузки внутри кластера.
  • Container Runtime — движок для запуска контейнеров (containerd, CRI-O).
┌─────────────────────────────────┐
│         Control Plane           │
│  API Server ← kubectl           │
│  etcd (state storage)           │
│  Scheduler                      │
│  Controller Manager             │
└──────────────┬──────────────────┘
               │
    ┌──────────┼──────────┐
    ▼          ▼          ▼
┌───────┐  ┌───────┐  ┌───────┐
│Node 1 │  │Node 2 │  │Node 3 │
│kubelet│  │kubelet│  │kubelet│
│  Pod  │  │  Pod  │  │  Pod  │
│  Pod  │  │  Pod  │  │       │
└───────┘  └───────┘  └───────┘

Первый шаг: установка kubectl

# macOS
brew install kubectl

# Проверка подключения к кластеру
kubectl cluster-info
kubectl get nodes

Для локального кластера используй minikube или kind:

# Установка и запуск minikube
brew install minikube
minikube start

# Проверка
kubectl get nodes
# NAME       STATUS   ROLES           AGE   VERSION
# minikube   Ready    control-plane   1m    v1.29.0

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

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Что такое ORM

ORM (Object-Relational Mapping) — технология, позволяющая работать с базой данных через объекты Python вместо SQL.

📅 30.06.2026 👁️ 124
📝

AI-агенты: ReAct loop и автономные действия

Чат-бот отвечает на вопросы. Агент — действует: вызывает инструменты, получает реальные данные и использует их...

📅 30.06.2026 👁️ 99
📝

Pydantic v2: валидация данных в Python

Pydantic — библиотека для валидации данных через аннотации типов. Версия 2 переписана на Rust и...

📅 30.06.2026 👁️ 84

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!