Оглавление
Время чтения: 15 минут
Автор статьи: Александр, CTO AppFox.
Меня зовут Александр, я CTO компании AppFox. Мы более 10 лет занимаемся заказной разработкой и также имеем собственные продукты.
В этой статье мы рассмотрим, что такое Kubernetes, в каких случаях его использование оправдано, и разберем вопросы, которые вы можете встретить на собеседованиях.
Что такое Kubernetes простыми словами?
Разберем на примере интернет-магазина с тремя серверами:
- Сервер №1 — основной (принимает заказы).
- Сервер №2 — база данных (хранит товары и пользователей).
- Сервер №3 — бэкенд для API (обрабатывает платежи).
Проблема:
- В Чёрную пятницу приходит в 10 раз больше покупателей. В результате, сервера №1 и №3 падают от нагрузки, магазин «висит».
- Сервер №2 (база данных) ломается, а все заказы теряются.
- Чтобы добавить новые сервера, админ вручную копирует настройки, что занимает часы.
Решение при помощи Kubernetes.
Те же 3 сервера, но теперь они управляются Kubernetes.
-
Автомасштабирование
- При наплыве покупателей Kubernetes автоматически запускает дополнительные копии серверов №1 и №3.
- Когда нагрузка падает — лишние сервера отключаются.
-
Отказоустойчивость
- Если сервер №2 (база данных) упал, Kubernetes сразу переключает нагрузку на его резервную копию.
- Покупатели даже не замечают проблемы.
-
Гибкие обновления
- Вы хотите обновить API (сервер №3).
- Kubernetes делает это без downtime: запускает новые версии API, переключает трафик на них и останавливает старые.
-
Экономия денег
- Ночью, когда магазин почти не используют, Kubernetes отключает часть серверов.
- Утром — снова включает.
Что это даёт бизнесу?
- Магазин не «падает» в пиковые нагрузки (Чёрная пятница, распродажи).
- Нет потери заказов — если что-то сломалось, система сама всё починит.
- Быстрые обновления — можно выпускать новые фичи без остановки магазина.
- Экономия на серверах — не нужно держать «лишние» мощности.
Kubernetes: мощный инструмент, но не серебряная пуля
Kubernetes — это система оркестрации контейнеров, которая помогает управлять масштабируемыми и отказоустойчивыми приложениями. Термин k8s является синонимом Kubernetes и означает 8 букв между первой и последней буквой.
Термин k8s является синонимом Kubernetes и означает 8 букв между первой и последней буквой. Да, программисты любят сокращения :)
Примерно с 2018 года мы наблюдаем устойчивый тренд: Kubernetes стал синонимом «правильной» продакшн-инфраструктуры. И это не случайно. Он действительно решает множество проблем, связанных с управлением микросервисами, масштабированием, отказоустойчивостью и обновлением без простоев.
Когда Kubernetes оправдан
- Микросервисная архитектура с большим количеством сервисов.
- Необходимость автоматического масштабирования под нагрузку.
- Высокие требования к отказоустойчивости.
- Гибкость деплоя (Canary, Blue-Green, A/B-тестирование).
Когда Kubernetes — избыточное решение
- Монолитное приложение с низкой нагрузкой.
- Маленькие проекты без потребности в масштабировании.
- Стартапы с ограниченным бюджетом.
- Проект для демо или MVP, где масштабирование планируется после инвестиций.
- Команда не готова к сложности k8s (обучение и поддержка требуют ресурсов).
В компании AppFox мы используем Kubernetes при построении кластеров для мультиплеерных игр и проектов со сложной микросервисной архитектурой, в том числе для решений СберБанка и Банка ВТБ.
Основные понятия Kubernetes
- Pod — минимальная единица развертывания (может содержать один или несколько контейнеров).
- Deployment — декларативное описание желаемого состояния приложения.
- Service — абстракция для доступа к подам (ClusterIP, NodePort, LoadBalancer).
- Ingress — управление внешним трафиком (роутинг, SSL).
- ConfigMap и Secret — хранение конфигураций и чувствительных данных.
- PersistentVolume (PV) и PersistentVolumeClaim (PVC) — работа с постоянным хранилищем.
- Helm — менеджер пакетов для k8s (чарты).
Вопросы по Kubernetes на собеседовании
Теперь самое интересное — какие вопросы задают кандидатам в зависимости от их уровня.
Для backend-разработчика
Что такое контейнер и зачем нужен Docker?
- Контейнер - это изолированное окружение для запуска приложений со всеми зависимостями.
- Docker - платформа для создания и управления контейнерами.
Разница между Docker и Kubernetes
- Docker создает контейнеры
- Kubernetes управляет множеством контейнеров на разных серверах.
Как работает kubectl get pods? Что выведет эта команда?
Команда показывает список подов (pods) - минимальных единиц развертывания в k8s. Вывод включает имя пода, статус, количество рестартов и возраст.
Что такое Deployment и зачем он нужен?
Это объект k8s для декларативного управления подами. Позволяет:
- Разворачивать приложения
- Обновлять их (rolling update)
- Возвращаться к предыдущим версиям (rollback)
- Масштабировать количество реплик
Как приложение в k8s получает конфигурацию (ConfigMap, Secrets)?
- ConfigMap хранит конфигурации (например, настройки приложения)
- Secrets - чувствительные данные (пароли, токены). Они монтируются в поды как файлы или переменные окружения.
Что такое Pod, Deployment и Service?
- Pod — это минимальная единица в Kubernetes
- Deployment управляет жизненным циклом Pod'ов
- Service предоставляет сетевой доступ.
Как подать переменные окружения в Pod?
Через env, envFrom, ConfigMap, Secret.
Что произойдет, если Pod упал?
Kubernetes сам его перезапустит — важно понимать работу контроллеров.
Для Junior DevOps
Как создать под с помощью kubectl?

