其他分享
首页 > 其他分享> > kubernetes deployment滚动升级、暂停、回滚

kubernetes deployment滚动升级、暂停、回滚

作者:互联网

一、kubernetes deployment滚动升级、暂停、回滚

  kubectl rollout滚动升级的帮助文档

$]kubectl rollout --help
Manage the rollout of a resource.
管理资源的部署。

 有效的资源类型包括:

  *  deployments
  *  daemonsets
  *  statefulsets

示例:
  # Rollback to the previous deployment
  # 回滚到上一个部署
  kubectl rollout undo deployment/abc

  # Check the rollout status of a daemonset
  # 检查守护进程的推出状态
  kubectl rollout status daemonset/foo

可用命令:
  history     显示 rollout 历史
  pause       标记提供的 resource 为中止状态
  restart     Restart a resource
              重新启动资源
  resume      继续一个停止的 resource
  status      显示 rollout 的状态
  undo        撤销上一次的 rollout

用法:
  kubectl rollout SUBCOMMAND [options]

Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).

 

  一)kubernetes滚动升级deployment的yaml配置

minReadySeconds:
    Kubernetes在等待设置的时间后才进行升级
    如果没有设置该值,Kubernetes会假设该容器启动起来后就提供服务了
    如果没有设置该值,在某些极端情况下可能会造成服务不正常运行

maxSurge:
    升级过程中最多可以比原先设置多出的POD数量
    例如:maxSurage=1,replicas=5,则表示Kubernetes会先启动1一个新的Pod后才删掉一个旧的POD,整个升级过程中最多会有5+1个POD。

maxUnavaible:
    升级过程中最多有多少个POD处于无法提供服务的状态
    当maxSurge不为0时,该值也不能为0
    例如:maxUnavaible=1,则表示Kubernetes整个升级过程中最多会有1个POD处于无法服务的状态。

 

  1、配置方式一:pod使用百分比

apiVersion: apps/v1
kind: Deployment
metadata:
  name: front-admin-web
  namespace: ops-dev-front
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      environment: ops-dev
      name: front-admin-web
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate

  2、配置方式二:pod使用具体数字

apiVersion: apps/v1
kind: Deployment
metadata:
  name: front-admin-web
  namespace: ops-dev-front
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      environment: ops-dev
      name: front-admin-web
  minReadySeconds: 5
  strategy:
    # indicate which strategy we want for rolling update
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1

  二)查看滚动更新的状态

~]# kubectl rollout status deployments.apps -n ops-dev-front  front-admin-web
deployment "front-admin-web" successfully rolled out ### 升级成功

 

  三)暂停升级

kubectl rollout pause deployment <deployment>

 

  四)恢复deployment升级

kubectl rollout resume deployment <deployment>

 

  五)deployment升级结束后,继续查看rs的状态

  获取到服务deployment对应的rs ID,然后找到对应的rs的状态

kubectl get rs -n ops-dev-front |grep  `kubectl describe deployments.apps front-admin-web -n ops-dev-front|grep "NewReplicaSet:"|awk '{print $2}'`

  返回的结果如下:下面DESIRED、CURRENT、 READY三列的数字相等时,说明deployment升级结束

NAME                            DESIRED   CURRENT   READY   AGE
front-admin-web-79f67fc4 1 1 1 74s

 

  六)回滚deployment

  最好最快的方式:回滚到上一次能够提供正常工作的版本

  1、查看deployment历史版本

~]# kubectl rollout history  deployment -n ops-dev-front front-admin-web 
deployment.apps/front-admin-web 
REVISION  CHANGE-CAUSE
103       <none>
104       <none>
105       <none>

 

~]# kubectl rollout status deployments.apps -n biz-ops-front  front-admin-web

标签:kubectl,回滚,kubernetes,web,admin,rollout,deployment,front
来源: https://www.cnblogs.com/happy-king/p/16113660.html