Kubernetes 如何使用;“kubectl”;命令而不是“命令”;sudo kubectl“;

Kubernetes 如何使用;“kubectl”;命令而不是“命令”;sudo kubectl“;,kubernetes,kubectl,minikube,Kubernetes,Kubectl,Minikube,对于使用kubectl的每个命令,我需要使用sudo kubectl 我理解安全观点,但我正在测试环境中工作,我希望能够在没有sudo的情况下使用它 我试图运行sudo-I并使用root帐户运行kubectl get pods,但我收到了: The connection to the server localhost:8080 was refused - did you specify the right host or port? 我注意到,当我玩的时候,用户是root,我可以自由运行kub

对于使用
kubectl
的每个命令,我需要使用
sudo kubectl

我理解安全观点,但我正在测试环境中工作,我希望能够在没有
sudo
的情况下使用它

我试图运行
sudo-I
并使用root帐户运行
kubectl get pods
,但我收到了:

The connection to the server localhost:8080 was refused - did you
specify the right host or port?
我注意到,当我玩的时候,用户是root,我可以自由运行
kubectl

我想用我的Minikube在我的Ubuntu机器上拥有同样的东西

当我使用我的常规帐户运行
kubectl get pods
时,我收到了错误:

error: unable to read client-key /home/myuser/.minikube/client.key for minikube due to open /home/myuser/.minikube/client.key: permission denied
我想有两种方法:
1.允许每个人访问
/home/myuser/.minikube/

2.授予我的帐户运行
kubectl
而不运行
sudo

编辑:
根据@Konstantin Vustin请求,以下是请求的信息:

myuser@ubuntu:/usr/local/bin$ ls -l  $(which kubectl)
-rwxrwxr-x 1 myuser myuser 54308597 Jun 13 05:21 /usr/local/bin/kubectl

myuser@ubuntu:/usr/local/bin$ ls -la ~ | grep kube
drwxr-xr-x  5 myuser myuser   4096 Jun 17 02:25 .kube
drwxrwxr-x 10 myuser myuser   4096 Jun 13 05:18 .minikube

myuser@ubuntu:/usr/local/bin$ ls -l ~/.kube
total 24
drwxr-xr-x  3 root  root  4096 Jun 13 05:26 cache
-rw-------  1 myuser myuser 911 Jun 13 05:27 config
drwxrwxr-x  3 myuser myuser 4096 Jul 11 01:37 http-cache
请尝试setuid:

chmod u+s kubectl

kubectl可以读取密钥,而不是对所有人开放。

修复文件权限

很可能您的kubectl文件不属于您的用户

您可以使用下面的命令设置这些权限

sudo chown -R $USER $HOME/.kube
与sudo一起运行kubectl

或者,您可以使用

然后运行kubectl命令

kubectl get pods

kubectl describe <resource_type> <resource_name>
您不需要(也不应该)使用
sudo
运行
kubectl
kubectl
不需要任何特殊权限,并且完全通过HTTPS连接与远程服务器交互。Kubernetes往往会接管它所运行的系统,因此,即使您以某种方式对本地apiserver运行
kubectl
,登录节点也会很奇怪,您可以远程执行相同级别的管理

如果您一直在
sudo
下运行它,它可能已将某些文件的所有权更改为不可访问,您可以使用


(在您的列表中,
~/.kube/cache
归root所有,而不是myuser所有。)

我也有同样的问题。建议(minikube)在安装后更改~/.kube和~/.minikube的所有权和权限

sudo mv /root/.kube $HOME/.kube # this will write over any previous configuration
sudo chown -R $USER $HOME/.kube
sudo chgrp -R $USER $HOME/.kube

sudo mv /root/.minikube $HOME/.minikube # this will write over any previous configuration
sudo chown -R $USER $HOME/.minikube
sudo chgrp -R $USER $HOME/.minikube

检查是否设置了代理,如果设置了,则在.bashrc或任何其他环境变量文件中为本地主机和群集服务器IP(可在~/.kube/config文件服务器:中找到)设置否\u代理

no_proxy=localhost, 192.168.127.3

使
kubectl
能够在没有
sudo
的情况下运行的一种可行方法:

- name: Setup kubeconfig for user
  become: no
  command: "{{ item }}"
  with_items:
    - mkdir -p /home/$USER/.kube
    - sudo cp -i /etc/kubernetes/admin.conf /home/$USER/.kube/config
    - sudo chown $USER:$USER /home/$USER/.kube/config
也可以手动运行以下命令:

mkdir -p /home/$USER/.kube
cp -i /etc/kubernetes/admin.conf /home/$USER/.kube/config
chown $USER:$USER /home/$USER/.kube/config

我做到了,它将
kubectl
权限从
-rwxr-x
更改为
-rwsrwxr-x
,但在运行
kubectl get pods
时,我仍然收到错误
权限被拒绝root@KunLi在哪里记录了这个要求?使随机二进制文件成为setuid根实际上不是一个好主意。在
kubectl
的情况下,我可以使用中间配置映射从本地主机读取任意文件,这将是不好的。我现在尝试了你的建议,但我仍然收到了被拒绝的
权限。实际上,没有。可能是因为我运行了
chmod u+s kubectl
?好,我将其更改回原始权限:
chmod 775 kubectl
,现在它可以与
sudo-s
一起使用。伟大的这就是我想要的。thanksTry重新安装kubectl如下。然后重试回答。在
sudo chown-R$USER$HOME/.kube
之后,如果您仍然获得
权限被拒绝
错误,请退出外壳,打开一个新的终端,它应该开始工作。您可以显示输出:
ls-l$(哪个kubectl)
ls-la ~ | grep kube
ls-l ~/.kube
?我用要求的信息编辑了我的答案和
ls-l/home/myuser/.minikube/
no_proxy=localhost, 192.168.127.3
- name: Setup kubeconfig for user
  become: no
  command: "{{ item }}"
  with_items:
    - mkdir -p /home/$USER/.kube
    - sudo cp -i /etc/kubernetes/admin.conf /home/$USER/.kube/config
    - sudo chown $USER:$USER /home/$USER/.kube/config
mkdir -p /home/$USER/.kube
cp -i /etc/kubernetes/admin.conf /home/$USER/.kube/config
chown $USER:$USER /home/$USER/.kube/config