在 Kubernetes v1.20 上運行
我配置了啟動探針和活性探針。在容器的第一次啟動時,將執行啟動探測器,直到活性探測器接管(如檔案所述)。但是,如果 liveness 探針失敗并且容器重新啟動,則似乎不會再次執行啟動探針。這是預期的行為嗎?我在任何地方都找不到這方面的記錄。
為了重現這個問題,我正在運行以下容器定義(僅限相關部分):
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
所以似乎不再執行啟動探測器。
uj5u.com熱心網友回復:
可能要檢查您的 K8 版本是否受此問題影響:
https://github.com/kubernetes/kubernetes/issues/101064
或者
https://github.com/kubernetes/kubernetes/issues/102230
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/370058.html
標籤:Kubernetes 活性探针 启动探针
