Phone icon Связаться с нами

DevOps и облака

Что такое Kubernetes (K8s)?

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

Docker решает задачу «запустить один контейнер». Kubernetes решает задачу «управлять сотнями контейнеров на десятках серверов»: где их разместить, что делать, если сервер вышел из строя, как увеличить мощность под нагрузку.

Работа построена декларативно: вы описываете желаемое состояние — «пять копий этого сервиса, такие ресурсы, такой адрес», — а кластер постоянно приводит реальность к этому описанию. Отсюда самовосстановление и плавные обновления.

Kubernetes даёт много возможностей, но и добавляет сложности. Для небольшого проекта с парой сервисов он чаще всего лишний.

Где применяется

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

Собственный кластер настраивают редко — чаще берут управляемый Kubernetes у облачного провайдера. В вакансиях DevOps и SRE Kubernetes — одно из самых частых требований, а сочетание с Terraform и подходом GitOps стало фактическим стандартом.

Пример

Ночью один из серверов кластера выходит из строя. 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.4.2
          ports:
            - containerPort: 3000
Описание развёртывания: три копии сервиса, и кластер сам поддерживает это состояние.

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

Нужен ли Kubernetes небольшому проекту?

Чаще всего нет. Для одного-двух сервисов он добавляет больше сложности, чем пользы: кластер нужно настраивать, обновлять и уметь чинить. Обычно начинают с обычного сервера с контейнерами или управляемого хостинга, а к Kubernetes переходят, когда проект растёт.

Сложно ли изучить Kubernetes?

Значительно сложнее, чем Docker: нужно понимать сети, хранилища, права доступа и саму модель объектов кластера. Разумный порядок — сначала уверенно освоить контейнеры, потом Kubernetes. Без опыта поддержки сервисов многие его концепции кажутся непонятными.

Что такое под (pod)?

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

Бесплатен ли Kubernetes?

Сам Kubernetes — проект с открытым кодом и бесплатный. Платить приходится за серверы, на которых он работает, и за управляемый сервис у облачного провайдера, если не хотите обслуживать кластер самостоятельно. Основные расходы — именно серверы.

Обучение DevOps в OWU

Освойте профессию DevOps-инженера на практических курсах с менторами и реальными проектами.

Выбрать курс