📌 一、Pod 是什麼?
Pod 是 Kubernetes 中最小的部署單位,它可以包含一個或多個容器(如 Docker 容器),這些容器共享資源(如網路、儲存空間、記憶體等)。
📍 Pod 的用途:
- 執行一個或多個容器
- 共享儲存空間與網路 IP
- 通常一個 Pod 只包含一個主容器與數個輔助容器(sidecar)
📍 舉例:
一個 WordPress 網站可能由:
- WordPress Pod(PHP + Apache)
- MySQL Pod(資料庫)
兩個獨立 Pod 組成。
📌 二、PVC(PersistentVolumeClaim)是什麼?
PVC 用來向 Kubernetes 請求持久化儲存空間,讓資料可以長期保存,不會隨著容器刪除而消失。
PVC 可以想像成:「我要一個儲存空間,幫我保護資料!」
📍 PVC 的用途:
- 持久儲存資料(如資料庫、網站檔案)
- 動態或靜態方式配置儲存空間(由 StorageClass 決定)
📍 舉例:
WordPress 網站的圖片、文章等內容需要 PVC,以便在容器重啟或升級後,資料仍保留。
📌 三、更多 Kubernetes 架構名詞及作用
以下用簡單易懂方式介紹:
名詞 | 中文簡稱 | 說明與作用 |
---|---|---|
Node | 節點 | Kubernetes 的主機節點,負責運行 Pod 的伺服器。 |
Namespace | 命名空間 | 將資源分門別類,更好管理與隔離資源(如開發、測試、生產環境)。 |
Deployment | 部署 | 負責管理 Pod 副本數、更新方式等,確保應用持續運作與可擴充。 |
StatefulSet | 有狀態部署 | 部署有狀態服務,如資料庫,每個 Pod 具有固定身份(如固定主機名、固定儲存)。 |
DaemonSet | 常駐部署 | 每個節點運行一個 Pod,例如:日誌管理、監控工具。 |
Service | 服務 | 提供固定的 IP 位址或域名來存取 Pod,避免 Pod 重啟後 IP 改變導致連線問題。 |
Ingress | 路由器(入口) | 管理對外的 HTTP 流量,類似反向代理(如 Nginx),可根據網址導向特定服務。 |
ConfigMap | 組態設定 | 用於管理應用程式的組態(例如環境設定檔),無需重新建置映像檔即可更新設定。 |
Secret | 機密設定 | 管理敏感資料,如密碼、憑證,避免直接寫入容器內,安全性更高。 |
PersistentVolume (PV) | 持久儲存空間 | Kubernetes 中的實體儲存資源,由 PVC 提出請求後分配使用。 |
StorageClass | 儲存類別 | 決定儲存資源的類型與特性(例如 SSD 或 HDD、雲端或本機),也決定是否可動態擴容。 |
ReplicaSet | 副本集 | 控制 Pod 的副本數量,Deployment 內部使用的元件,通常不直接操作。 |
Horizontal Pod Autoscaler (HPA) | 水平擴充器 | 依據負載(如 CPU 使用率)自動調整 Pod 數量,達到自動擴縮效果。 |
kubectl | 命令行工具 | Kubernetes 操作指令工具,可用於部署、管理和查詢資源狀態。 |
🚩 實務舉例:WordPress 網站案例
實務上搭建 WordPress 網站常用 Kubernetes 名詞的關係:
Ingress(域名導向流量)
↓
Service(穩定存取 IP)
↓
Deployment(管理 WordPress Pods)
↓
Pod(實際運行 WordPress 容器)
↓
PVC(儲存 WordPress 檔案,如圖片和外掛)
↓
PersistentVolume (實體儲存,如 SSD、雲端儲存)
📌 Kubernetes 架構圖解
更簡化的圖解幫你記憶:
使用者 (user) → Ingress → Service → Pod → Container
│ ↓
│ PVC & PV
ConfigMap / Secret
📌 如何記憶這些名詞?(快速技巧)
Kubernetes名詞 | 用簡單比喻記憶法 |
---|---|
Pod | 容器的家(可裝多個 container) |
Deployment | 管理 Pod 的生命週期、數量 |
Service | Pod 的接待櫃檯,提供穩定入口 |
Ingress | 類似大樓總機,依域名轉接給不同服務 |
PVC & PV | 持久硬碟空間 |
ConfigMap & Secret | 配置與密碼設定 |
🚩 總結重點:
- Pod:最小容器部署單元,一個或多個容器組成。
- PVC:Kubernetes 中持久儲存空間,用於保存資料。
- 透過 Service 與 Ingress,使用者能輕鬆、穩定存取 Pod。
- Namespace 幫助資源分類與隔離,管理更方便。
- ConfigMap、Secret 負責管理設定與敏感資料,避免直接放入容器中,更安全。