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-инженера на практических курсах с менторами и реальными проектами.
Выбрать курс