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

Увеличить ресурсы или снизить нагрузку

Чеклист диагностики

  1. Проверить логи scheduler
  2. Проверить static pod manifest (/etc/kubernetes/manifests/kube-scheduler.yaml).
  3. Исключить конфликты портов.
  4. Проверить сертификаты и kubeconfig.
  5. Убедиться в доступности API server.

Итог

Если kube-scheduler не запускается — это критическая проблема. Чаще всего причина в ошибках конфигурации, невалидных сертификатах или недоступности API server. Пошаговая проверка из чеклиста поможет быстро найти источник сбоя.