透過 Minikube 官網的實踐教學,往往不足夠有基礎對於 Kubernetes 操作,還是需要把 K8s 的內功學好,把底打穩才有辦法操作後續的高難度應用。
本文組件介紹 – 圖片參考來自 連結
Kubernetes – 核心組件介紹
了解 Kubernetes 的基本概念是學習和掌握其操作的第一步。
Node
- 一個節點就是一個虛擬機 or 實體機

定義
- Node 是 Kubernetes 集群中的 工作機器(物理機或虛擬機),負責運行 Pod 和容器。
- 分為兩種類型:
- Master Node:管理集群控制平面(如 API Server、Scheduler、Controller Manager)。
- Worker Node:實際運行應用負載(Pod)。
核心組件
每個 Worker Node 包含以下關鍵組件:
組件 | 功能 |
---|---|
kubelet | 與 Master 通信,管理 Pod 的生命週期 |
kube-proxy | 處理節點上的網路規則(如 Service 流量轉發) |
容器運行時(如 Docker、containerd) | 執行容器 |
Node 的職責
- 提供計算資源(CPU、記憶體、儲存)供 Pod 使用。
- 接收來自 Master 的調度指令,創建/刪除 Pod。
- 報告自身狀態和資源使用情況給 Master。
Pod
- 一個 Pod 就是一個or 多個應用程式的組合
- 用來幫助創建一個 Container 的運行環境
- 運行環境中可以共享資源如: 網路、資料運行配置等等
- 建議: 一個 Pod 一個應用容器, 這樣更好管控應用程式的擴展與維護
Kubernetes 的工作原理

- 如果要放在一起 建議是一些高耦合的功能

- IP 是串建 Pod 自動分配的 ( 這個是私有IP, 內部的Node 的 IP, 在 Node 外部無法存取)
- Pod 不是穩定的實體, 非常容易被創建予銷毀
- 發生故障 K8s 會自動銷毀並重新創建
- IP 這時候就會變化


Service
- 將一組 Pod 封裝成一個服務
- 用來解決 Pod 發生故障的問題
- APP Pod 撈取 DB 從 SVC 的 IP 去撈, 再由 Service Pod 去找出健康的 Pod 進行資料的撈取
- 解決 IP 地址不穩定問題

- 服務分為內部服務與外部服務
- 內部服務為不想暴露給外部的如: 資料庫
- 外部服務反之如: 前端介面 、API 接口


Node:port
- 在 node 上開放一個 port 號, 將這個 port 號 mapping 到 service 的 IP 與對應的 port 號

Ingress
- 基於路徑或主機的路由:將不同的URL路徑或網域名稱路由到不同的服務
- TLS/SSL 附加:處理 HTTPS 加密通訊
- 負載平衡:在多個Pod間流量分配
- 基於名稱的虛擬主機:支援多個共享相同IP

Config Map
ConfigMap 是 Kubernetes 中用於儲存非機密配置資料的 API 對象,它允許您將配置資訊與容器鏡像分離,實現配置的靈活管理和動態更新。
- 儲存鍵值對:儲存配置數據,可以是單一屬性或整個設定文件
- 與 Pod 解耦:配置與應用程式容器分離
- 多種使用方式:可作為環境變數、命令列參數或設定檔掛載
- 非加密儲存:不適用於儲存敏感資訊(敏感資訊應使用 Secret)

Secret
Secret 是 Kubernetes 中用於儲存和管理敏感資訊的對象,它提供了一種比 ConfigMap 更安全的方式來處理密碼、OAuth 令牌、SSH 金鑰等機密資料。
- 專為敏感資料設計:如密碼、令牌、金鑰等
- 多種儲存類型:支援 Docker 註冊表憑證、TLS 憑證、通用金鑰等
- 加密儲存(可選):支援靜態加密(etcd 中加密儲存)
- 細粒度存取控制:透過 RBAC 限制存取權限

Volumes
Volumes(儲存磁碟區)是 Kubernetes 中用於持久化儲存和資料共享的核心概念,它解決了容器檔案系統臨時性的問題,允許資料在容器重新啟動、遷移時得以保留。 ( 存到 local , 備份用)

Deployment
Deployment 是 Kubernetes 中用於管理無狀態應用的核心工作負載對象,它提供了宣告式的更新機制,簡化了 Pod 和 ReplicaSet 的部署與管理流程。
核心功能
- Pod 部署管理:確保指定數量的 Pod 副本運行
- 滾動更新:支援無停機部署新版本
- 版本回滾:可快速回退至歷史版本
- 自動修復:自動替換不健康的 Pod
- 擴縮容:輕鬆調整 Pod 副本數量

StatefulSet
StatefulSet 是 Kubernetes 中用於管理有狀態應用的工作負載 API 對象,它為 Pod 提供持久化儲存和穩定的網路標識,適用於需要穩定持久化儲存、穩定網路標識和有序部署/擴展/刪除的應用。
特性 | StatefulSet | Deployment |
---|---|---|
網路標識 | 穩定的主機名稱和DNS名稱 | 隨機Pod名稱 |
儲存 | 持久化Volume(每個Pod獨立) | 通常使用共享儲存或無持久化 |
啟動順序 | 有序(從0到N-1) | 無序 |
刪除順序 | 逆序(從N-1到0) | 無序 |
更新策略 | 支援滾動更新和分區更新 | 支援滾動更新和藍綠部署 |
典型應用場景 | 資料庫、叢集應用 | 無狀態網路應用 |
