Зачем нужен Kubernetes
Что k8s делает за тебя когда упала нода или вырос трафик.
У тебя 4 контейнера api на двух серверах. В 4 утра один сервер падает. С Docker без оркестратора ты получишь алерт в час дежурства и побежишь ssh-иться. На k8s ты узнаёшь утром из логов, потому что кластер уже всё разрулил сам.
Ниже две сцены, ради которых k8s вообще придумали. Первая — что происходит, когда умирает нода. Вторая — что происходит, когда внезапно пришёл большой трафик из-за рекламной кампании.
Примерно через 50 секунд node controller перестаёт получать heartbeat от ноды и выставляет ей статус Unknown. Порог не константа: его задаёт флаг --node-monitor-grace-period, и на своём кластере его можно подкрутить. Дальше k8s сравнивает желаемое состояние с реальным: «должно быть 4 реплики, живых 2». Scheduler ищет ноду, где хватит CPU и памяти. Kubelet на этой ноде тянет образ из registry и стартует контейнер.
Параллельно Service обновляет список endpoints. kube-proxy перестаёт слать трафик на мёртвые поды и подхватывает новые. Юзер видит в худшем случае пару 502-ок на ретраях, дальше всё штатно.
Ты разбираешься с упавшей нодой утром на свежую голову, а не в 4 утра в пижаме.
HPA (Horizontal Pod Autoscaler) раз в 15 секунд смотрит метрики. Из коробки это CPU и память; RPS и другие кастомные метрики (например из Prometheus) подключаются через custom/external metrics API. Перевалило за порог — HPA сам бампит количество реплик в Deployment. Scheduler раскладывает новые поды по живым нодам с учётом ресурсов.
Пик закончился, средний CPU упал ниже целевого — HPA выдерживает паузу (по умолчанию 5 минут, чтобы не дёргаться на коротких всплесках) и плавно уносит лишние поды. Ты в это время заливаешь кофе.
Никаких ночных «срочно докинь реплик», никаких ручных kubectl scale. Декларация в манифесте, кластер сам приводит реальность к ней.
Когда тебе НЕ нужен k8s
Честно? Большинству не нужен. K8s окупается у больших компаний с десятками сервисов или у проектов, где трафик резко плавает (та самая рекламная кампания из сцены выше). До этого порога он стоит дороже, чем экономит.
Один контейнер на одной VPS — docker run плюс systemd. Несколько сервисов с базой — docker compose. Под сайт-визитку хватит nginx и пары процессов. На таких задачах k8s забирает больше времени, чем возвращает.
Сам кластер тоже надо обслуживать: control plane, ingress, RBAC, etcd-бэкапы, мониторинг. Если ты не можешь объяснить себе одной фразой «вот поэтому compose не тянет», скорее всего тебе хватит compose.
Если всё-таки решил брать — managed-кластер в Yandex Cloud или Selectel дешевле и проще, чем поднимать control plane самому.
В следующем уроке разбираем устройство кластера: control plane (api-server, etcd, scheduler, controller-manager) и worker-ноды с kubelet.
Дрилл · вопросы как на собесе
Проверь себя без подсказок
Сформулируй ответ вслух или письменно, потом раскрой и честно отметь: знал или нет.
Что такое Kubernetes и какую проблему он решает?
K8S-001Прошли материал до конца? Отметьте урок пройденным.
Прогресс сохранён в этом браузере
Почистишь историю или откроешь с телефона, и отметки пропадут. Оставь почту, они переедут в аккаунт. Пароль придумывать не нужно.
Готово. теперь в аккаунте: прогресс виден с любого устройства. Мой прогресс