kubernetes v1.7.1 имя хоста присоединения kubeadm не может быть достигнуто, ошибка

Сегодня я воссоздал свой кластер с v1.7.1, когда я запускаю команду kubeadm join --token 189518.c21306e71082d6ec, она дает следующую ошибку. это использовало работу в предыдущей версии kubernetes. Что-то изменилось в этой версии, как решить эту проблему?

[root@k8s17-02 ~]# kubeadm join --token 189518.c21306e71082d6ec 192.168.15.91:6443
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: hostname "" could not be reached
[preflight] WARNING: hostname "" lookup : no such host
[preflight] Some fatal errors occurred:
        hostname "" a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')
[preflight] If you know what you are doing, you can skip pre-flight checks with `--skip-preflight-checks`

обновление от 21.07.17

Протестировано с v1.7.2, та же проблема.

# ./kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.2", GitCommit:"922a86cfcd65915a9b2f69f3f193b8907d741d9c", GitTreeState:"clean", BuildDate:"2017-07-21T08:08:00Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

# ./kubeadm join --token 189518.c21306e71082d6ec 192.168.15.91:6443
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: hostname "" could not be reached
[preflight] WARNING: hostname "" lookup : no such host
[preflight] Some fatal errors occurred:
        hostname "" a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')
[preflight] If you know what you are doing, you can skip pre-flight checks with `--skip-preflight-checks`

Спасибо, СР.


person sfgroups    schedule 15.07.2017    source источник
comment
Возможно, в этом выпуске парсер аргументов немного глючит. Вы пробовали «kubeadm присоединиться к 192.168.15.91:6443 --token 189518.c21306e71082d6ec»?   -  person Zahlex    schedule 15.07.2017
comment
Какую версию вы использовали до этого? Сообщение приходит с сайта github.com/kubernetes/kubernetes/commit/.   -  person VonC    schedule 15.07.2017
comment
раньше я использовал v1.7.0. также на некоторых других машинах я также смог настроить версию 1.6.4.   -  person sfgroups    schedule 15.07.2017
comment
Возможно, связано с github.com/kubernetes/kubeadm/issues/64.   -  person iny    schedule 15.07.2017
comment
Есть новости по этому поводу? Я столкнулся с той же проблемой.   -  person Umair Sarfraz    schedule 15.07.2017
comment
@sfgroups Вам удалось как-то это решить?   -  person Umair Sarfraz    schedule 15.07.2017
comment
так как я знаю, что моя конфигурация сервера хороша. Я пропустил предполетные проверки. `kubeadm join --skip-preflight-checks --token 189518.c21306e71082d6ec 192.168.15.91:6443`   -  person sfgroups    schedule 15.07.2017


Ответы (3)


Похоже, он пытается найти имя хоста и не может, потому что его нет в DNS. Есть два способа обойти это:

  1. Kubernetes лучше работает с именованными узлами. Хотя это раздражает, в долгосрочной перспективе это дает преимущества, например, когда вам приходится использовать разные IP-адреса при перезагрузке. Вы можете отредактировать /etc/hosts на каждой машине, чтобы дать имена всем ящикам в вашем кластере, или запустить локальный DNS, добавив к нему имена.
  2. Или вы можете попробовать пропустить предполетную проверку... kubeadm join --skip-preflight-checks --token TOKEN HOST:PORT
person Nathaniel Dean    schedule 17.07.2017
comment
в моем файле хоста указан правильный IP и имя хоста. это работало для v1.7 и более старых версий. Выдает ошибку только в версии 1.7.1, похоже, что в новой версии какая-то логика изменилась. если вы посмотрите на сообщение, оно не получит имя хоста, оно пустое. - person sfgroups; 17.07.2017
comment
Вы пытались обратиться к ящику не по его IP-адресу, а по имени хоста в /etc/hosts? - person Nathaniel Dean; 17.07.2017

Согласно #49065 проблеме GitHub, это будет исправлено в версии 1.7.2, до тех пор , рекомендуется использовать флаг --skip-preflight-checks. Это сработало для меня.

person alex    schedule 19.07.2017
comment
Хорошие новости. Я сравнил код от V1.7.0 до V1.7.1. Я не видел никаких изменений в коде kubeadm, проверяющем имя хоста. - person sfgroups; 19.07.2017

Я хотел бы подтвердить, что это должно быть проблемой только в v1.7.1. Что я также нашел эту проблему в лаборатории GCloud. Теперь мое решение заключается в том, чтобы использовать версию V1.7.0, если она будет найдена. Пожалуйста, ознакомьтесь с пошаговым тестом ниже:

====================================================

Описание лабораторной работы (были установлены все узлы docker/kubelet/kubectl/kubeadm):
Имя компьютера Роли: IP-адрес:
kubeserve-ms Master 192.168.99.200
kubeserve-1 NodePort 192.168.99.201
kubeserve-2 NodePort 192.168.99.202

===================================================

1.(kubeserve_ms) начальный кластер командой (su для root):
kubeadm init --pod-network-cidr=10.244.0.0/16 --token 8c2350.f55343444a6ffc46
< br>2. (kubeserve_ms) настройка запуска кластерной системы с помощью команды (обычный пользователь):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/ config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3. (kubeserve_ms) инициализировать кластер командой:
sudo su -
kubeadm init --pod-network-cidr=10.244.0.0/16 --token 8c2350.f55343444a6ffc46
4. (kubeserve_ms) применить сетевой модуль weave командой:
kubectl apply -n kube-system -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
< б>5. (kubeserve-1,kuberserve-2) начать соединение узла командой:
kubeadm --token 8c2350.f55343444a6ffc46 join 192.168.99.200:6443
Результат
kubeadm join kubernetes-ms:6443 --token 8c2350.f55343444a6ffc46
[kubeadm] ВНИМАНИЕ: kubeadm находится в стадии бета-тестирования, не используйте его для рабочих кластеров.
[предварительная проверка] Выполнение предварительных проверок
[предварительная проверка] ВНИМАНИЕ: версия докера больше, чем последняя проверенная версия. Версия докера: 17.06.0-ce. Максимальная проверенная версия: 1.12
[предварительная проверка] ПРЕДУПРЕЖДЕНИЕ: имя хоста "" не может быть достигнуто
[предварительная проверка] ПРЕДУПРЕЖДЕНИЕ: поиск имени хоста "" : такого хоста нет
[предварительная проверка] Произошли фатальные ошибки: имя хоста "" субдомен DNS-1123 должен состоять из строчных буквенно-цифровых символов, «-» или «.», и должен начинаться и заканчиваться буквенно-цифровым символом (например, «example.com», регулярное выражение, используемое для проверки, — «a-z0-9? (.a-z0-9?)*')
[предварительная проверка] Если вы знаете, что делаете, вы можете пропустить предварительные проверки с помощью --skip-preflight-checks

Решение для временного решения:< /b>
Установил "kubelet","kubeadm","kubectl" версии 1.7.0 все работает нормально

person Praparn Lungpoonlap    schedule 18.07.2017
comment
v1.7.2 - выпущена, нам нужно это проверить. - person sfgroups; 21.07.2017
comment
Я использую kubeadm v1.7.2. Возникла такая же проблема. - person Phagun Baya; 29.07.2017