Kubeadm加入不使用设备的主机名

时间:2018-03-15 07:51:00

标签: kubernetes

我使用主机名而不是ip地址启动了主服务器,如下所示:

sudo kubeadm init --token-ttl=0 --apiserver-advertise-address=device1.local

虽然我使用的是主机名而不是ip地址,但它生成的令牌包含ip地址但它应该包含主机名。

kubeadm join --token 2083f8.06a02c04e6d63e1e 192.168.1.2:6443 --discovery-token-ca-cert-hash sha256:e08f6f4fccf9cc7341e3eca040f4437de397a4347a4bdeb1cf354b440cdcc3ee

我在我要添加的其他节点上使用了上述令牌但是用主机名device1.local替换了ip地址并运行了命令,但它显示如下错误:

[discovery] Failed to request cluster info, will try again: [Get https://device1.local:6443/api/v1/namespaces/kube-public/configmaps/cluster-info: dial tcp: lookup device1.local on 192.168.1.1:53: no such host]

设备都可以使用主机名互相ping通。此外,如果我尝试访问https://pi1.local:6443/api/v1/namespaces/kube-public/configmaps/cluster-info,我会在浏览器上获得有关群集的一些信息,但kubeadm无法找到它。

如何使用主机名而不是使用IP地址。如何让kubeadm init生成包含主机名的令牌。?

由于

1 个答案:

答案 0 :(得分:0)

它实际上使用主机名进行发现 - lookup device1.local on 192.168.1.1:53: no such host - 这意味着它无法使用DNS服务器device1.local解析主机192.168.1.1:53

所以,你这样做,只需检查你用作apiserver-advertise-address的主机名,它必须是一个apiserver主机名,可以在所有节点上解析,例如nslookup device1.local