什麼是Pod

Kubernetes 中配置並執行的最小單位。把1個以上的容器組合在一起,其中的容器共用IP位址等網路命名空間與磁碟區,彼此可透過 localhost 通訊。通常是1個應用程式容器,視需要再加上輔助容器。Pod 是用完即丟的,重新建立時名稱與IP位址一般會改變,因此以 Deployment 等維持 Pod 的數量,並以 Service 提供穩定的連線目標來使用。

日文名稱: Pod

「Pod」出現在1領域的13道練習題中(雲端與容器基礎等)。

這個名詞所屬的領域: 雲端與容器基礎

練習Pod的題目

在 Kubernetes 中,指定 replicas: 3 的 Deployment 有3個 Pod 在執行。以 kubectl delete pod 刪除其中1個 Pod 時發生的事,下列何者正確?

  1. ADeployment 的設定也會改寫成 replicas: 2,Pod 維持2個繼續執行
  2. B控制器偵測到實際數量少於指定的3個,並建立1個新的 Pod
  3. C屬於該 Deployment 的另外2個 Pod 也會被刪除,整個 Deployment 停止
查看答案與解析

正確答案:B. 控制器偵測到實際數量少於指定的3個,並建立1個新的 Pod

在 Kubernetes 中,使用者宣告「執行3個 Pod」這樣的期望狀態,控制器則反覆觀察實際狀態,若有差異就進行操作使其接近宣告(調和,reconcile)。刪除1個 Pod 後實際數量變成2,因此 ReplicaSet 的控制器會建立新的 Pod 回到3個。因節點故障而失去 Pod 時,也會以同樣的機制在其他節點上重新建立 Pod。真正想減少 Pod 數量時,不是刪除 Pod,而是變更 Deployment 的 replicas。

在 Kubernetes 的 Deployment 中,把 Pod 範本中的容器映像檔改成新版本。在預設的更新方式(RollingUpdate)下發生的事,下列何者正確?

  1. A建立新的 ReplicaSet,一邊增加新版本的 Pod 一邊減少舊版本的 Pod。舊的 ReplicaSet 以 Pod 數為0的狀態保留,供回復使用
  2. B在不重新建立 Pod 的情況下,就地把執行中 Pod 內的容器映像檔換成新版本,因此 Pod 的IP位址與名稱都不會改變
  3. C先同時刪除所有舊版本的 Pod,再一起建立新版本的 Pod,因此更新期間服務會暫時停止
查看答案與解析

正確答案:A. 建立新的 ReplicaSet,一邊增加新版本的 Pod 一邊減少舊版本的 Pod。舊的 ReplicaSet 以 Pod 數為0的狀態保留,供回復使用

Pod 範本改變時,Deployment 會為新範本建立 ReplicaSet,一邊確認新的 Pod 已準備就緒,一邊逐步減少舊 ReplicaSet 的 Pod。因此在更新期間,也有一定數量的 Pod 持續處理要求。舊的 ReplicaSet 會以 Pod 數為0的狀態保留,所以可用 kubectl rollout undo 回到前一版。先刪除全部 Pod 再重新建立的方式是 Recreate,只在明確指定時使用。

解析中的「Pod」

出現「Pod」的題目(13題)

  1. 在 Kubernetes 中,指定 replicas: 3 的 Deployment 有3個 Pod 在執行。以 kubectl delete pod 刪除其中1個 Pod 時發生的事,下列何者正確?
  2. 在 Kubernetes 的 Deployment 中,把 Pod 範本中的容器映像檔改成新版本。在預設的更新方式(RollingUpdate)下發生的事,下列何者正確?
  3. 在 replicas: 10 的 Deployment 中,把滾動更新的設定設為 maxSurge: 25%、maxUnavailable: 25%。更新途中 Pod 總數的上限與可用 Pod 數的下限,其組合下列何者正確?
  4. 在 Kubernetes 中,Pod 每次重新建立時IP位址都會改變。讓其他應用程式能以不變的名稱與位址,連線到以標籤選出的多個 Pod 並分散負載的資源,是下列何者?
  5. 某個 Web 應用程式在啟動後到讀取完快取的約60秒內無法處理要求,這段期間對 /ready 回傳503。在 Pod 的容器加上上面的設定時,其效果下列何者正確?
  6. 在 Kubernetes 的 HorizontalPodAutoscaler 中,把 Pod 的CPU使用率目標設為70%,Pod 數的範圍設為1~10。目前5個 Pod 的平均CPU使用率為30%。以 ⌈目前數量 × 目前使用率 ÷ 目標使用率⌉(⌈ ⌉ 為無條件進位)求所需 Pod 數時,所需的 Pod 數為下列何者?
  7. 在 Pod 的容器做了上面設定的 Deployment 中,有4個 Pod 在執行,每個 Pod 都使用400m(0.4核心)的CPU。HorizontalPodAutoscaler 的CPU使用率目標為60%,所需 Pod 數以 ⌈目前數量 × 目前使用率 ÷ 目標使用率⌉ 求得。所需的 Pod 數為下列何者?
  8. 有一個可分配資源為CPU 4核心、記憶體 8 GiB 的節點。各 Pod 的容器設定了 requests 為CPU 500m、記憶體 1.5 GiB,limits 為CPU 1核心、記憶體 2 GiB。沒有其他 Pod 與系統預留。這個節點最多可放置的 Pod 數為下列何者?
  9. 在 Kubernetes 中,作為部署與管理的最小單位,把1個以上的容器組合在一起並讓它們共用同一IP位址與磁碟區的是下列何者?
  10. 在 Kubernetes 叢集中,希望把到達同一個主機名稱的 HTTPS 要求中,路徑以 /api 開頭的分配給 api 的 Service,其他的分配給 web 的 Service。適合用來訂定這個分配規則的資源是下列何者?
  11. 把資料庫的密碼存放在 Kubernetes 的 Secret 中。關於 Secret 的說明,下列何者正確?
  12. 在 Kubernetes 上的 Web 應用程式中,讓 liveness 探測的檢查處理連相依的資料庫能否連線都一併檢查。這個設定可能發生的問題,下列何者最適當?
  13. 在 Kubernetes 中,關於為容器設定的資源 requests 與 limits,下列何者正確?

相關名詞

Kubernetes HTTP(超文字傳輸協定) 容器映像檔 DNS(網域名稱系統) 自動擴展 TLS 反向代理 環境變數 死結(Deadlock) 不可變基礎設施

前往名詞解釋列表