文章目录
Deployment是⼀个⽐RS应⽤模式更⼴的API对象,可以是创建⼀个新的服务,更新⼀个新的服务,也可以是滚动升级⼀个服务。滚动升级⼀个服务。
实际是创建⼀个新的RS,然后逐渐将新RS中副本数增加到理想状态,将旧RS中的副本数减少到0的复合操作;这样⼀个复合操作⽤⼀个RS是不太好描述的,所以⽤⼀个更通⽤的Deployment来描述。
1.创建Deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3 # 创建副本个数
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: docker.io/nginx:1.7.9
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
protocol: TCP
查看deployments 创建过程
kubectl get deployments -w
2. 更新Deployment
Deployment 的 rollout 当且仅当 Deployment 的 pod template(例如.spec.template
)中的 label
更新或者镜像更改时被触发。其他更新,例如扩容 Deployment 不会触发 rollout。
2.1 使用set image更新
kubectl set image deployment/nginx nginx=nginx:1.9.1
2.2 使用kubectl edit更新
查看rollout 状态:kubectl rollout status deployment/nginx
3. 暂停/重启Deployment跟新
暂停:kubectl rollout pause deployment/nginx
重启:kubectl rollout resume deployment/nginx
【例】:首先暂停deployment/nginx的更新,修改nginx版本号,查看rs发现并没有更新,此时重启deployment/nginx的更新,发现升级正常,通常用于升级过程中发现版本有问题,可暂停更新,重新修改镜像版本,再启用版本更新
更新nginx版本
重启nginx版本更新
动态查看rs
4. 回滚Deployment
4.1 查看升级历史
kubectl rollout history deployment/nginx
查看版本详细信息
kubectl rollout history deployment/nginx --revision=1
4.2 回滚到上个版本
kubectl rollout undo deployment/nginx
4.3 回滚到指定版本
kubectl rollout undo deployment/nginx --to-revision=1
5 扩容(增加副本数)
kubectl scale deployment nginx --replicas 5