Deployment
简介
Deployment(简称deploy)构建于replicaset和pod之上,其大部分功能能通过调用replicaset来实现。
- 事件和状态查看:可查看deploy升级的详细进度和状态
- 回滚:支持返回到前一个或用户指定的版本
- 版本记录:每一次deploy操作进行记录,用于回滚
- 暂停和启动:升级过程中可以暂停和启动
- 多种自动更新方案:recreate,删除重建机制。rollingupdate,滚动更新机制。
详细操作
创建一个deploy的yaml文件
apiVersion: apps/v1beta1 kind: Deployment metadata: name: nginx-deploy labels: k8s-app: nginx-demo spec: replicas: 3 strategy: type: recreate #升级方式 rollingUpdate:##由于replicas为3,则整个升级,pod个数在2-4个之间 maxSurge: 3 #滚动升级时会先启动3个pod maxUnavailable: 1 #滚动升级时允许的最大Unavailable的pod个数 template: metadata: labels: app: nginx spec: nodeName: ecs28-201.host.com containers: - name: nginx image: harbor.od.com/public/nginx:v1.7.9 ports: - containerPort: 80
maxSurge和maxUnavailable
maxSurge: 1 表示滚动升级时会先启动1个pod
maxUnavailable:1 表示滚动升级时允许的最大Unavailable的pod个数。由于replicas为3,则整个升级,pod个数在2-4个之间
minReadySeconds
minReadySeconds: 5 表示pod启动5s后可以对外提供服务,并开始下一个pod的更新
回滚操作
可以使用minReadySeconds来记录保留版本数量
kubectl apply -f dp.yaml --record
--record
的作用是将当前命令记录到 revision 记录中,不添加只记录版本不记录命令
可以通过改命令查看历史
[root@ecs28-201 ~]# kubectl rollout history deploy nginx-deploy deployment.extensions/nginx-deploy REVISION CHANGE-CAUSE 1 <none> 2 kubectl apply --filename=dp.yaml --record=true
版本回退
kubectl rollout undo deploy nginx-deploy --to-revision=1