Как посмотреть логи пода?

Как работает Service? Какие типы сервисов знаете?
Абстракция для доступа к набору подов. Типы:
- ClusterIP (внутренний IP)
- NodePort (порт на каждой ноде)
- LoadBalancer (внешний балансировщик)
- ExternalName (CNAME-запись)
Как обновить приложение в k8s (стратегии деплоя)?
- RollingUpdate (постепенная замена подов)
- Recreate (удаление всех старых перед созданием новых)
Что делает kubelet и kube-proxy?
- kubelet - агент на нодах, запускает и контролирует контейнеры
- kube-proxy - обеспечивает сетевую связность между сервисами
Как создать кластер Kubernetes?



Как подключить volume к Pod'у?
Volume (том) в Kubernetes позволяет сохранять данные между перезапусками Pod'ов. Есть несколько типов томов, но для постоянного хранения данных используются PersistentVolume (PV) и PersistentVolumeClaim (PVC).
- PersistentVolume — это ресурс в кластере, представляющий физическое хранилище (например, диск в облаке или NFS-шару). PV создаётся администратором кластера и существует независимо от Pod'ов.
- PersistentVolumeClaim — запрос Pod'а на выделение PV. PVC связывается с подходящим PV (или динамически создаёт его, если настроен StorageClass). PVC монтируется в Pod как volume. Если не хочется создавать PV вручную, можно использовать StorageClass для автоматического создания томов.
- HPA масштабирует количество Pod'ов на основе метрик нагрузки (увеличивает или уменьшает число реплик (replicas) Deployment'а в зависимости от, например, CPU или памяти, т.е., нагрузка выросла — добавили ещё Pod'ов).
- VPA изменяет ресурсы (CPU, память) у контейнеров внутри Pod'а

Для Middle DevOps
Как настроить Ingress для доступа к сервису?


Как сделать Horizontal Pod Autoscaler (HPA)?


Как управлять ресурсами (requests/limits)?

Как настроить PersistentVolume для stateful-приложения?

Как диагностировать проблему с CrashLoopBackOff?
- Посмотреть логи пода
- Проверить readiness/liveness пробы
- Убедиться, что контейнеру хватает ресурсов
- Проверить монтирование томов
- Изучить события кластера: kubectl describe pod <pod-name> get events
Для Senior DevOps
Как настроить NetworkPolicy для изоляции подов?


Как работает etcd и что делать при его проблемах?
Распределенное key-value хранилище - "мозг" Kubernetes. Проблемы и решения:
- Недостаток места: регулярная дефрагментация
- Высокая задержка: оптимизация сети
- Потеря кворума: восстановление из бэкапа
Как настроить мониторинг (Prometheus + Grafana)?
- Установка Prometheus Operator
- Настройка ServiceMonitor для сбора метрик
- Создание Grafana дашбордов
- Настройка алертов через Alertmanager
Как организовать multi-cluster управление?
Варианты:
- Kubefed (Federation v2)
- Cluster API
- Коммерческие решения (GKE Anthos, EKS Anywhere)
Основные задачи: синхронизация ресурсов, единая аутентификация, централизованное логирование.
Как оптимизировать costs в облачном k8s (автоскейлинг нод)?
- Использование spot-инстансов
- Автомасштабирование нод (Cluster Autoscaler)
- Вертикальное масштабирование подов (VPA)
- Планирование подов на дешевые ноды (node affinity/taints)
- Использование serverless-решений (AWS Fargate, GCP Cloud Run)
Заключение: Kubernetes — мощный инструмент, но не панацея
Kubernetes действительно стал стандартом для оркестрации контейнеров в современных облачных и гибридных средах. Он решает ключевые задачи: масштабируемость, отказоустойчивость и автоматизацию деплоя. Однако его внедрение требует взвешенного подхода — не каждый проект нуждается в такой сложности.
Главный совет:
- Если у вас микросервисы, высокая нагрузка или требовательная инфраструктура — Kubernetes может стать вашим решением.
- Если проект небольшой или монолитный — начните с простых решений (Docker Compose, managed-сервисов) и масштабируйтесь постепенно.
Попробуйте Kubernetes в действии:
- Разверните локальный кластер через minikube или kind.
- Поэкспериментируйте с Helm-чартами и автоскейлингом.
- Изучите managed-решения (GKE/EKS/AKS), чтобы оценить их преимущества.