跳到主內容

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 的基本應用,適合理解其配置與功能。