web-dev-qa-db-ja.com

「Sudo kubectl」の代わりに「kubectl」コマンドを使用する方法

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?

https://labs.play-with-k8s.com で遊んでいたとき、ユーザーはrootであり、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

私は2つの方法があると思っていました:
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
8
E235

ファイルのパーミッションを修正する

ほとんどの場合、kubectlファイルの所有者はユーザーではありません。

以下のコマンドを使用してこれらの権限を設定できます。

Sudo chown -R $USER $HOME/.kube

sudoでkubectlを実行

または、 persistent Sudo Shell を使用して、sudoユーザーとしてkubectlを実行できます。

Sudo -s

次に、kubectlコマンドを実行します

kubectl get pods

kubectl describe <resource_type> <resource_name>

最後にSudo Shellを終了します

exit
7
Webber

kubectlSudoを実行する必要はありません(実行すべきではありません)。 kubectlは特別なアクセス許可を必要とせず、HTTPS接続を介してリモートサーバーと完全に対話します。 Kubernetesは実行しているシステムを引き継ぐ傾向があるため、ローカルapiserverに対してkubectlを何らかの方法で実行している場合でも、ノードにログインするのは奇妙で、同じレベルの管理をリモートで実行できます。

Sudoの下で実行している場合、一部のファイルの所有権がアクセス不能に変更されている可能性があり、これを(一度)修正できます

Sudo chown -R $USER $HOME/.kube

(リストで、~/.kube/cacheは、myuserではなく、rootが所有しています。)

6
David Maze

同じ問題がありました。インストール後に〜/ .kubeと〜/ .minikubeの所有権と権限を変更することを(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
2
Sand1512

kubectlSudoなしで実行できるようにする方法

- 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
1
Eugene Lopatkin

プロキシが設定されているかどうかを確認し、設定されている場合は、localhostおよびクラスタサーバーIPにno_proxyを設定します(〜/ .kube/configファイルserver: https://192.168にあります) .127.3:644).bashrcまたはその他の環境変数ファイル。

no_proxy=localhost, 192.168.127.3
0
prashant