Kubernetes 基本介紹
Kubernetes(簡稱 K8s)是一個由 Google 開發並開源的 容器編排平台(Container Orchestration Platform),用來自動化部署、擴展、與管理容器化的應用程式。
為什麼需要 Kubernetes?
在 Docker 出現後,我們能輕易地打包應用程式與依賴。但當系統變大、服務變多時,光靠 Docker 已不足以解決:
- 多個容器的 生命週期管理(啟動、停止、重啟)
- 自動擴縮容(根據負載自動調整 Pod 數量)
- 自我修復機制(Crash 後自動重建)
- 服務發現與負載平衡
- 跨主機集群管理
👉 這些,就是 Kubernetes 所解決的問題。
Kubernetes 的核心元件
Kubernetes 主要由兩個部分組成:
1. Control Plane(控制平面)
負責整體叢集的管理與協調。
| 元件 | 功能說明 |
|---|---|
| API Server | 所有操作的入口,接收 kubectl 或其他系統的指令。 |
| etcd | 分散式鍵值資料庫,儲存叢集狀態。 |
| Controller Manager | 負責維持系統的期望狀態(Desired State)。 |
| Scheduler | 決定 Pod 要被安排到哪個 Node 上執行。 |
2. Node(工作節點)
實際執行容器的地方。
| 元件 | 功能說明 |
|---|---|
| kubelet | 負責與 API Server 通訊,確保 Pod 狀態一致。 |
| kube-proxy | 提供網路轉發與負載平衡。 |
| Container Runtime | 執行容器的實際引擎(例如 Docker、containerd)。 |
核心物件(K8s Resources)
| 物件 | 說明 |
|---|---|
| Pod | Kubernetes 中最小的可部署單位,通常包裝一個或多個容器。 |
| Service | 為一組 Pod 提供穩定的網路與名稱。 |
| Deployment | 管理多個 Pod 的版本與滾動更新。 |
| ReplicaSet | 確保特定數量的 Pod 始終運行。 |
| ConfigMap / Secret | 儲存設定值與敏感資訊。 |
| Ingress | 管理外部流量進入叢集內部的路由規則。 |
運作流程範例
Kubernetes 的優點
- 自我修復(Self-healing)
- 自動擴縮(Auto-scaling)
- 滾動更新與回滾
- 高可用與容錯
- 跨雲可攜性(Multi-cloud / Hybrid Cloud)