Pod 是 Kubernetes 中最小的運行單位,它可以包含一個或多個 container。Pod 的實現原理主要涉及以下幾個方面:
- 容器技術 : 實現隔離和獨立運行
- 共享網絡和存儲 : Pod 中的所有容器共享相同的網絡和存儲空間
- Pod 調度 : 調度器會監測節點的資源利用率,將 Pod 調度到適合的節點上運行。
- 生命週期管理 : 當 Pod 發生故障或需要擴展時,控制器會自動創建、刪除或調整 Pod 的數量。
在 Kubernetes 中,Pod 是容器組的概念,爲應用程序提供了一個更加靈活的運行環境,負責管理容器的生命周期和資源。
Workload 是指在 Kubernetes Pod 內運行的應用程式。但是 Pod 並不能保證總是可用的,所以需要管理它們。但若直接管理 Pod 的話,工作量將會非常大且繁瑣,為了減輕負擔,Kubernetes 提供 Workload Resources 來管理一組 Pods。即 Workload Resource 是 Kubernetes 中,定義和管理 Workload 的特定 API 物件,例如 Deployment、StatefulSet 等等都是屬於 Workload Resource。
Deployment 是 Kubernetes 中,最常使用的的一種工作負載(Workloads),它以 YAML 格式描述 Pod ,提供聲明式(declarative)的設定。除了定義 Pod 的狀態,更進一步可以管理 :
- Pod 的 replica 數量
- 升級回滾的策略
Deployment 是用來編排無狀態 pod 的一種控制器資源,官方也建議應該透過 Deployment 來佈署 Pod & Replicaset,而非直接對 Pod & Replicaset 進行管理。
k8s Cluster 並不直接與 Pod 做互動,而是透過一些管理元件來處理 Pod ,這些管理元件總體被稱為 Workload,這裏介紹 DaemonSet 控制器。DaemonSet 用於提供 Node 基本設施的 Pod,會確保在所有(或是特定)節點上,一定運行著指定的一個 Pod。若想只運行在特定節點運行 DaemonSet Pod,可藉由給定的標籤,讓 Pod 可以只在特定節點上運行。