Controller 基本概念
1. 什麼是 Controller
- 在集群上管理和運行容器的對象
2. Pod 和 Controller 的關係
- Pod 是通過 Controller 實現應用的運維,例如 伸縮、滾動升級 等
- Pod 和 Controller 之間通過 label 標籤 建立關係 (selector)
3. Deployment 的應用場景
- 部署 無狀態應用
- 管理 Pod 和 ReplicaSet
- 支援 滾動升級、回滾、彈性伸縮 等功能
應用場景:
- Web 服務
- 微服務
以下是圖片中的文字辨識及繁體中文翻譯:
以下是圖片中的文字辨識及繁體中文翻譯:
4. 使用 Deployment 部署應用(YAML)
spec:
replicas: 1
selector:
matchLabels:
app: web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web
說明:
selector
:用於選擇符合特定標籤(matchLabels
)的 Pod。matchLabels
:指定要匹配的標籤條件,此處為app: web
。labels
:在模板中定義 Pod 的標籤,確保與selector
中的標籤條件一致。
此 YAML 文件表示使用 Deployment 部署一個副本的應用,並將其標籤設置為 app: web
,以便進行管理和選擇。
5. 應用升級回滾和彈性伸縮
應用升級
[root@k8smaster ~]# kubectl set image deployment web nginx=nginx:1.15
deployment.apps/web image updated
查看升級狀態
[root@k8smaster ~]# kubectl rollout status deployment web
deployment "web" successfully rolled out
查看升級版本
[root@k8smaster ~]# kubectl rollout history deployment web
deployment.apps/web
REVISION CHANGE-CAUSE
1 <none>
2 <none>
回滾到上一個版本
[root@k8smaster ~]# kubectl rollout undo deployment web
deployment.apps/web rolled back
[root@k8smaster ~]# kubectl rollout status deployment web
Waiting for deployment "web" rollout to finish: 1 old replicas are pending termination...
Waiting for deployment "web" rollout to finish: 1 old replicas are pending termination...
deployment "web" successfully rolled out
回滾到指定的版本
[root@k8smaster ~]# kubectl rollout undo deployment web --to-revision=2
deployment.apps/web rolled back
[root@k8smaster ~]# kubectl rollout status deployment web
Waiting for deployment "web" rollout to finish: 1 out of 2 new replicas have been updated...
Waiting for deployment "web" rollout to finish: 1 old replicas are pending termination...
deployment "web" successfully rolled out
說明:
- 使用
--to-revision=2
指定要回滾到的版本號。 kubectl rollout status
用於查看回滾的進度,確認部署是否成功完成。
以下是圖片中的文字辨識及繁體中文翻譯:
彈性伸縮
[root@k8smaster ~]# kubectl scale deployment web --replicas=10
deployment.apps/web scaled
說明:
- 使用
kubectl scale
指令對 Deployment 進行彈性伸縮。 --replicas=10
表示將 Pod 副本數量調整為 10。
此操作用於根據業務需求動態調整應用的容器數量,實現資源的彈性管理。