Введение

Вы когда-нибудь задумывались, как Kubernetes решает, где запустить ваш под?

Ответ — компонент под названием kube-scheduler. Он — мозг, который определяет, на каком узле будет жить ваш под.

Разберём, как он работает, простыми словами.


Что такое kube-scheduler?

kube-scheduler — это планировщик по умолчанию в Kubernetes. Его задача простая, но жизненно важная:

🧠 Он назначает подам узлы, если они ещё не привязаны ни к одному из них.

Без него поды бы создавались, но так и не запускались.


Что происходит при создании пода?

  1. Вы создаёте манифест или запускаете kubectl run
  2. API-сервер регистрирует под
  3. Под не привязан к узлу
  4. kube-scheduler находит такой под
  5. Он выбирает наилучший узел
  6. API обновляет под с этим узлом
  7. kubelet на узле запускает контейнер

Магия? Нет — просто планировщик.


Как kube-scheduler выбирает узел?

Процесс состоит из двух этапов:

1. Фильтрация

Удаляет узлы, которые не подходят:

  • Недостаточно CPU/RAM
  • Taints и tolerations не совпадают
  • Не совпадает nodeSelector
  • Узел в статусе NotReady

2. Оценка

Оставшиеся узлы оцениваются по метрикам:

  • Минимальная нагрузка по CPU/памяти
  • Affinity и anti-affinity
  • Распределение по зонам

Узел с максимальным баллом побеждает.

✨ Поведение можно настраивать с помощью политик и плагинов.


Как влиять на выбор узла?

Есть инструменты:

  • nodeSelector: узлы с нужными метками
  • affinity и antiAffinity: группировка или разделение подов
  • taints и tolerations: ограничение доступа к узлам
  • priorityClass: приоритеты

Сводка

ФункцияОписание
ФильтрацияИсключает неподходящие узлы
ОценкаВыбирает лучший из оставшихся
ПривязкаОбновляет под
НастройкаЧерез affinity, tolerations и т.д.

Заключение

Хотя kube-scheduler работает в фоне, его решения влияют на всё: производительность, отказоустойчивость и эффективность. Понимание его работы — шаг к созданию продвинутых и стабильных кластеров Kubernetes.

Теперь вы точно знаете, как Kubernetes решает, где запускать поды.

→ Узнать больше: