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 等