Как войти в pod как root?

#linux #kubernetes

#linux #kubernetes

Вопрос:

В настоящее время я вхожу в pod как пользователь mysql, используя команду:

kubectl exec -it PODNAME -n NAMESPACE bash

Я хочу ввести контейнер как root. Я попробовал следующую команду:

kubectl exec -it PODNAME -n NAMESPACE -u root ID /bin/bash

kubectl exec -it PODNAME -n NAMESPACE -u root ID bash

Должен быть способ. 🙂

Комментарии:

1. Я нашел ответ. Вы не можете войти в pod напрямую как root через kubectl. Вы можете узнать, на каком узле запущен модуль, затем узнать его идентификатор изображения и войти в узел. затем вы должны выполнить через docker: sudo docker exec -it -u root [DOCKER ID] /bin/bash

Ответ №1:

Я нашел ответ.

Вы не можете войти в pod напрямую как root через kubectl.

Вы можете выполнить следующие шаги.

1) узнайте, на каком узле он запущен kubectl get po -n [NAMESPACE] -o wide

2) ssh-узел

3) найдите контейнер docker sudo docker ps | grep [namespace]

4) войдите в контейнер как root sudo docker exec -it -u root [DOCKER ID] /bin/bash

Комментарии:

1. На самом деле нет абсолютно никакой разницы между выполнением kubectl exec и docker exec . Это просто дополнительная работа.

2. нет, @suren, если в pod есть несколько docker, это определенно будет отличаться.

3. нет, это не так. Вы просто переходите -c , чтобы указать, к какому контейнеру вы хотите получить доступ.

4. Это абсолютно другое. Вы не можете указать -u root в команде kubectl

5. @Ilya это зависит от того, где запущен ваш узел. Если вы запускаете их в облачном кластере, должен быть вычислительный экземпляр, доступный по ssh ( linux.die.net/man/1/ssh ) на котором размещен агент k8s, если вы работаете на KinD, тогда вы можете просто docker exec -it [NAME_OF_K8S_NODE_CONTAINER] /bin/bash .

Ответ №2:

На самом деле уже есть возможность подключиться через kubectl addon kubectl-plugins. Найдено решение, отвечающее на связанный вопрос.

 git clone https://github.com/jordanwilson230/kubectl-plugins.git
cd kubectl-plugins
./install-plugins.sh
source ~/.bash_profile
kubectl ssh -u root suse

Connecting...
Pod: suse
Namespace: NONE
User: root
Container: NONE
Command: /bin/sh

If you don't see a command prompt, try pressing enter.
sh-5.0#
  

Комментарии:

1. Это был более полезный ответ для меня. Для этого не требуется, чтобы у вас был SSH-доступ к узлам kubernetes — вам нужно только иметь возможность создать другой pod в том же пространстве имен.

Ответ №3:

SSH как root для модуля kubernates. Для тех, кто на платформе Windows использует minikube. Сначала вы подключаетесь к ssh внутри minikube

 minikube ssh --user root 
  

Затем вам нужно найти нужный контейнер docker

 docker ps | grep NAME_POD
  

Скопируйте полное имя контейнера docker, затем используйте docker exec:

 sudo docker exec -it -u root FQDN_CONTAINER bash
  

В моем случае это было :

 sudo docker exec -it -u root k8s_jupyter_my-jupyter-0_default
_f05e2913-f1fd-4084-a8e8-e783519d4a71_0 bash
  

Однажды у меня был полный root-доступ в bash внутри POD.