我使用主机名而不是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
生成包含主机名的令牌。?
由于
答案 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
。