1

Kubernetes v1.20 で実行

起動プローブと liveness プローブが構成されています。コンテナの最初の起動時に、liveness プローブが引き継ぐまで起動プローブが実行されます (ドキュメントに記載されています)。ただし、liveness プローブが失敗してコンテナーが再起動した場合、startup プローブは再度実行されないようです。これは意図した動作ですか? これはどこにも文書化されていません。

この問題を再現するために、次のコンテナー定義を実行しています (関連部分のみ)。

containers:
      - args:
        - /bin/sh
        - -c
        - touch /tmp/alive; sleep 10000
        image: busybox
        livenessProbe:
          exec:
            command:
            - /bin/sh
            - -c
            - touch /tmp/liveness; test -f /tmp/alive
          failureThreshold: 3
          initialDelaySeconds: 10
          periodSeconds: 2
          successThreshold: 1
          timeoutSeconds: 2
        startupProbe:
          exec:
            command:
            - touch
            - /tmp/startup
          failureThreshold: 3
          periodSeconds: 2
          successThreshold: 1
          timeoutSeconds: 2

liveness プローブが実行されると、/tmp/liveness が作成されます。起動プローブが実行されると、/tmp/startup が作成されます。/tmp/alive を削除することで、活性チェックの失敗をシミュレートできます。

最初の起動時:

$ ls /tmp/
alive     liveness  startup

の後rm /tmp/alive、活性チェックが失敗し、コンテナが再起動されます。次に、新しいコンテナーで:

$ ls /tmp/
alive     liveness

そのため、起動プローブはもう実行されていないようです。

4

1 に答える 1