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