• k8s deployment 金丝雀发布 更新的 暂停 恢复 回滚


    假设现在有业务需求,计划将所有的nginx 从镜像版本1.14更新到1.15,这一次发布不紧需要平滑发布,还需要
    金丝雀发布,及确认其中一个Pod没有问题后在进行剩余的更新。

    暂停与恢复也可以使用yml文件来实现,但是相对比较复杂,这里用比较简单的命令进行说明

    暂停与恢复的命令如下所示:

    kubectl rollout pause deploy {Deployment 名称}
    kubectl rollout resume deploy {Deployment 名称}
    

    第一步, 新建一个deployment实例

    [root@master01]# kubectl apply -f deployment-nginx.yaml --record
    deployment.apps/mynginxdeployment created
    [root@master01]# cat deployment-nginx.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mynginxdeployment
    spec:
      selector:
        matchLabels:
          apps: nginx
      replicas: 4
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxSurge: 0
          maxUnavailable: 1
      template:
        metadata:
         labels:
           apps: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14
            imagePullPolicy: Always
            ports:
            - name: mynginxports
              containerPort: 80
    [root@master01]#
    

    第二步, 把新建的deployment 镜像设置为 nginx:1.16

    连续执行以下命令

    kubectl set image deployment mynginxdeployment nginx=nginx:1.16 --record
    kubectl rollout pause deployment mynginxdeployment
    

    第三部,验证更新后的pod是否正常

    如果正常,那么就继续更新剩余的pod

    kubectl rollout resume deployment mynginxdeployment
    

    Deployment控制器的回滚

    例如,发现新版本的Pod有严重的问题,需要回滚到之前的版本

    1) 使用以下命令查看历史变更记录
    kubectl rollout history deployment mynginxdeployment

    提示 发布deployment的时候一定要加上--record
    保留历史记录的本质是保留每次修改所创建的ReplicaSet 控制器,而回滚的本质其实是
    切换到对应版本的ReplicaSet控制器
    Deployment控制器是通过ReplicaSet控制器来管理Pod的

    1. 架设我们根据deployment的历史记录,回滚到某个版本号
      例如退回到版本8:
    kubectl rollout undo deployment mynginxdeployment --to-verision=8
    
  • 相关阅读:
    python调c++之caffe实现
    coco数据处理与分割
    一个队列类的实现(比delphi自带的速度快70倍) 转
    临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别(转)
    缇、像素转厘米的方法
    缇 磅 像素
    delphi RTTI 反射技术(转自朝闻道博客)
    emrDB本机异地泵导双备份并自动压缩 新.bat
    ORA-01589错误 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
    Oracle ORA-01033: 错误解决办法
  • 原文地址:https://www.cnblogs.com/faberbeta/p/14145017.html
Copyright © 2020-2023  润新知