kubernetes v1.7.1 kubeadm join hostname""无法达到错误

时间:2017-07-15 02:01:17

标签: kubernetes kubeadm

今天,当我运行kubeadm join --token 189518.c21306e71082d6ec命令时,我用v1.7.1重新创建了我的集群,它给出了以下错误。这在以前版本的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`

于7/21/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`

由于 SR

3 个答案:

答案 0 :(得分:2)

看起来它正在尝试查找主机名而不能,因为它不在DNS中。有两种方法:

  1. Kubernetes可以更好地使用命名节点。虽然这很烦人,但从长远来看它会带来好处,例如在重启时必须使用不同的IP地址。您可以在每台计算机上编辑/etc/hosts以为群集中的所有框指定名称,或者启动本地DNS,并为其添加名称。
  2. 或者,您可以尝试跳过预检检查...... kubeadm join --skip-preflight-checks --token TOKEN HOST:PORT

答案 1 :(得分:2)

根据#49065 GitHub问题,这将在1.7.2中修复,在此之前,建议使用--skip-preflight-checks标志。这对我有用。

答案 2 :(得分:0)

我想确认这只会在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

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)按命令应用编织网络模块:
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)按命令启动join节点:
kubeadm --token 8c2350.f55343444a6ffc46加入192.168.99.200:6443
结果
kubeadm join kubernetes-ms:6443 --token 8c2350.f55343444a6ffc46
[kubeadm]警告:kubeadm处于测试阶段,请不要将其用于生产集群。
[预检]运行飞行前检查
[预检]警告:docker版本大于最近验证的版本。 Docker版本:17.06.0-ce。最大验证版本:1.12
[预检]警告:无法访问主机名“”
[预检]警告:主机名“”查找:没有这样的主机
[预检]发生了一些致命错误:     主机名“”DNS-1123子域必须由小写字母数字字符' - '或'。'组成,并且必须以字母数字字符开头和结尾(例如'example.com',用于验证的正则表达式是'a-z0 -9?(A-Z0-9?)*')
[预检]如果您知道自己在做什么,可以使用--skip-preflight-checks跳过飞行前检查

解决方法现在解决方法:
安装版本为1.7.0的“kubelet”,“kubeadm”,“kubectl”一切正常工作