Как выполнить "команду с аргументами" в контейнере "многоконтейнерного модуля"?

У меня есть приложение / модуль: app1 с 2 контейнерами service1 а также service2, Эти службы записывают журнал в /var/log/app1Service1.log и /var/log/aapp1Service2.log. Я хотел бы вести журнал из Mac. Пробовал, как показано ниже, но не работает.

~ $ kubectl exec app1-6f6749ccdd-4ktwf -c app1Service1 "tail -f -n +1 /var/log/app1Service1.log"
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"tail -f -n +1 /var/log/app1Service1.log\": stat tail -f -n +1 /var/log/app1Service1.log: no such file or directory"

command terminated with exit code 126
~ $

ниже работает команда:

kubectl exec app1-6f6749ccdd-4ktwf -c app1Service1 ls
kubectl exec app1-6f6749ccdd-4ktwf -c app1Service1 "ls"

Видя сбои, когда я передаю аргументы в команду.

2 ответа

Решение

Добавлять bash -c или если ваш контейнер имеет sh затем добавьте sh -c

kubectl exec app1-6f6749ccdd-4ktwf -c app1Service1 -- bash -c "tail -f -n +1 /var/log/app1Service1.log"

Надеюсь это поможет

Попробуйте это, войдите в контейнер, запустив ниже cmdkubectl exec -it app1-6f6749ccdd-4ktwf -c app1Service1 bash

Теперь вы находитесь внутри контейнера, проверьте, существует ли файл и выполните tail -f /var/log/app1Service1.log

Другие вопросы по тегам