在 Kubernetes 中启动 Pod 时如何 运行 命令?
How do I run a command while starting a Pod in Kubernetes?
我想在创建 pod 的过程中执行命令。
我看到两个可用选项:
kubectl run busybox --image=busybox --restart=Never -- sleep 3600
kubectl run busybox --image=busybox --restart=Never -- /bin/sh -c "sleep 3600"
以上两个命令有什么区别?
简而言之,如果您想运行“睡3600”,结果没有区别。
两者执行相同的操作。
要了解这些选项的行为,请向其添加 dry-运行 选项
第一个将“sleep”和“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”、“sleep”和“3600”作为参数传递给 busybox 图像的入口点,即“/bin/sh”。所以它会在容器里面打开一个新的shell to 运行 "sleep 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: {}
- 如开头所述,它对“sleep 3600”的结果没有任何影响,但是当您想要 运行 容器的多个命令时,此方法很有用,例如“sleep 3600”&“回声嘘”。所以语法是
kubectl run busybox --image=busybox --restart=Never -- /bin/sh -c "sleep 3600;echo boo"
我想在创建 pod 的过程中执行命令。 我看到两个可用选项:
kubectl run busybox --image=busybox --restart=Never -- sleep 3600
kubectl run busybox --image=busybox --restart=Never -- /bin/sh -c "sleep 3600"
以上两个命令有什么区别?
简而言之,如果您想运行“睡3600”,结果没有区别。 两者执行相同的操作。
要了解这些选项的行为,请向其添加 dry-运行 选项
第一个将“sleep”和“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”、“sleep”和“3600”作为参数传递给 busybox 图像的入口点,即“/bin/sh”。所以它会在容器里面打开一个新的shell to 运行 "sleep 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: {}
- 如开头所述,它对“sleep 3600”的结果没有任何影响,但是当您想要 运行 容器的多个命令时,此方法很有用,例如“sleep 3600”&“回声嘘”。所以语法是
kubectl run busybox --image=busybox --restart=Never -- /bin/sh -c "sleep 3600;echo boo"