未找到配置:/etc/kubernetes/admin.conf -- 设置 kubeadm 工作节点后

问题描述

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

  1. 使用 sudo 运行 join
  2. 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