概念
k8s 中,主要是藉由各個資源的操作,來管理叢集。
這些物件是 Kubernetes 的基本構建單元,通過這些物件,使用者可以定義和管理應用程式的部署、配置和運行狀態。
由以下三大類組合而成
- kind : 資源種類
- group : 將相關 API 物件分組的命名空間
- version : 標示 API 的版本號
可由兩種方式創建
- Impreative Configuration (使用命令創建)
- Declarative Configuration (使用文件 + apply 指令)
資源類型 (Kind)
Service
- 定義了一組 Pod 的穩定訪問地址。
- 支持多種服務類型,如 ClusterIP、NodePort、LoadBalancer 和 ExternalName。
Deployment
- 管理無狀態 Pod 的部署和擴展。
- 支持滾動更新和回滾操作。
- 會生成 ReplicaSet 來管理 Pod
ReplicaSet
- 確保指定數量的 Pod 副本在任何時間點都在運行
- 所以如果 Deployment 刪除 Pod,ReplicaSet 會重新建立 Pod
StatefulSet
- 管理有狀態 Pod 的部署和擴展。
- 確保 Pod 的穩定標識和持久存儲。
DaemonSet
- 確保每個節點上都運行一個 Pod 副本。
- 常用於運行集群級別的守護進程。
Job 和 CronJob
- Job:管理一次性任務,確保任務成功完成。
- CronJob:管理定時任務,按照預定的時間表運行 Job。
ConfigMap 和 Secret
- ConfigMap:存儲非機密的配置數據。
- Secret:存儲機密數據,如密碼、OAuth 令牌和 SSH 金鑰。
PersistentVolume (PV) 和 PersistentVolumeClaim (PVC)
- PV:集群中的存儲資源。
- PVC:用戶對存儲資源的請求。
Namespace
- 用於將集群中的資源分組和隔離。
- 支持多租戶環境。
資源分組 (Group)
core
群組:這是 Kubernetes 的核心 API 群組,通常不顯示群組名稱。包含 Pod、Service、ConfigMap 等基本資源。
apps
群組:包含 Deployment、StatefulSet、DaemonSet 等應用程式管理相關的資源。
batch
群組:包含 Job 和 CronJob 等批處理任務相關的資源。
networking.k8s.io
群組:包含 NetworkPolicy 和 Ingress 等網絡相關的資源。
資源版本 (Version)
v1
:表示第一個穩定版本。
v1beta1
、v1beta2
:表示 Beta 版本,功能較新但可能不穩定。
v1alpha1
:表示 Alpha 版本,功能實驗性質較強,可能會有較大變動。