Введение
Вы когда-нибудь задумывались, как Kubernetes решает, где запустить ваш под?
Ответ — компонент под названием kube-scheduler. Он — мозг, который определяет, на каком узле будет жить ваш под.
Разберём, как он работает, простыми словами.
Что такое kube-scheduler?
kube-scheduler
— это планировщик по умолчанию в Kubernetes. Его задача простая, но жизненно важная:
🧠 Он назначает подам узлы, если они ещё не привязаны ни к одному из них.
Без него поды бы создавались, но так и не запускались.
Что происходит при создании пода?
- Вы создаёте манифест или запускаете
kubectl run
- API-сервер регистрирует под
- Под не привязан к узлу
- kube-scheduler находит такой под
- Он выбирает наилучший узел
- API обновляет под с этим узлом
- 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 решает, где запускать поды.
→ Узнать больше: