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
的標籤以便查找與管理
...
......
回到頁首