目錄:
- 1、滾動更新
- 1、定義Deployment配置
- 2、應用更新
- 2、版本回滾
- 1. 使用kubectl rollout undo命令
- 3、更新暫停與恢復
- 1、暫停更新
- 2、更新鏡像(例如,使用kubectl set image命令)
- 3、恢復更新
- 4、彈性擴縮容
- 1、擴容命令
- 2、縮容命令
- 3、自動擴縮容
1、滾動更新
在Kubernetes中,滾動更新(Rolling Update)是一種常用的部署策略,它允許你逐步將應用的舊版本替換為新版本,而不是一次性替換所有實例。這有助于減少服務中斷的風險,并允許你在更新期間監控應用的健康狀況。
1、定義Deployment配置
首先,你需要有一個Deployment配置文件(通常是YAML格式),其中定義了你的應用鏡像和所需的副本數。例如:
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deployment
spec:replicas: 3strategy:type: RollingUpdaterollingUpdate:maxSurge: 1 # 最大額外可以存在的副本數,可以為數字或百分比maxUnavailable: 1 # 最大不可用副本數,可以為數字或百分比selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myapp-containerimage: myapp:v1
2、應用更新
使用kubectl命令行工具來更新你的Deployment。例如,如果你想將鏡像版本從myapp:v1更新到myapp:v2,你可以使用以下命令:
kubectl set image deployment/myapp-deployment myapp-container=myapp:v2 --record
或者,你也可以通過修改原始的YAML文件,然后使用kubectl apply命令:
spec:containers:- name: myapp-containerimage: myapp:v2
然后應用這個更改:
kubectl apply -f deployment.yaml
2、版本回滾
1. 使用kubectl rollout undo命令
這是最直接的方法來觸發回滾。你可以通過指定回滾到上一個版本或者指定一個特定的歷史版本。
回滾到上一個版本:
kubectl rollout undo deployment <deployment-name>
回滾到特定的歷史版本:
首先,你可以使用kubectl rollout history命令查看所有的發布歷史:
kubectl rollout history deployment <deployment-name>
然后,根據顯示的版本號回滾到特定版本:
kubectl rollout undo deployment <deployment-name> --to-revision=<revision-number>
3、更新暫停與恢復
假設你有一個名為my-app的Deployment,并且你希望在更新鏡像之前先暫停更新:
1、暫停更新
kubectl rollout pause deployment/my-app
2、更新鏡像(例如,使用kubectl set image命令)
kubectl set image deployment/my-app my-app-container=new-image:tag
3、恢復更新
kubectl rollout resume deployment/my-app
4、彈性擴縮容
1、擴容命令
kubectl scale deployment <deployment-name> --replicas=5
2、縮容命令
kubectl scale deployment <deployment-name> --replicas=3
兩者修改replicas的副本數即可。
3、自動擴縮容
如果使用的是自動縮放(Horizontal Pod Autoscaler, HPA),則 Kubernetes 會根據設置的指標自動調整 Pod 的數量,而不是手動設置副本數。你可以通過設置 HPA 來實現自動擴容和縮容。例如:
kubectl autoscale deployment <deployment-name> --cpu-percent=50 --min=1 --max=10
這將基于 CPU 使用率自動調整副本數,最小為1,最大為10。