雲端與容器基礎
readinessProbe:
httpGet:
path: /ready
port: 8080
periodSeconds: 5某個 Web 應用程式在啟動後到讀取完快取的約60秒內無法處理要求,這段期間對 /ready 回傳503。在 Pod 的容器加上上面的設定時,其效果下列何者正確?
- A在 /ready 失敗的期間,Pod 會從 Service 的分配對象中移除而收不到要求,容器不會被重新啟動
- B每次 /ready 失敗容器都會被重新啟動,因此在快取讀取完成前會反覆重新啟動
- C在 /ready 成功之前,Pod 不會被分配到任何節點,容器也不會啟動
查看答案與解析
正確答案:A. 在 /ready 失敗的期間,Pod 會從 Service 的分配對象中移除而收不到要求,容器不會被重新啟動
readiness 探測檢查容器是否處於可接受要求的狀態,在失敗期間把該 Pod 從 Service 的分配對象中移除。HTTP 探測把200以上、未滿400的回應視為成功,因此在回傳503期間不會被分配,準備就緒後要求才會送達。失敗時重新啟動容器是 liveness 探測的作用,若對啟動需要時間的應用程式只設定間隔很短的 liveness 探測,可能會反覆重新啟動。Pod 在哪個節點上執行,是由排程器而不是探測決定的。
- A. 正確。readiness 探測決定是否分配要求。
- B. 失敗時重新啟動的是 liveness 探測。readiness 探測失敗不會重新啟動。
- C. 探測是對已分配到節點並啟動的容器進行的。分配由排程器決定。