Вопрос или проблема
Добрый день, я столкнулся с проблемой, что не могу подключить мастер-ноду к своему k8s кластеру.
Мне удалось создать кластер из одного мастер-ноды и одного воркера.
NAME STATUS ROLES AGE VERSION
k8s-master-1 Ready control-plane 110m v1.30.8
k8s-worker-1 Ready <none> 27m v1.30.8
Но при попытке подключить еще одного мастера с использованием следующей команды
kubeadm join 192.168.0.204:6443 --token 4ad6xh.h3o9mdv2ufvxevzv --discovery-token-ca-cert-hash sha256:15b53d59f8d213dbf88d162365c26b0ba0541943e2ca2c98deb2c4e2f4028145 --control-plane --v=5
возникает следующая ошибка
error execution phase preflight
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow.(*Runner).Run.func1
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow/runner.go:260
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow.(*Runner).visitAll
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow/runner.go:446
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow.(*Runner).Run
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow/runner.go:232
k8s.io/kubernetes/cmd/kubeadm/app/cmd.newCmdJoin.func1
k8s.io/kubernetes/cmd/kubeadm/app/cmd/join.go:183
github.com/spf13/cobra.(*Command).execute
github.com/spf13/[email protected]/command.go:940
github.com/spf13/cobra.(*Command).ExecuteC
github.com/spf13/[email protected]/command.go:1068
github.com/spf13/cobra.(*Command).Execute
github.com/spf13/[email protected]/command.go:992
k8s.io/kubernetes/cmd/kubeadm/app.Run
k8s.io/kubernetes/cmd/kubeadm/app/kubeadm.go:52
main.main
k8s.io/kubernetes/cmd/kubeadm/kubeadm.go:25
runtime.main
runtime/proc.go:271
runtime.goexit
runtime/asm_amd64.s:1695
Я также пытался приложить сертификат, но ничего не вышло.
kubeadm join 192.168.0.204:6443 --token aax7g9.qd1m2yeg5uktm7s7 --discovery-token-ca-cert-hash sha256:15b53d59f8d213dbf88d162365c26b0ba0541943e2ca2c98deb2c4e2f4028145 --control-plane --certificate-key fd9a624dc7e2b507807d588c7790ebbb0f0d8625212778e96927a25484155d0f
Затем я попробовал поднять KubeVIP, но это не помогло, так как я использую containerd.
Версия kuber v1.30
.
Ответ или решение
Здравствуйте,
Возникшая у вас проблема с подключением дополнительного мастер-нода к вашему кластеру Kubernetes через kubeadm
может иметь множество причин. Давайте рассмотрим их подробно и предложим возможные решения.
Причины и решения:
-
Обновление токена аутентификации:
- Токен
kubeadm join
имеет ограниченный срок действия (по умолчанию 24 часа). Убедитесь, что используете актуальный токен. При необходимости создайте новый токен с помощью команды:kubeadm token create --print-join-command
- Токен
-
Соответствие версий:
- Вы упомянули, что используете Kubernetes версии v1.30.8. Убедитесь, что все узлы в кластере используют совместимые версии Kubernetes.
- Проверьте, чтобы версия
kubeadm
,kubelet
иkubectl
была совместимой и актуальной.
-
Сетевые настройки:
- Убедитесь, что между мастер-нодами и воркер-нодами установлено надежное сетевое соединение. Порты 6443, 2379-2380 (для etcd), 10250-10252 должны быть доступны.
- Проверьте, нет ли в вашей сети блокировок или межсетевых экранов, ограничивающих доступ по указанным портам.
-
Конфигурация сертификатов:
- Убедитесь, что используете правильный
--discovery-token-ca-cert-hash
. Неправильный хэш может вызвать неверифицированное соединение. - Если вы также используете
--certificate-key
, убедитесь в его корректности и недавнем создании.
- Убедитесь, что используете правильный
-
Использование Containerd:
- При работе с Containerd необходимо убедиться в правильной конфигурации сетевого плагина (например, Calico, Flannel) и его совместимости с текущей настройкой контейнерного окружения.
- Периодически возникают проблемы с совместимостью конфигураций Containerd и Kubernetes. Убедитесь, что установлены последние версии и применены актуальные исправления.
-
Проблемы с Kube-VIP:
- Если вы решили использовать Kube-VIP для обеспечения высокой доступности, убедитесь в его корректной настройке и согласовании с другими системными конфигурациями.
- Проверьте, находится ли VIP-адрес в доступности с другими узлами кластера и не вызывает ли конфликтов в сети.
Общие рекомендации:
- Логи и дебаггинг:
- Используйте
-v=5
для увеличения детализации логирования и возможности выявления более явных ошибок. - Ознакомьтесь с логами на
/var/log
на всех узлах, особенно с точки зрения компонентовkubelet
иkubeadm
.
- Используйте
Это далеко не исчерпывающий список возможных причин и решений, однако, он охватывает основные моменты, которые часто вызывают затруднения при добавлении мастер-узлов к кластерам Kubernetes. Надеюсь, это поможет вам решить вашу проблему. Если возникают дополнительные вопросы, мы можем провести более углубленный анализ конкретных логов и конфигураций вашего кластера.
С уважением.