Kubernetes Pods 優雅啓動和關閉

原文出處: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秒後關閉。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章