Kubernetes:我什么时候需要将 /bin/sh -c 添加到我的命令中?

Kubernetes: when do i need to add /bin/sh -c to my command?

我正在准备 CKAD 考试,我正在练习提供的问题 here

我对这两种不同的命令执行方式有疑问。这里提供的示例是一份工作,但我认为这个问题可能更笼统并且可以扩展到所有容器。

作业练习下有两个要求:

Create a job named pi with image perl that runs the command with arguments "perl -Mbignum=bpi -wle 'print bpi(2000)'"

kubectl create job pi  --image=perl -- perl -Mbignum=bpi -wle 'print bpi(2000)'

Create a job with the image busybox that executes the command 'echo hello;sleep 30;echo world

kubectl create job busybox --image=busybox -- /bin/sh -c 'echo hello;sleep 30;echo world'

为什么在第二个命令中我还需要提供 /bin/sh -c?

我怎么知道何时使用它,何时不使用它?

因为在第一个例子中

kubectl create job pi  --image=perl -- perl -Mbignum=bpi -wle 'print bpi(2000)'

你打电话给perl口译员,perl -Mbignum=bpi -wle 'print bpi(2000)'

在第二个示例中,您调用了 bash shell 命令,echo hello;sleep 30;echo world 因此 /bin/sh -c

kubectl create job busybox --image=busybox -- /bin/sh -c 'echo hello;sleep 30;echo world'

--后面说的是在容器内执行的命令。