kube-scheduler не запускается: отладка и решения
kube-scheduler — важный компонент control plane в Kubernetes.
Если он не работает, поды не могут назначаться на ноды и остаются в состоянии Pending
.
Разберём основные причины и способы решения.
Типичные признаки
- В
kubectl get pods -n kube-system
видно, что kube-scheduler в CrashLoopBackOff или не стартует. - Поды остаются в Pending.
- В логах ошибки типа
failed to bind to port
илиconnection refused
.
Возможные причины и исправления
1. Конфликт портов
По умолчанию kube-scheduler слушает на портах 10259 (secure) и иногда 10251 (insecure).
Если порт занят, процесс не запустится.
Решение:
Проверить:
sudo lsof -i :10259
Освободить порт или изменить конфигурацию
2. Ошибки в манифесте
В кластерах с kubeadm, kube-scheduler запускается как static pod (/etc/kubernetes/manifests/kube-scheduler.yaml
).
Любая ошибка в YAML приведёт к падению.
Решение:
Проверить манифест и параметры --leader-elect
, --bind-address
, or --kubeconfig
:
cat /etc/kubernetes/manifests/kube-scheduler.yaml
3. Проблемы с сертификатами
Для работы kube-scheduler нужны валидные сертификаты для доступа к API server.
Просроченные или отсутствующие сертификаты = ошибка запуска.
Решение:
Проверить /etc/kubernetes/scheduler.conf
и убедиться, что сертификаты существуют и актуальны.
4. Нет доступа к API Server
Если scheduler не может достучаться до kube-apiserver, он не сможет работать.
Решение: Проверить доступность:
kubectl get componentstatuses
curl -k https://<apiserver>:6443/healthz
5. Нехватка ресурсов
На маленьких ВМ или при перегрузке ноды scheduler может падать из-за OOM.
Решение: Посмотреть логи:
journalctl -u kubelet | grep scheduler
Увеличить ресурсы или снизить нагрузку
Чеклист диагностики
- Проверить логи scheduler
- Проверить static pod manifest (
/etc/kubernetes/manifests/kube-scheduler.yaml
). - Исключить конфликты портов.
- Проверить сертификаты и kubeconfig.
- Убедиться в доступности API server.
Итог
Если kube-scheduler не запускается — это критическая проблема. Чаще всего причина в ошибках конфигурации, невалидных сертификатах или недоступности API server. Пошаговая проверка из чеклиста поможет быстро найти источник сбоя.