我不能以root身份运行kubectl get节点。为什么?

时间:2018-02-10 05:35:07

标签: kubernetes

在我的主节点上

root@k8smaster:~# kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?
root@k8smaster:~# exit
logout

yoda@k8smaster:~/bin$ kubectl get nodes
NAME        STATUS    ROLES     AGE       VERSION
k8smaster   Ready     master    5d        v1.9.2
k8sworker   Ready     <none>    51s       v1.9.2

为什么我需要以自己的用户身份运行kubectl?

2 个答案:

答案 0 :(得分:1)

迈克尔所说的准确无误; kubectl查看当前用户的主目录,yoda可能是/home/yoda,但对于root几乎肯定是/root

您可以通过使用明确kubectl重新运行--kubeconfig ~yoda/.kube/config命令来快速测试此理论:

kubectl --kubeconfig ~yoda/.kube/config get nodes

您还可以导出shell变量KUBECONFIG,以避免不断包含那个长--kubeconfig语法:

export KUBECONFIG=~yoda/.kube/config
kubectl get nodes

确保您不要在~yoda之间放置任何字符,否则它会在当前用户的主目录中查找yoda目录。< / p>

答案 1 :(得分:0)

kubectl默认情况下kubeconfig需要$HOME/.kube/config

Kubeadm将原始kubeconfig放入/etc/kubernetes/admin.conf

任何用户(包括root用户)都可以执行以下操作,以便kubeconfig在当前用户的主目录中获取$HOME/.kube/config

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

或者,如果您是root用户,则可以运行此命令:

export KUBECONFIG=/etc/kubernetes/admin.conf