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
ファイルのパーミッションを修正する
ほとんどの場合、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
kubectl
でSudo
を実行する必要はありません(実行すべきではありません)。 kubectl
は特別なアクセス許可を必要とせず、HTTPS接続を介してリモートサーバーと完全に対話します。 Kubernetesは実行しているシステムを引き継ぐ傾向があるため、ローカルapiserverに対してkubectl
を何らかの方法で実行している場合でも、ノードにログインするのは奇妙で、同じレベルの管理をリモートで実行できます。
Sudo
の下で実行している場合、一部のファイルの所有権がアクセス不能に変更されている可能性があり、これを(一度)修正できます
Sudo chown -R $USER $HOME/.kube
(リストで、~/.kube/cache
は、myuserではなく、rootが所有しています。)
同じ問題がありました。インストール後に〜/ .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
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
プロキシが設定されているかどうかを確認し、設定されている場合は、localhostおよびクラスタサーバーIPにno_proxyを設定します(〜/ .kube/configファイルserver: https://192.168にあります) .127.3:644).bashrcまたはその他の環境変数ファイル。
no_proxy=localhost, 192.168.127.3