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
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
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.)
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
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