如何在“多容器 pod”的容器上执行“带参数的命令”?

Rob*_*jan 7 kubernetes kubectl

我有一个应用程序/吊舱:app1有 2 个容器service1service2. 这些服务将日志写入 /var/log/app1Service1.log 和 /var/log/aapp1Service2.log。我想从 mac 的 cli 跟踪日志。尝试如下,但没有奏效。

~ $ 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
~ $
Run Code Online (Sandbox Code Playgroud)

以下命令有效:

kubectl exec app1-6f6749ccdd-4ktwf -c app1Service1 ls
kubectl exec app1-6f6749ccdd-4ktwf -c app1Service1 "ls"
Run Code Online (Sandbox Code Playgroud)

当我将参数传递给命令时看到失败。

Abu*_*ifa 9

添加bash -c或者如果您的容器已sh添加sh -c

kubectl exec app1-6f6749ccdd-4ktwf -c app1Service1 -- bash -c "tail -f -n +1 /var/log/app1Service1.log"
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助

  • 谢谢,那行得通。它也可以在没有 `bash -c ` 的情况下工作。我在命令和容器名称之间缺少`--`。 (4认同)