雲端與容器基礎

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  periodSeconds: 5

某個 Web 應用程式在啟動後到讀取完快取的約60秒內無法處理要求,這段期間對 /ready 回傳503。在 Pod 的容器加上上面的設定時,其效果下列何者正確?

  1. A在 /ready 失敗的期間,Pod 會從 Service 的分配對象中移除而收不到要求,容器不會被重新啟動
  2. B每次 /ready 失敗容器都會被重新啟動,因此在快取讀取完成前會反覆重新啟動
  3. C在 /ready 成功之前,Pod 不會被分配到任何節點,容器也不會啟動
查看答案與解析

正確答案:A. 在 /ready 失敗的期間,Pod 會從 Service 的分配對象中移除而收不到要求,容器不會被重新啟動

readiness 探測檢查容器是否處於可接受要求的狀態,在失敗期間把該 Pod 從 Service 的分配對象中移除。HTTP 探測把200以上、未滿400的回應視為成功,因此在回傳503期間不會被分配,準備就緒後要求才會送達。失敗時重新啟動容器是 liveness 探測的作用,若對啟動需要時間的應用程式只設定間隔很短的 liveness 探測,可能會反覆重新啟動。Pod 在哪個節點上執行,是由排程器而不是探測決定的。

  • A. 正確。readiness 探測決定是否分配要求。
  • B. 失敗時重新啟動的是 liveness 探測。readiness 探測失敗不會重新啟動。
  • C. 探測是對已分配到節點並啟動的容器進行的。分配由排程器決定。
練習這個領域 前往領域頁面

雲端與容器基礎的其他題目

  1. 在 Kubernetes 上的 Web 應用程式中,讓 liveness 探測的檢查處理連相依的資料庫能否連線都一併檢查。這個設定可能發生的問題,下列何者最適當?
  2. 在 Kubernetes 的 HorizontalPodAutoscaler 中,把 Pod 的CPU使用率目標設為70%,Pod 數的範圍設為1~10。目前5個 Pod 的平均CPU使用率為30%。以 ⌈目前數量 × 目前使用率 ÷ 目標使用率⌉(⌈ ⌉ 為無條件進位)求所需 Pod 數時,所需的 Pod 數為下列何者?
  3. 在 Pod 的容器做了上面設定的 Deployment 中,有4個 Pod 在執行,每個 Pod 都使用400m(0.4核心)的CPU。HorizontalPodAutoscaler 的CPU使用率目標為60%,所需 Pod 數以 ⌈目前數量 × 目前使用率 ÷ 目標使用率⌉ 求得。所需的 Pod 數為下列何者?
  4. 在 Kubernetes 中,關於為容器設定的資源 requests 與 limits,下列何者正確?
  5. 有一個可分配資源為CPU 4核心、記憶體 8 GiB 的節點。各 Pod 的容器設定了 requests 為CPU 500m、記憶體 1.5 GiB,limits 為CPU 1核心、記憶體 2 GiB。沒有其他 Pod 與系統預留。這個節點最多可放置的 Pod 數為下列何者?