0

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

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

在工作练习下有两个要求:

使用图像 perl 创建一个名为 pi 的作业,该作业使用参数“perl -Mbignum=bpi -wle 'print bpi(2000)'”运行命令

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

使用执行命令 'echo hello;sleep 30;echo world 的图像 busybox 创建一个作业

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

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

我怎么能理解什么时候使用它,什么时候不使用它?

4

1 回答 1

2

因为在第一个例子中

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'

--就是说在此之后它是在容器内执行的命令。

于 2021-07-09T14:39:12.780 回答