Что такое Kubernetes (K8s)?
Kubernetes — система оркестрации контейнеров: она сама запускает нужное количество контейнеров на группе серверов, перезапускает упавшие, распределяет нагрузку и выкатывает обновления без остановки сервиса.
Docker решает задачу «запустить один контейнер». Kubernetes решает задачу «управлять сотнями контейнеров на десятках серверов»: где именно их разместить, что делать при отказе узла, как масштабировать под нагрузку.
Работа строится декларативно: вы описываете желаемое состояние — «пять экземпляров этого сервиса, вот такие ресурсы, такой адрес», — а кластер постоянно приводит реальность к этому описанию. Отсюда самовосстановление и плавные обновления.
Kubernetes даёт много, но и стоит дорого в сложности. Для небольшого проекта с парой сервисов он чаще всего избыточен.
Где применяется
Kubernetes ставят там, где сервисов много и простой недопустим: маркетплейсы, финтех, телеком, крупные SaaS-продукты. Он держит нужное число копий каждого сервиса, переносит их при отказе узла, распределяет трафик и выкатывает новую версию постепенно, чтобы пользователи не заметили обновления.
Своими силами кластер поднимают редко — чаще берут управляемый вариант у облачного провайдера. В вакансиях 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 бесплатный?
Сам проект имеет открытый исходный код и бесплатен. Платить приходится за инфраструктуру, на которой он работает, и за управляемый сервис у облачного провайдера, если вы не хотите обслуживать управляющие узлы сами. Основная статья расходов обычно — сами серверы.