原文出處:https://blog.csdn.net/qq_16077957/article/details/80023089
優雅啓動
很常見的一個場景,一個服務剛啓動,可能會有一堆東西要加載(比如我這邊需要讀數據庫中一堆東西)需要一些時間,而這段時間裏,我不希望kubernetes 把請求打到這些還沒初始化的pod上。
kubernetes提供了一個叫探針的東西,可以用來檢測pod是否就緒,只有就緒的情況纔會把請求打過來,如果非就緒狀態,這些pod會從service的load balancer中暫時移除。
探針可以是一個command或者是一個HTTP的請求,這邊使用的是一個HTTP請求的形式。需要保證程序在正常情況下可以訪問/heartbeat , 我一般會給這個接口一個success的返回。
readinessProbe:
httpGet:
path: /heartbeat
port: 8001
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 1
periodSeconds: 30
1
2
3
4
5
6
7
8
以上是一個readiness probe(就緒探針)的一般配置。
httpGet 使用http get請求作爲探針,裏邊配置了get請求
initialDelaySeconds 鈣素kubelet在第一次執行探針之前要等待30秒
timeoutSeconds 探針超時時間,超過1s則認爲探針失敗了
periodSeconds 探針的執行頻率,默認是1s
successThreshold:探測失敗後,最少連續探測成功多少次才被認定爲成功。默認是 1。對於 liveness 必須是 1。最小值是 1。
failureThreshold:探測成功後,最少連續探測失敗多少次才被認定爲失敗。默認是 3。最小值是 1。
優雅關閉
優雅關閉是指在pod準備關閉時,可能還需要做一些處理,比如保存數據等。這期間服務不會接受新的請求。kubernetes提供了優雅關閉的配置
terminationGracePeriodSeconds: 60
1
在給pod發出關閉指令時,k8s將會給應用發送SIGTERM信號,程序只需要捕獲SIGTERM信號並做相應處理即可。配置爲k8s會等待60秒後關閉。