Pod - это группа контейнеров, представляющая собой логическое понятие. Так что вы не можете действительно exe c в pod. Все, что вы можете сделать, это запустить exe c в один из контейнеров модуля. Команда
kubectl exec
может заставить вас подумать, что вы выполняете запуск в модуле, но на самом деле вы запускаете c в контейнер. Эта команда работает только в том случае, если это один контейнерный модуль. Если в модуле несколько контейнеров, то есть это мульти-контейнерный модуль, вам нужно явно выбрать контейнер, используя параметр -c
.
Вот результат kubectl exec -h
, в котором также упоминаются контейнеры.
Execute a command in a container.
Examples:
# Get output from running 'date' command from pod mypod, using the first container by default
kubectl exec mypod -- date
# Get output from running 'date' command in ruby-container from pod mypod
kubectl exec mypod -c ruby-container -- date
# Switch to raw terminal mode, sends stdin to 'bash' in ruby-container from pod mypod
# and sends stdout/stderr from 'bash' back to the client
kubectl exec mypod -c ruby-container -i -t -- bash -il
Контейнер pause
создается до того, как будет создан любой другой фактический контейнер модуля. Контейнер pause
должен создать linux пространства имен, которые будут совместно использоваться другими контейнерами модуля.
Невозможно выполнить exe c в этот контейнер паузы, используя kubectl exec
, но вы можете выполнить c в нем, используя docker exec
.