Содержание

Небольшому проекту Kubernetes чаще всего не нужен: одно-два приложения, база и очередь спокойно работают на Docker Compose или в управляемом контейнерном сервисе облака, а Kubernetes добавляет сложность, для которой нужна отдельная экспертиза. Он оправдан, когда сервисов много, нагрузка заметно меняется в течение дня, нужна автоматическая масштабируемость и самовосстановление, и в команде есть кому его поддерживать.

Разберём, что даёт Kubernetes, во что он обходится и какие есть альтернативы.

Что даёт Kubernetes?

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

Что получает проект:

  • самовосстановление — упавший контейнер или сервер заменяются автоматически;
  • масштабирование — число копий растёт и сокращается вместе с нагрузкой;
  • выкладка без простоя — новая версия заменяет старую постепенно, с автоматическим откатом при ошибках;
  • единая платформа для множества сервисов, очередей и фоновых задач;
  • переносимость между облаками и собственными серверами.
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: registry.example.com/api:1.42.0
          ports: [{ containerPort: 8080 }]
          readinessProbe:
            httpGet: { path: /health, port: 8080 }

Во что обходится Kubernetes?

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

Затраты Что входит
Экспертиза DevOps-инженер или команда, которая знает Kubernetes
Управление кластером Обновления версий, узлы, сеть, хранилища
Наблюдаемость Метрики, логи и трассировка для множества подов
Безопасность Права доступа, сетевые политики, секреты, обновления образов
Время разработчиков Манифесты, чарты, отладка проблем, специфичных для кластера

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

Электронное оборудование в тёмном помещении Фото: Unsplash

Какие есть альтернативы Kubernetes?

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

Как выбрать:

  1. Docker Compose на сервере — один-два сервера, простая выкладка, минимум движущихся частей. Подходит многим продуктам на старте и после него.
  2. Управляемые контейнерные сервисы — облако само запускает и масштабирует контейнеры; не нужно управлять кластером.
  3. Платформы развёртывания из репозитория — выкладка по коммиту, минимум настройки; дороже на больших объёмах.
  4. Kubernetes — когда перечисленного уже не хватает.

Как упаковать приложение в контейнеры и чем продакшен-образ отличается от образа для разработки, мы разбирали в статье Docker для разработки и продакшена.

Когда Kubernetes действительно оправдан?

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

Признаки, что пора

  • десяток и больше сервисов с независимой выкладкой;
  • нагрузка меняется в разы в течение дня или сезона, и ручное масштабирование не справляется;
  • жёсткие требования к доступности и выкладкам без простоя;
  • есть DevOps-инженер или команда платформы;
  • компания работает в нескольких облаках или на собственных серверах и хочет единую платформу.

Если сервисов пока один-два, возможно, дело не в инфраструктуре, а в архитектуре — о выборе между монолитом и сервисами в статье монолит или микросервисы.

Как перейти на Kubernetes, если он всё-таки нужен?

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

Порядок перехода:

  1. Упаковать все приложения в контейнеры и довести их до работы в Docker Compose.
  2. Выбрать управляемый Kubernetes у облачного провайдера.
  3. Настроить CI/CD, мониторинг, сбор логов и управление секретами.
  4. Перенести первый некритичный сервис и отработать выкладку и откат.
  5. Переносить остальные сервисы по одному.

Коротко

  • Kubernetes даёт самовосстановление, масштабирование и выкладку без простоя для многих сервисов.
  • Главная цена — экспертиза и время на поддержку кластера, а не только серверы.
  • Небольшим проектам обычно хватает Docker Compose или управляемых контейнерных сервисов.
  • Kubernetes оправдан при большом числе сервисов, колеблющейся нагрузке и наличии команды для поддержки.
  • Переходите постепенно, с управляемого кластера и некритичного сервиса.

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

  • Дешевле ли Kubernetes, чем обычные серверы?

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

  • Можно ли запустить базу данных в Kubernetes?

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

  • Сколько времени занимает переход на Kubernetes?

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