0

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/ しかし、この状況といつ引数に切り替えるかを理解することはまだあまりうまくいきませんでした。

4

1 に答える 1