Ситуация повторяется: kube-apiserver запущен и работает, но kubeadm падает по таймауту, потому что не может проверить статус /livez. В версии 1.35.0 это частое явление при первой инициализации, но кластер на самом деле уже создан.
Не переживай, мы сейчас всё «оживим» вручную за 3 шага. Главное — не делай reset, база данных уже жива.
## Шаг 1: Настройка доступа через Super-Admin
В версии 1.35 файл super-admin.conf — это твой «золотой ключ», который обходит все ошибки Forbidden.
mkdir -p $HOME/.kube
sudo cp -f /etc/kubernetes/super-admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# Проверяем, видит ли он ноду (напрямую через IP сервера)
kubectl get nodes --server=https://192.168.0.201:6443 --insecure-skip-tls-verify
Если увидишь k8s-srv1 NotReady — значит, всё отлично, идем дальше.
------------------------------
## Шаг 2: Генерация команд JOIN (самое важное)
Так как kubeadm упал в конце, он не напечатал команды для других серверов. Давай вытащим их из живого кластера:
1. Создать команду для всех нод (токен):
kubeadm token create --print-join-command
Запиши результат, это будет что-то вроде: kubeadm join 192.168.0.253:7443 --token ...
2. Загрузить сертификаты и получить ключ (для srv2 и srv3):
sudo kubeadm init phase upload-certs --upload-certs --config /etc/kubernetes/kubeadm-config.yaml
Запиши длинный буквенно-цифровой код в конце (Certificate Key).
Твоя итоговая команда для srv2/srv3 будет выглядеть так:
[команда из п.1] --control-plane --certificate-key [ключ из п.2]
------------------------------
## Шаг 3: Установка сетевого плагина Calico (Пункт 14)
Пока ты не поставишь сеть, компоненты будут «глючить». Давай установим её прямо сейчас:
kubectl apply -f https://githubusercontent.com --insecure-skip-tls-verify
------------------------------
## Почему это произошло?
Таймаут и ошибка Forbidden возникли из-за того, что kubeadm пытался авторизоваться под kubernetes-admin, в то время как RBAC (права доступа) внутри кластера еще не до конца применились. Использование super-admin.conf решает эту проблему.
Что теперь показывает kubectl get nodes?
Если нода появилась в списке — поздравляю, ты официально запустил первый мастер! Можно переходить к выполнению команд join на k8s-srv2.
Если возникнут вопросы по команде join для второй ноды — пиши, там есть пара нюансов с containerd.