У меня есть под с именем nginx, в котором есть два контейнера с именами nginx и busybox. Чтобы создать файл внутри контейнера busybox, мне нужно сделать:
$ kubectl exec -it nginx -c busybox -- bin/sh
# echo sometext > /temp/testfile
# exit
Я хочу упростить его до однострочного, поэтому я пытаюсь:
$ kubectl exec -it nginx -c busybox -- echo sometext > /temp/testfile
Однако это дает мне эту ошибку:
bash: /temp/testfile: No such file or directory
Помещение echo sometext > /temp/testfile между двойными кавычками приводит к этой ошибке:
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "echo sometext > /temp/testfile": stat echo sometext > /temp/testfile: no such file or directory: unknown
Почему это не работает? Есть ли способ сделать такой однострочный?

Попробуй это
kubectl exec -it nginx -c busybox -- sh -c "echo sometext > /temp/testfile"
Это работает. Большое спасибо! Почему здесь требуется sh -c, а в таких вещах, как cat или ls -l, он не нужен?
Помните, что иногда случается, что под Kubernetes уничтожается без вашего контроля; возможно, на узле запущено слишком много модулей Pod или слишком мало, а модуль автомасштабирования кластера выводится из эксплуатации. В этих случаях все, что вы делаете с
kubectl exec, будет потеряно. Хотите вместо этого добавить этот файл в образ Docker?