Kubernetes 核心元件介紹
Kubernetes 核心元件介紹
架構總覽
上圖展示了 Kubernetes 完整架構,包含控制平面、工作節點、服務層和配置管理等核心元件及其互動關係
Pod
Kubernetes 中的最小運行單位
- 每個 Pod 都會被分配一個唯一的虛擬 IP 位址
- Container: Pod 內運行的應用程式容器,雖然每個 Pod 可以運行多個容器,但通常建議只運行一個主要容器
Node
Kubernetes 叢集的工作節點
- 可以是實體機器或虛擬機器
- 多個 Node 組成 Kubernetes 叢集,提供運算資源
Service
提供穩定的網路端點
- 解決 Pod 重啟時 IP 位址變動的問題
- 提供固定的 IP 位址和 DNS 名稱,作為 Pod 群組的存取入口
- 分為兩種類型:
- 內部 Service: 僅供叢集內部通訊使用
- 外部 Service: 允許外部流量存取
Ingress
HTTP/HTTPS 路由管理
- 提供域名對應服務,讓外部用戶能透過網域名稱存取 Service
- 支援 SSL/TLS 憑證管理和負載平衡
ConfigMap
應用程式配置管理
- 儲存非敏感的配置資料(如設定檔、環境變數)
- 避免因配置變更而重新建置映像檔,減少部署停機時間
- 支援熱更新配置
警告
ConfigMap 以明文方式儲存內容,請勿存放敏感資料
Secret
敏感資料安全儲存
- 專門用於儲存機敏資料(如密碼、API 金鑰、憑證)
- 資料以 Base64 編碼格式儲存
- 提供比 ConfigMap 更高的安全性
註解
Secret 使用 Base64 編碼儲存資料,並可與 Pod 安全地共享
Volumes
持久化資料儲存
- 解決容器重啟時資料遺失的問題
- 提供多種儲存類型(本機儲存、網路儲存、雲端儲存)
- 確保重要資料在 Pod 生命週期外持續保存
Deployment
無狀態應用程式的部署管理
- 管理 Pod 的部署、更新和擴縮容
- 提供聲明式更新,確保應用程式的期望狀態
- 支援滾動更新(Rolling Update)和回滾功能
- 適用於無狀態的應用程式,如網頁伺服器、API 服務
- 主要功能:
- 副本管理: 確保指定數量的 Pod 副本正常運行
- 自動修復: 當 Pod 異常時自動重新建立
- 版本控制: 追蹤部署歷史,支援快速回滾
- 零停機部署: 透過滾動更新實現無中斷服務更新
提示
Deployment 是部署無狀態應用程式的首選方式,提供了強大的生命週期管理功能
StatefulSet
有狀態應用程式的部署管理
- 專門用於管理有狀態的應用程式,如資料庫、訊息佇列
- 為每個 Pod 提供穩定且唯一的網路識別符
- 保證 Pod 的有序部署、擴縮容和終止
- 提供持久化儲存與 Pod 的穩定綁定關係
- 主要特色:
- 穩定的網路識別: 每個 Pod 都有固定的主機名稱(如 pod-0, pod-1)
- 有序部署: Pod 按照順序建立,確保前一個 Pod 就緒後才建立下一個
- 持久儲存: 每個 Pod 都有專屬的持久化儲存卷
- 有序終止: 刪除時按照相反順序進行,確保資料完整性
重要提示
StatefulSet 適用於需要穩定儲存和網路識別的應用程式,如 MySQL、MongoDB、Kafka 等