在K8S中,deployment的yaml檔案如何編寫呢?

黄嘉波發表於2024-08-06

在Kubernetes中,Deployment 是用來宣告式地管理無狀態應用的宣告週期的API物件。一個典型的Deployment YAML 檔案包含了一系列的欄位,用於定義應用的期望狀態。以下是編寫Deployment YAML 檔案的基本步驟和要點:

  1. 定義API版本 (apiVersion): 指定使用的Kubernetes API版本,例如 apps/v1

  2. 定義物件種類 (kind): 這裡應該是 Deployment

  3. 定義後設資料 (metadata): 包括Deployment的名稱、名稱空間、標籤和註解等。

  4. 定義規範 (spec): 這是最重要的部分,定義了應用的期望狀態和行為。

    • replicas: 指定要執行的Pod副本數量。
    • selector: 定義如何選取一組Pod,通常使用標籤選擇器。
    • template: 定義Pod模板,即Pod的規格和配置。
      • metadata: Pod的後設資料,如標籤。
      • spec: Pod的規範,包括容器配置、重啟策略、資源請求和限制等。
        • containers: 定義容器列表,每個容器需要nameimageports等欄位。
        • imagePullSecrets: 如果需要,可以指定私有倉庫的認證資訊。
  5. 定義更新策略 (strategy): 可選,定義如何進行更新操作,可以是RollingUpdateRecreate

下面是一個簡單的Deployment YAML 示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: default
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-app-image:latest
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
      imagePullSecrets:
      - name: my-registry-secret

這個示例中:

  • apiVersion: apps/v1 指定了使用的Kubernetes API版本。
  • kind: Deployment 定義了這是一個Deployment物件。
  • metadata 定義了Deployment的名稱、名稱空間和標籤。
  • spec 定義了Deployment的詳細規格,包括副本數量、選擇器、更新策略和Pod模板。
  • template 下的 spec 定義了Pod的規範,包括容器的名稱、映象、埠和資源限制。
  • imagePullSecrets 用於指定私有映象倉庫的認證資訊。

綜上所述,請根據你的具體需求調整上述欄位的值。

相關文章