我正在用我的方式通过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: {}如果没有使用准备探测器,并且这个吊舱是隐式创建的,那么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和容器?什么时候命令变成了args?有什么办法可以说吗?
我已经阅读了这篇文档:印刷/,但我仍然不太了解这种情况以及何时切换到args。
发布于 2021-12-16 15:35:28
在Kubernetes中同时使用cmd + args的原因是,它为您提供了从试图运行的映像中重写默认命令+ Args的选项。在特定情况下,busybox映像没有任何默认命令,因此在Pod.yaml文件中指定cmd或args中的起始命令本质上是相同的。对于do命令何时变成args的问题,当使用您的映像旋转容器时,它只是执行cmd + args。如果cmd是空的(图像和yaml文件都是空的),那么只执行args。
线程这里可能会给您更多的解释。
https://stackoverflow.com/questions/70371361
复制相似问题