kubectl exe c работает с отдельными командами, но я не могу войти в оболочку bash - PullRequest
1 голос
/ 09 июля 2020

Я использую macOS Catalina 10.15.4 , и я использую minikube v1.11.0 и kubernetes v1.18.3 , оба установлены из brew . Minikube инициализируется движком docker.

Команда инициализации настроена так:

      containers:
        - name: database
          image: "mysql:5.6"
          imagePullPolicy: IfNotPresent
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: 12345
            - name: MYSQL_USER
              value: user
            - name: MYSQL_PASSWORD
              value: password
            - name: MYSQL_DATABASE
              value: db

Я пытаюсь открыть скрипт bash для один из моих запущенных контейнеров kubectl. Из онлайн-исследования видно, что это должна быть команда, которая откроет окно bash в моем терминале:

minikube kubectl exec -it --namespace=tools test-pod -- bash

Однако, когда я запускаю его, я получаю следующую трассировку:

Error: unknown shorthand flag: 'i' in -it See 'minikube kubectl --help' for usage.

Кажется, я не хочу, чтобы я использовал какие-либо аргументы в моей команде . Что-то мне не хватает, или я пытаюсь использовать устаревшую команду?

Примечание. Я могу запустить exec, но не для открытие скрипта bash. Например, я могу запустить следующую команду:

minikube kubectl exec test-pod -- ls /

И она выводит следующее:

kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
bin
boot
dev
docker-entrypoint-initdb.d
entrypoint.sh
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

Изменить: Я попытался выполнить следующую команду:

minikube kubectl exec --stdin --tty --namespace=tools test-pod -- sh

И я получил следующую трассировку:

Error: unknown flag: --stdin
See 'minikube kubectl --help' for usage.

Кажется, что какие-то флаги, короткие или длинные, не работают, и я не могу выяснить, почему бы им не стать.

Ответы [ 3 ]

4 голосов
/ 10 июля 2020

minikube kubectl требуется -- после команды, если вы хотите использовать его с аргументами:

$ minikube kubectl -- exec --stdin --tty --namespace=tools test-pod -- sh

Вы также можете использовать простой kubectl

Если бы просто убедитесь, что ваш ~/.kube/config указывает на правильный контекст / кластер minikube. Как правило, любая команда minikube, которую вы запускаете из оболочки, приведет к изменению контекста вашего кластера minikube. т.е. minikube ssh

Тогда просто используйте kubectl

$ kubectl exec --stdin --tty --namespace=tools test-pod -- sh
0 голосов
/ 13 июля 2020

Итак, я нашел решение:

В моей конфигурации инициализация minikube с помощью minikube start --driver=docker не приводит к успешной инициализации всего. Я изменил свой драйвер на virtualbox, и minikube смог установить s sh и продолжить работу без каких-либо проблем.

Установка с драйвером docker обычно вызывает проблемы, как показано в этой ветке GitHub : https://github.com/kubernetes/minikube/issues/7332

0 голосов
/ 09 июля 2020

Я не знаком с minikube, но вы должны иметь возможность запросить синтаксис команды с помощью:

minikube kubectl exec --help

Возможно, короткие флаги были заменены длинными:

minikube kubectl exec --stdin --tty ...

Также возможно, что контейнер включает не bash, а другую оболочку:

minikube kubectl exec --stdin --tty --namespace=tools test-pod -- sh
minikube kubectl exec --stdin --tty --namespace=tools test-pod -- ash
...