CKAD の killer.sh. を調べています。readiness プローブの下にコマンド フィールドがある 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: {}
readiness プローブが使用されず、この 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/ しかし、この状況といつ引数に切り替えるかを理解することはまだあまりうまくいきませんでした。