Kind 簡易說明
以下是重新排列的表格與每種 kind 的範例 YAML 說明:
表格
| Kind | 說明 | 用途 |
|---|---|---|
| CronJob | 定期執行的任務。 | 排程任務(如每天備份數據)。 |
| DaemonSet | 確保每個 Node 上運行一個 Pod 副本。 | 部署監控代理、日誌收集器等。 |
| Deployment | 管理 Pod 和 ReplicaSet,支持滾動更新。 | 部署無狀態應用,保持指定數量的 Pod 運行。 |
| Job | 執行一次性任務,確保成功完成。 | 運行批處理任務。 |
| StatefulSet | 管理有狀態的應用。 | 部署需固定標識或穩定存儲的 Pod。 |
| Pod | Kubernetes 中最小的執行單位,包含容器。 | 部署單個應用程式容器。 |
| ReplicaSet | 確保指定數量的 Pod 始終運行。 | 通常由 Deployment 管理,用於維持 Pod 副本數。 |
| Service | 定義 Pod 的網絡訪問規則。 | 將外部流量路由到 Pod,提供負載均衡。 |
| Ingress | 提供 HTTP/HTTPS 路由規則。 | 公開訪問服務,支持負載均衡和基於域名的路由。 |
| ConfigMap | 存儲非機密配置數據。 | 將配置注入 Pod(環境變量或掛載文件)。 |
| Secret | 存儲機密數據(如密碼、API 密鑰)。 | 安全地將敏感信息注入 Pod。 |
| PersistentVolume (PV) | 定義持久化存儲。 | 提供存儲資源,獨立於 Pod 的生命週期。 |
| PersistentVolumeClaim (PVC) | 申請 PersistentVolume。 | Pod 使用 PVC 來請求持久存儲資源。 |
| Namespace | 將資源分隔成不同的邏輯組。 | 支持多租戶環境。 |
| Role 和 ClusterRole | 定義訪問權限。 | 管控資源的讀寫權限,Role 限於 Namespace,ClusterRole 全集群。 |
| RoleBinding 和 ClusterRoleBinding | 綁定訪問權限到用戶。 | 授權用戶或服務帳號訪問權限。 |
| HorizontalPodAutoscaler (HPA) | 根據指標自動調整 Pod 副本數量。 | 提高應用的彈性擴展能力。 |
範例 YAML 說明
1. CronJob
執行每天凌晨 12 點的數據備份:
apiVersion: batch/v1
kind: CronJob
metadata:
name: daily-backup
spec:
schedule: "0 0 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: backup-tool:latest
args:
- /bin/sh
- -c
- "backup-script.sh"
restartPolicy: OnFailure
2. DaemonSet
在每個 Node 上部署日誌收集器:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: log-collector
spec:
selector:
matchLabels:
app: log-collector
template:
metadata:
labels:
app: log-collector
spec:
containers:
- name: log-collector
image: log-collector:latest
3. Deployment
部署一個無狀態 Web 應用,副本數為 3:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 3
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web
image: nginx:latest
ports:
- containerPort: 80
4. Job
執行一次性任務:
apiVersion: batch/v1
kind: Job
metadata:
name: one-time-task
spec:
template:
spec:
containers:
- name: task-runner
image: busybox
args:
- /bin/sh
- -c
- "echo Hello, Kubernetes!"
restartPolicy: OnFailure
5. StatefulSet
部署有狀態的數據庫應用:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: database
spec:
serviceName: "database-service"
replicas: 3
selector:
matchLabels:
app: database
template:
metadata:
labels:
app: database
spec:
containers:
- name: db
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: "password"
ports:
- containerPort: 3306
6. Pod
部署一個單一容器的應用:
apiVersion: v1
kind: Pod
metadata:
name: single-app
spec:
containers:
- name: app
image: busybox
args:
- /bin/sh
- -c
- "echo Running a single pod!"
這些範例涵蓋了以上關鍵 kind 的基本應用,適合理解其配置與功能。