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

时间:2018-12-04 02:50:54

标签: kubernetes kubectl

我有一个app / pod: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
~ $

以下命令有效:

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

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

2 个答案:

答案 0 :(得分:2)

添加bash -c,或者如果您的容器有sh,则添加sh -c

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

希望这会有所帮助

答案 1 :(得分:0)

尝试此操作,通过运行以下cmd登录到容器 kubectl exec -it app1-6f6749ccdd-4ktwf -c app1Service1 bash

现在您位于容器内,检查文件是否存在并执行tail -f /var/log/app1Service1.log