web-dev-qa-db-fra.com

Comment utiliser la commande "kubectl" au lieu de "Sudo kubectl"

Pour chaque commande avec kubectl, je dois utiliser Sudo kubectl

Je comprends la perspective de la sécurité, mais je travaille sur un environnement de test et je veux pouvoir l’utiliser sans Sudo

J'ai essayé d'exécuter Sudo -i et d'utiliser le compte root pour exécuterkubectl get pods mais j'ai reçu: 

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

J'ai remarqué que lorsque je jouais avec https://labs.play-with-k8s.com , l'utilisateur est root et que je peux exécuter kubectl librement. 

Je voulais avoir la même chose sur ma machine Ubuntu avec mon Minikube. 

Lorsque j'exécutekubectl get pods avec mon compte habituel, j'ai reçu l'erreur: 

error: unable to read client-key /home/myuser/.minikube/client.key for minikube due to open /home/myuser/.minikube/client.key: permission denied

J'ai supposé qu'il y a deux manières:
1. Donner à chacun l'accès à /home/myuser/.minikube/
2. Autoriser mon compte à exécuter kubectl sans Sudo 

MODIFIER:
Suite à la demande de @Konstantin Vustin, voici les informations demandées: 

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
4
E235

Vous pouvez utiliser kubectl en tant qu’utilisateur Sudo avec un persistent Sudo Shell .

Sudo -s

puis lancez vos commandes kubectl

kubectl get pods

kubectl describe <resource_type> <resource_name>

enfin sortir du Sudo Shell

exit
1
Webber

Vous n'avez pas besoin (et ne devriez pas) exécuter kubectl avec Sudo. kubectl ne nécessite aucune autorisation spéciale et interagit entièrement avec un serveur distant via une connexion HTTPS. Kubernetes a tendance à prendre en charge le système sur lequel il s'exécute. Ainsi, même si vous exécutiez kubectl sur un serveur local, il serait étrange d'être connecté au nœud et de pouvoir effectuer le même niveau d'administration à distance.

Si vous l'avez exécuté sous Sudo, il est possible que la propriété de certains fichiers soit devenue inaccessible, et vous pouvez résoudre ce problème (une fois) avec

Sudo chown -R $USER $HOME/.kube

(Dans votre liste, ~/.kube/cache appartient à root et non à myuser.)

4
David Maze

J'ai eu le même problème. Il est suggéré (par minikube) de changer la propriété et les permissions de ~/.kube et ~/.minikube après l'installation.

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
2
san1512

Vérifiez si le proxy est défini, si oui, définissez no_proxy pour localhost dans .bashrc ou tout autre fichier de variable d'environnement.

no_proxy=localhost
0
prashant