在我的主节点上
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?
答案 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