Kubernetes之Deployment控制器

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

 

posted @ 2020-03-26 17:39  Wshile  阅读(235)  评论(0编辑  收藏  举报