專案

一般

配置概況

Deployments

在K8s叢集中部署Pods最常見的方式就是使用此控制器(也間接包括ReplicaSet),適合在叢集中部署與管理無狀態應用的工作負載。

用例

以下是Deployment控制器的一些典型用例:

  • 創建Deployment讓ReplicaSet上線,ReplicaSet會在背景創建Pods,檢查ReplicaSet的狀態看看是否成功。
  • 通過更新Deployment的PodTemplateSpec,變更Pod的新狀態,則新的ReplicaSet會被創建,過程裡Deployment會將Pods從舊的ReplicaSet遷移到新的ReplicaSet,每個新的ReplicaSet都會更新Deployment的修訂版本。
  • 如果當前的修訂版本不如預期,可以「回滾」至較早的Deployment版本,每次回滾都會更新Deployment的修訂版本。
  • 暫停Deployment的運作以對PodTemplateSpec進行修改,然後恢復其運行已啟動新的上線版本。
  • 查看Deployment狀態來判斷上線過程是否出現停滯或崩潰。
  • 清除較舊、不再需要的ReplicaSet。

下面是一個Deployment使用範例,其中創建了一個ReplicaSet,負責啟動三個 nginx Pods:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

此範例中:

  • 創建名為 nginx-deployment(由 .metadata.name 字段標明)的Deployment控制器
  • 此控制器創建了一個ReplicaSet,然後再由這個ReplicaSet創建出3個(由 .spec.replicas 字段標明)Pods副本
  • .spec.selector 字段定義所創建的ReplicaSet如何查找要管理的Pods,此處我們為欲創建的Pods都定義了 app:nginx 的標籤以便查找與管理

...
......

回到頁首