如何使用“kubectl”命令,而不是“命令kubectl”

问题描述 投票:5回答:6

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

我明白了安全的角度,但我的工作是测试环境,我希望能够使用它没有sudo

我试图运行sudo -i和使用root帐户runkubectl get pods但我收到的:

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

我注意到,当我与https://labs.play-with-k8s.com播放时,用户是根,我可以自由地运行kubectl

我希望有我的Ubuntu机器上同样的事情与我Minikube。

当我与我的正常帐户runkubectl 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
kubernetes kubectl minikube
6个回答
5
投票

修复文件权限

最有可能您的kubectl文件不是由您的用户拥有。

您可以使用以下命令来设置这些权限。

sudo chown -R $USER $HOME/.kube

运行kubectl使用sudo

另外,您可以为使用persistent sudo shell sudo的用户身份运行kubectl。

sudo -s

然后运行命令kubectl

kubectl get pods

kubectl describe <resource_type> <resource_name>

终于退出须藤壳

exit

6
投票

您不需要(也不应该)与kubectl运行sudokubectl不需要任何特殊权限,并与通过HTTPS连接远程服务器完全交互。 Kubernetes往往接管其上运行的系统,所以即使你以某种方式被运行kubectl针对本地API服务器,被记录到节点都将是奇怪的,你可以远程执行管理的同一水平。

如果你一直在sudo运行它,它可能已经改变了一些文件的所有权是不可访问,并可以解决这个问题(一次)与

sudo chown -R $USER $HOME/.kube

(在你的房源,~/.kube/cache的所有者是root,而不是为myuser)。


2
投票

我遇到过同样的问题。建议(由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

1
投票

Ansible方式让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

0
投票

检查代理设置,如果再设置是NO_PROXY本地主机和集群服务器的IP(你可以找到在〜/ .kube / config文件服务器:https://192.168.127.3:6443)的.bashrc或者任何其他环境变量文件。

no_proxy=localhost, 192.168.127.3

-2
投票

setuid的尝试:

chmod u+s kubectl

该键可以通过kubectl读取,而不是向所有人开放。

© www.soinside.com 2019 - 2024. All rights reserved.