问题描述
在 this tutorial 之后,我为我的集群设置了一个工作节点。但是,在运行 join
命令并尝试 kubectl get node
验证节点已连接后,我遇到了以下错误
W0215 17:58:44.648813 3084402 loader.go:223] Config not found: /etc/kubernetes/admin.conf
The connection to the server localhost:8080 was refused - did you specify the right host or port?
检查 admin.conf
中是否存在 /etc/kubernetes/
表明它不存在。我已经确保 $HOME/.kube/config
也很清楚。为什么join命令没有创建admin.conf文件?
解决方法
TLDR
- 使用 sudo 运行
join
mv /etc/kubernetes/kubelet.conf /etc/kubernetes/admin.conf
经过一番修补后,我意识到这是权限错误和使用错误名称生成的正确文件的组合。
不是裸机运行 kubeadm join ...
,而是使用 sudo 运行允许命令在 /etc/kubernetes
中创建必要的文件
sudo kubeadm join <MASTER_IP:PORT> --token <TOKEN> --discovery-token-ca-cert-hash <HASH>
然而,这不会生成 admin.conf
,但会创建 kubelet.conf
。我不确定为什么会发生这种情况,也找不到有关此行为的任何文档,但是使用以下参数运行 kubectl
解决了我的问题
kubectl get nodes --kubeconfig /etc/kubernetes/kubelet.conf
为方便起见,将 kubelet.conf
重命名为 admin.conf
。