當我們有多台微服務時,要如何確保每都是穩定的運作,將是一個困難的挑戰,這部分 Kubernetes 已經幫我們設想好了,在 Kubernetes 裡它提供了兩個屬性,livenessProbe 和 readinessProbe。
這個設定的用途是判別服務是否存活,檢驗的方式就是定期戳一個網址,如果是回應 2xx 則是正常,反之如果有異常時,Kubernetes 就會啟動自動復原機制,將有問題的 pod 刪除,重新生成一台新的 pod。
...略...
livenessProbe:
httpGet:
path: /
scheme: HTTP
port: 8080
initialDelaySeconds: 3
periodSeconds: 60
successThreshold: 2
failureThreshold: 5
...略...
這個設定的用途是判別服務使否已經啟動完成,準備可以服務了,如果回應正常的話,Kubernetes 就會將服務對外的線路打開,反之則會關閉。
例如你有一個 API Server 它重度與 Mongodb 跟 Redis 服務互動,如果有 API Server 跟 Mongodb 已經順利連上線,但是 API Server 跟 Redis 連不到,將會導致,某些 API 正常,有些有使用到 Redis 資源的 API 則回應錯誤。這就是一個很好的時機,將 Mongodb 跟 Redis 的連線檢查,包在同個 API,這樣就可以確保系統的行為,如你預期的一樣。