webentwicklung-frage-antwort-db.com.de

Verwendung des Befehls "kubectl" anstelle von "Sudo kubectl"

Für jeden Befehl mit kubectl muss ich Sudo kubectl verwenden. 

Ich verstehe die Sicherheitsperspektive, arbeite aber an einer Testumgebung und möchte sie ohne Sudo verwenden können. 

Ich habe versucht, Sudo -i auszuführen und das root-Konto zu verwenden, umkubectl get pods auszuführen, aber ich erhielt: 

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

Ich habe bemerkt, dass der Benutzer root ist und ich kubectl frei ausführen kann, wenn ich mit https://labs.play-with-k8s.com spielte. 

Ich wollte mit meinem Minikube dasselbe auf meiner Ubuntu-Maschine haben. 

Wenn ich kubectl get pods mit meinem regulären Konto ausführte, erhielt ich den Fehler: 

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

Ich nahm an, dass es zwei Möglichkeiten gibt:
1. Geben Sie jedem Zugriff auf /home/myuser/.minikube/
2. Erteilen Sie meinem Konto die Berechtigung, kubectl ohne Sudo auszuführen. 

BEARBEITEN:
Nach einer Anfrage von @Konstantin Vustin werden hier die gewünschten Informationen angezeigt: 

[email protected]:/usr/local/bin$ ls -l  $(which kubectl)
-rwxrwxr-x 1 myuser myuser 54308597 Jun 13 05:21 /usr/local/bin/kubectl

[email protected]:/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

[email protected]:/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

Sie können als Sudo-Benutzer mit einer persistenten Sudo Shell kubectl arbeiten.

Sudo -s

führen Sie dann Ihre kubectl-Befehle aus

kubectl get pods

kubectl describe <resource_type> <resource_name>

endlich die Sudo Shell verlassen

exit
1
Webber

Sie müssen kubectl nicht mit Sudo ausführen (und sollten dies auch nicht). kubectl benötigt keine besonderen Berechtigungen und interagiert vollständig mit einem Remote-Server über eine HTTPS-Verbindung. Kubernetes neigt dazu, das System zu übernehmen, auf dem es läuft, selbst wenn Sie kubectl gegen einen lokalen Apiserver ausgeführt haben, wäre es völlig seltsam, am Knoten angemeldet zu sein, und Sie könnten die gleiche Administrationsebene remote ausführen.

Wenn Sie es unter Sudo ausgeführt haben, hat sich möglicherweise der Besitz einiger Dateien geändert, sodass Sie nicht mehr darauf zugreifen können. Sie können dies (einmalig) mit beheben

Sudo chown -R $USER $HOME/.kube

(In Ihrem Eintrag befindet sich ~/.kube/cache im Besitz von root, nicht von myuser.)

4
David Maze

Ich hatte das gleiche Problem. Es wird empfohlen (von minikube), den Besitz und die Berechtigungen von ~/.kube und ~/.minikube nach der Installation zu ändern.

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

Ein möglicher Weg, um kubectl ohne Sudo laufen zu lassen:

- 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

Oder Sie können diese Befehle manuell ausführen:

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

Prüfen Sie, ob der Proxy gesetzt ist. Wenn ja, setzen Sie no.proxy für localhost in .bashrc oder einer anderen Umgebungsvariablendatei.

no_proxy=localhost
0
prashant