我什么时候应该在 readinessProbes 中使用命令或参数
When should I use commands or args in readinessProbes
我正在努力通过 killer.sh.for CKAD。我遇到了一个 pod 定义文件,它在就绪探针下有一个命令字段,并且容器执行另一个命令但使用了 args。
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod6
name: pod6
spec:
containers:
- args:
- sh
- -c
- touch /tmp/ready && sleep 1d
image: busybox:1.31.0
name: pod6
resources: {}
readinessProbe: # add
exec: # add
command: # add
- sh # add
- -c # add
- cat /tmp/ready # add
initialDelaySeconds: 5 # add
periodSeconds: 10 # add
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
如果未使用就绪探测器并且隐式创建了此 pod,则不会使用 args。
kubectl run pod6 --image=busybox:1.31.0 --dry-run=client --command -- sh -c "touch /tmp/ready && sleep 1d" > 6.yaml
输出 YAML 如下所示:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod69
name: pod69
spec:
containers:
- command:
- sh
- -c
- touch /tmp/ready && sleep 1d
image: busybox:1.31.9
name: pod69
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
为什么没有在 readinessProbe 和容器上使用命令?
命令什么时候变成参数?
有办法告诉吗?
我已通读此文档:https://kubernetes.io/docs/tasks/inject-data-application/_print/
但我仍然不太了解这种情况以及何时切换到 args。
您在 Kubernetes 中同时拥有 cmd + args 的原因是因为它为您提供了从您尝试 运行 的图像中覆盖默认 Commands + Args 的选项。
在您的特定情况下,busybox 图像没有任何默认命令,因此在 Pod.yaml 文件中的 cmd 或 args 中指定启动命令本质上是相同的。
关于命令何时变为 args 的问题 - 它们不会,当使用您的图像启动容器时,它只是执行 cmd + args。如果 cmd 在(图像和 yaml 文件)中为空,则仅执行 args。
帖子here可能会给你更多的解释
我正在努力通过 killer.sh.for CKAD。我遇到了一个 pod 定义文件,它在就绪探针下有一个命令字段,并且容器执行另一个命令但使用了 args。
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod6
name: pod6
spec:
containers:
- args:
- sh
- -c
- touch /tmp/ready && sleep 1d
image: busybox:1.31.0
name: pod6
resources: {}
readinessProbe: # add
exec: # add
command: # add
- sh # add
- -c # add
- cat /tmp/ready # add
initialDelaySeconds: 5 # add
periodSeconds: 10 # add
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
如果未使用就绪探测器并且隐式创建了此 pod,则不会使用 args。
kubectl run pod6 --image=busybox:1.31.0 --dry-run=client --command -- sh -c "touch /tmp/ready && sleep 1d" > 6.yaml
输出 YAML 如下所示:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod69
name: pod69
spec:
containers:
- command:
- sh
- -c
- touch /tmp/ready && sleep 1d
image: busybox:1.31.9
name: pod69
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
为什么没有在 readinessProbe 和容器上使用命令? 命令什么时候变成参数? 有办法告诉吗?
我已通读此文档:https://kubernetes.io/docs/tasks/inject-data-application/_print/ 但我仍然不太了解这种情况以及何时切换到 args。
您在 Kubernetes 中同时拥有 cmd + args 的原因是因为它为您提供了从您尝试 运行 的图像中覆盖默认 Commands + Args 的选项。 在您的特定情况下,busybox 图像没有任何默认命令,因此在 Pod.yaml 文件中的 cmd 或 args 中指定启动命令本质上是相同的。 关于命令何时变为 args 的问题 - 它们不会,当使用您的图像启动容器时,它只是执行 cmd + args。如果 cmd 在(图像和 yaml 文件)中为空,则仅执行 args。
帖子here可能会给你更多的解释