我想在创建pod的过程中执行一个命令。我看到有两种选择:
kubectl run busybox --image=busybox --restart=Never -- sleep 3600
kubectl run busybox --image=busybox --restart=Never -- /bin/sh -c "sleep 3600"
以上两个命令之间的区别是什么?
-
简而言之,如果您想运行"睡眠3600";。两者执行相同的操作。
-
要了解这些选项的行为,请在中添加试运行选项
-
第一个通过";睡眠";3600〃;作为busybox图像的入口点的自变量/bin/sh";
kubectl run busybox --image=busybox --restart=Never --dry-run=client -o yaml -- sleep 3600
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: busybox
name: busybox
spec:
containers:
- args:
- sleep
- "3600"
image: busybox
name: busybox
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
- 第二个通过"/bin/sh-c"睡眠";3600〃;作为busybox图像的入口点的自变量/bin/sh"。因此,它将打开一个新的shell来运行";睡眠3600〃;在容器内
kubectl run busybox --image=busybox --restart=Never --dry-run=client -o yaml -- /bin/sh -c "sleep 3600"
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: busybox
name: busybox
spec:
containers:
- args:
- /bin/sh
- -c
- sleep 3600
image: busybox
name: busybox
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}
- 如开头所述;睡眠3600〃;但是当您想要按容器运行多个命令时,这种方法是有用的,例如";睡眠3600〃";回声boo";。所以语法应该是
kubectl run busybox --image=busybox --restart=Never -- /bin/sh -c "sleep 3600;echo boo"