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
そのため、起動プローブはもう実行されていないようです。