pod如果是deployment 创建的,则用户可以在运行时修改deployment的pod定义(spec.template)或镜像名称,并应用到deployment对象上,系统即可完成deployment的自动更新操作。如果在更新过程中发生了错误,则还可以通过回滚(rollback)操作恢复pod的版本
1.Deployment的升级
nginx-deployment.yaml
apiVersion: apps/v1betal
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metada:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
运行的副本数有3个
现在pod的镜像需要更新为Nginx:1.9.1,我们可以通过kubectl set image 命令为Deployment 设置新的镜像名称
$ kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
deployment "nginx-deployment" image updated
另外一种方法是使用kubect edit 命令修改Deployment 的配置,将spec.template.spec.containers[0].image 从Nginx:1.7.9更改为Nginx:1.9.1
$ kubectl edit deployment/nginx-deployment
deployment "nginx-deployment" edited
一旦镜像名(或pod定义)发生修改,则将触发系统完成Deployment所有运行pod的滚动升级操作。可以使用kubectl rollout status 命令查看Deployment的更新过程:
$ kubectl rollout status deployment/nginx-deployment
查看当前kubectl get pods ,已经完成更新