Что такое Kubernetes?

Kubernetes (K8s) — система оркестрации контейнеров: она автоматически размещает поды на узлах кластера, перезапускает упавшие, масштабирует нагрузку и обновляет версии приложений без простоя. Kubernetes не заменяет Docker — он управляет контейнерами, которые уже упакованы в образы.

flowchart LR
  subgraph control["Плоскость управления"]
    API["API Server"]
    Sched["Scheduler"]
    CM["Controller Manager"]
  end
  subgraph nodes["Узлы"]
    K1["kubelet + Pod"]
    K2["kubelet + Pod"]
  end
  API --> Sched
  Sched --> K1
  Sched --> K2

Scheduler выбирает узел; kubelet на узле запускает контейнеры пода.

Pod, Deployment и Service

Pod — минимальная единица деплоя: один или несколько контейнеров с общей сетью и томами. Deployment декларирует желаемое число реплик и стратегию rolling update. Service даёт стабильный DNS и балансировку к набору подов, даже когда конкретные поды пересоздаются.

Декларативная модель

Вы описыете желаемое состояние в YAML (манифесты); контроллеры постоянно сравнивают фактическое состояние с целевым и исправляют расхождения. Это отличается от «зайти на сервер и перезапустить процесс вручную» — кластер сам восстанавливает сервис после сбоя узла.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
spec:
  replicas: 3
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
        - name: api
          image: myregistry/api:1.4.0
          ports:
            - containerPort: 8080

Когда Kubernetes оправдан

Для одного контейнера на VPS часто достаточно Docker Compose. K8s имеет смысл при нескольких сервисах, необходимости autoscaling, канареечных релизах и отказоустойчивости на нескольких зонах. Цена — сложность: сеть, ingress, секреты, observability нужно проектировать отдельно.

Документация: kubernetes.io.

Частые вопросы

  • Чем Kubernetes отличается от Docker Compose?

    Compose поднимает стек на одной машине. Kubernetes управляет кластером узлов: scheduling, self-healing, масштабирование и обновления на уровне кластера.

  • Что такое pod в Kubernetes?

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

  • Нужен ли Kubernetes для небольшого проекта?

    Часто нет: для MVP и одного сервера проще Docker или managed PaaS. K8s оправдан при росте числа сервисов и требованиях к отказоустойчивости.

Не хватает деталей?

Напишите, что уточнить по теме «Kubernetes» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).

Поделиться