Вопрос или проблема
Я пытаюсь обновить все хосты centos7 в флоте. Среди них есть множество узлов kubernetes и один мастер.
Я создал новый мастер-узел на Rocky9 и пытаюсь заменить им существующий мастер.
Я скопировал все файлы /etc/k8/pki и сделал резервное копирование/восстановление etcd с старого на новый.
Новый хост имеет то же имя и IP-адрес, что и предыдущий.
Запустите containerd, а затем kubeadm init --ignore-preflight-errors=DirAvailable--var-lib-etcd
Я вижу следующие сообщения:
kubelet_node_status.go:73] "Попытка зарегистрировать узел" node="kube-master.work"
eviction_manager.go:282] "Менеджер эвакуации: не удалось получить сводку статистики" err="не удалось получить информацию об узле: узел \"kube-master.work\" не найден"
controller.go:145] "Не удалось обеспечить существование аренды, будет повторная попытка" err="leases.coordination.k8s.io \"kube-master.work\" запрещено: Пользователь \"system:node:kube-master\" не может получить ресурс \"leases\" в группе API \"coordination.k8s.io\" в пространстве имен \"kube-node-lease\": может получить доступ только к аренде узла с тем же именем, что и у запрашивающего узла" interval="7s"
kubelet_node_status.go:96] "Невозможно зарегистрировать узел на сервере API" err="узлы \"kube-master.work\" запрещены: узел \"kube-master\" не имеет права изменять узел \"kube-master.work\"" node="kube-master.work"
server.go:304] "Не удалось аутентифицировать запрос из-за ошибки" err="[недействительный токен, учетные записи службы \"metrics-server\" не найдены]"
Поэтому я, вероятно, пропустил копирование некоторых файлов или пропустил шаг в (пере)загрузке. Есть предложения, где я ошибся?
Ответ или решение
Заменяя узел kube-master в кластере Kubernetes и столкнувшись с ошибками доступа, связанными с авторизацией и регистрации узла, важно детально оценить порядок действий и возможные упущения. Давайте проанализируем вашу ситуацию и предложим возможные решения.
Проблема
Вы пытаетесь заменить существующий мастер-узел на новый сервер с Rocky9, скопировав файлы сертификатов и восстановив etcd
. Ошибки, на которые вы наткнулись, указывают на проблемы с доступом и авторизацией, при этом сообщения о статусе узла и ошибках управления лизензиями сигнализируют о том, что новый узел не может пройти регистрацию и взаимодействовать с API-сервером.
Причины ошибки
-
Использование неправильного имени узла: Вы указали, что новый узел имеет то же имя и IP-адрес, что и старый. Однако Kubernetes использует компоненты механизма RBAC для управления доступом, и доступ к ресурсам (таким как лизенции) может быть ограничен из-за неправильной настройки ролей или прав доступа.
-
Отсутствие токена для аутентификации: Ошибка
[invalid bearer token, serviceaccounts "metrics-server" not found]
указывает на то, что служебная учетная запись, необходимая для работы, не может быть найдена или неправильно настроена. Это может быть результатом неверной конфигурации после переноса. -
Недостаток необходимых файлов и конфигураций: Возможно, вы не скопировали все необходимые файлы конфигурации и сертификаты, такие как файлы для kubelet, kubeconfig и т.д.
Рекомендации по исправлению
-
Проверка и обновление конфигураций узла:
- Убедитесь, что
kubelet
на новом узле настроен правильно. Проверьте файл конфигурации/var/lib/kubelet/kubeadm-flags.env
и убедитесь, что параметры указаны корректно, а также совпадают с предыдущим узлом.
- Убедитесь, что
-
Очистка данных и перезапуск узла:
- Возможно, есть остаточные данные о старом узле. Попробуйте удалить содержимое каталога
/var/lib/kubelet/pki
, а затем перезапуститеkubelet
.
- Возможно, есть остаточные данные о старом узле. Попробуйте удалить содержимое каталога
-
Копирование всех сертификатов:
- Убедитесь, что все необходимые сертификаты и ключи, включая
ca.crt
,apiserver.crt
и соответствующие ключи, были успешно перенесены на новый узел.
- Убедитесь, что все необходимые сертификаты и ключи, включая
-
Проверка прав доступа:
- Проверьте настройки RBAC: убедитесь, что учетная запись
system:node:kube-master
имеет права на доступ к необходимым ресурсам, включая лизенции. Вам, возможно, потребуется отредактировать роли и привязки ролей.
- Проверьте настройки RBAC: убедитесь, что учетная запись
-
Инициализация кластера:
- Если предыдущие шаги не помогли, попробуйте повторить инициализацию кластера с использованием команд
kubeadm
и внимательно следите за результатами. Убедитесь, что используете флаг--apiserver-apiserver-advertise-address <IP-адрес>
.
- Если предыдущие шаги не помогли, попробуйте повторить инициализацию кластера с использованием команд
-
Проверка состояния etcd:
- Убедитесь, что
etcd
работает корректно, и данные, восстановленные с помощью резервной копии, действительно были корректно перенесены.
- Убедитесь, что
-
Обновление конфигураций Metrics Server:
- Если вы используете
Metrics Server
, проверьте его установку и конфигурацию, чтобы устранить ошибку, связанную с отсутствием служебной учетной записи.
- Если вы используете
В случае, если после выполнения всех этих рекомендаций проблема останется нерешённой, стоит рассмотреть возможность обращения в сообщество Kubernetes или к официальной документации для более детальной диагностики проблем.