为什么 kubectl 与 sudo 有不同的行为?

Why does kubectl have different behavior with sudo?

运行 kubectl get pods 用 sudo:

sudo kubectl get pods
The connection to the server localhost:8080 was refused - did you specify the right host or port?

运行 作为普通用户:

kubectl get pods
No resources found.

默认情况下,kubectl 在 ~/.kube/config(或指向 $KUBECONFIG 的文件)中查找以确定要连接的服务器。当 运行 作为 root 命令时,您的主目录和环境是不同的。当找不到连接信息时,kubectl 默认为 localhost:8080

普通用户会运行这些命令:

sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf

这会在您的普通用户主目录中复制配置文件,这就是为什么您能够从普通主机而不是 sudo 获得连接的原因。