在Kubernetes中,Deployment
是用來宣告式地管理無狀態應用的宣告週期的API物件。一個典型的Deployment
YAML 檔案包含了一系列的欄位,用於定義應用的期望狀態。以下是編寫Deployment
YAML 檔案的基本步驟和要點:
-
定義API版本 (
apiVersion
): 指定使用的Kubernetes API版本,例如apps/v1
。 -
定義物件種類 (
kind
): 這裡應該是Deployment
。 -
定義後設資料 (
metadata
): 包括Deployment
的名稱、名稱空間、標籤和註解等。 -
定義規範 (
spec
): 這是最重要的部分,定義了應用的期望狀態和行為。replicas
: 指定要執行的Pod副本數量。selector
: 定義如何選取一組Pod,通常使用標籤選擇器。template
: 定義Pod模板,即Pod的規格和配置。metadata
: Pod的後設資料,如標籤。spec
: Pod的規範,包括容器配置、重啟策略、資源請求和限制等。containers
: 定義容器列表,每個容器需要name
、image
和ports
等欄位。imagePullSecrets
: 如果需要,可以指定私有倉庫的認證資訊。
-
定義更新策略 (
strategy
): 可選,定義如何進行更新操作,可以是RollingUpdate
或Recreate
。
下面是一個簡單的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
用於指定私有映象倉庫的認證資訊。
綜上所述,請根據你的具體需求調整上述欄位的值。