Краткий runbook по типичным проблемам после установки Kubernetes на Rocky Linux 9: кластер не поднимается, Forbidden, поды не могут достучаться до API, NodePort не работает, GPU недоступны, образы не тянутся.
Сводка: проблема → действие
| Проблема | Первые шаги |
|---|---|
| Кластер не запускается | systemctl status kubelet, journalctl -u kubelet; настройка сети — см. статью «Настройка сети в Kubernetes» |
| Forbidden при kubectl | KUBECONFIG=/etc/kubernetes/super-admin.conf или копия в ~/.kube/config |
| Поды не достучаться до API | Проверить kubernetes svc, CoreDNS, Flannel, subnet.env; скрипт настройки — статья «Настройка сети в Kubernetes» |
| NodePort не работает | Проверить kube-proxy, логи, ipvsadm |
| GPU недоступны | nvidia-smi; настройка runtime и Device Plugin — примеры в статье «GPU в Kubernetes: NVIDIA runtime и Device Plugin» |
| Образы не загружаются | Прокси или импорт из Docker — см. «Прокси для containerd и работа с образами» |
| Полная переустановка | Полное удаление и установка заново — см. статьи «Удаление и переустановка кластера» и «Установка single-node кластера» |
Кластер не запускается
Последовательность диагностики:
systemctl status kubelet journalctl -u kubelet -n 100 --no-pager kubectl get pods -n kube-system kubectl get nodes
Если kubelet не активен или поды в состоянии Pending/CrashLoopBackOff — смотрите логи journalctl -u kubelet -f. При проблемах с сетью выполните настройку (скрипт в статье «Настройка сети в Kubernetes: Flannel, CoreDNS, kube-proxy»).
Forbidden при kubectl
Укажите kubeconfig или скопируйте его для текущего пользователя:
export KUBECONFIG=/etc/kubernetes/super-admin.conf # или один раз скопировать: mkdir -p ~/.kube sudo cp /etc/kubernetes/super-admin.conf ~/.kube/config sudo chown $(id -u):$(id -g) ~/.kube/config
Поды не подключаются к API (i/o timeout)
Проверка сервиса и компонентов сети:
kubectl get svc kubernetes -n default kubectl get endpoints kubernetes kubectl get pods -n kube-system | grep -E 'coredns|flannel|proxy' cat /run/flannel/subnet.env 2>/dev/null || echo "Файл subnet.env отсутствует"
Если /run/flannel/subnet.env нет или поды coredns/flannel не в Running — выполните настройку сети (см. статью «Настройка сети в Kubernetes»). Перезапуск подов: kubectl delete pod -n kube-system -l k8s-app=kube-dns, затем то же для k8s-app=kube-proxy и подов в kube-flannel.
NodePort не работает
Проверка kube-proxy и IPVS:
kubectl get pods -n kube-system -l k8s-app=kube-proxy
kubectl logs -n kube-system -l k8s-app=kube-proxy --tail=30
ipvsadm -ln
# на узле с подом: curl или wget на NodePort (замените NODE_IP и PORT)
curl -s -o /dev/null -w "%{http_code}" http://NODE_IP:30080
GPU недоступны
Проверка на узле и в кластере:
nvidia-smi kubectl get nodes -o wide kubectl get pods -n kube-system | grep nvidia kubectl describe node | grep -A2 nvidia.com/gpu
Если nvidia-smi работает, но в kubectl describe node нет nvidia.com/gpu — настройте NVIDIA runtime и Device Plugin (примеры в статье «GPU в Kubernetes: NVIDIA runtime и Device Plugin»).
Образы не загружаются
Проверка образов и прокси:
crictl images kubectl describe pod -n NAMESPACE POD_NAME | grep -A5 Events # если образы собирались в Docker и кластер на containerd — импорт (см. статью про прокси и образы): # docker save image:tag | sudo ctr -n=k8s.io images import -
При доступе только через прокси — настройка в статье «Прокси для containerd и работа с образами». При образах из Docker — импорт описан там же.
Полная переустановка
Сначала полное удаление (скрипт в статье «Удаление и переустановка кластера Kubernetes»), затем установка заново — «Установка single-node кластера Kubernetes». Кратко:
# 1) Удаление (от root): выполнить скрипт из статьи «Удаление и переустановка кластера» # 2) Установка заново: выполнить шаги из статьи «Установка single-node кластера Kubernetes» kubectl get nodes # проверка после установки
Итого: Сеть — настройка сети и subnet.env (скрипты в соответствующих статьях); права — super-admin.conf; GPU — runtime и Device Plugin (примеры в статье); образы — прокси или импорт из Docker (см. статью про прокси и образы).