Kubernetes 工作負載與 Pod
您可以使用兩個基本結構在 Kubernetes 中建立任何複雜的容器化應用程式:Pod 和工作負載。一旦您建立應用程式,您可以使用第三個結構來公開它以便在同一叢集內或在網際網路上存取:服務。
Pod
Pod 是一個或多個共享網路命名空間和儲存磁碟區的容器。大多數 Pod 只有一個容器。因此當我們討論 Pod 時,這個術語通常與 容器 同義。您擴展 Pod 的方式與擴展容器的方式相同——透過擁有實作服務的同一個 Pod 的多個實例。通常 Pod 由工作負載進行擴展和管理。
工作負載
工作負載 是為 Pod 設定部署規則的物件。根據這些規則,Kubernetes 會執行部署並使用應用程式的目前狀態更新工作負載。工作負載可讓您定義應用程式排程、擴展和升級的規則。
工作負載類型
Kubernetes 將工作負載分為不同的類型。Kubernetes 支援最常見的類型包括:
-
Deployment 最適合用於無狀態應用程式(即當您不需要維護工作負載的狀態時)。由部署工作負載管理的 Pod 被視為獨立且可丟棄的。如果 Pod 遇到中斷,Kubernetes 會將其移除然後重新建立。一個範例應用程式是 Nginx Web 伺服器。
-
StatefulSet 與 Deployment 相反,最適合用於您的應用程式需要維護其身份並儲存資料時。一個範例應用程式是 Zookeeper——一個需要資料庫來儲存資料的應用程式。
-
DaemonSet 確保叢集中的每個節點都執行 Pod 的副本。對於收集日誌或監控節點效能的使用情境,這種類似守護程式的工作負載最為適合。
-
Job 啟動一個或多個 Pod,並確保指定數量的 Pod 成功終止。Job 最適合用於執行有限的任務直到完成,而不是管理持續的應用程式期望狀態。
-
CronJob 與 Job 類似。然而,CronJob 是根據 cron 排程執行直到完成。
服務
在許多使用情境中,工作負載必須滿足以下其中一項需求:
- 供叢集中的其他工作負載存取。
- 向外部世界公開。
您可以透過建立 服務 來實現這些目標。服務使用選擇器/標籤方法(檢視程式碼範例)映射到底層工作負載的 Pod。Rancher UI 透過自動建立服務與工作負載一起,並使用您選擇的服務連接埠和類型,簡化了這個映射過程。
服務類型
Rancher 中有幾種可用的服務類型。以下描述來源於 Kubernetes 文件。
-
ClusterIP
在叢集內部 IP 上公開服務。選擇此值會使服務僅能從叢集內部存取。這是預設的
ServiceType。 -
NodePort
在每個節點的 IP 上以靜態連接埠(
NodePort)公開服務。NodePort服務將路由到的ClusterIP服務會自動建立。您可以透過請求<NodeIP>:<NodePort>從叢集外部聯絡NodePort服務。 -
LoadBalancer
使用雲端提供商的負載平衡器 在外部公開服務。外部負載平衡器將路由到的
NodePort和ClusterIP服務會自動建立。
工作負載選項
文件的這一部分包含部署工作負載和使用工作負載選項的說明。