假设现在有业务需求,计划将所有的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

k8s deployment 金丝雀发布 更新的 暂停 恢复 回滚的更多相关文章

  1. SQL Server(2000,2005,2008):恢复/回滚时间比预期长(译)

    我已经讨论了各种确定恢复状态的方法,但是本周我参与了一个围绕回滚的有趣讨论.交易已经运行了14个小时,然后发出了KILL SPID.SPID进入回滚,并发生2天和4小时. 自然的问题是为什么不14小时 ...

  2. 阿里云k8s构建镜像时设置版本号用于版本回滚

    jenkins 构建配置参数化构建过程 构建  执行 shell  , 将版本号参数传入 脚本 脚本push  带版本号的镜像到阿里云镜像仓库 #!/bin/bash #获取参数 while geto ...

  3. 详细聊聊k8s deployment的滚动更新(二)

    一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 ● 相关的参数介绍:   livenessProbe:存活性探测.判断pod是否已经停止   readinessProbe:就绪 ...

  4. 详细聊聊k8s deployment的滚动更新(一)

    一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 二.环境准备 组件 版本 OS Ubuntu 18.04.1 LTS docker 18.06.0-ce 三.准备镜像 首先准备 ...

  5. 使用GitLab进行落地项目的管理,并且自动更新、重启、回滚

      Gitlab 清空项目历史commit,节省空间 http://blog.csdn.net/dounine/article/details/77840416?locationNum=6&f ...

  6. Istio Routing 实践掌握virtualservice/gateway/destinationrule/AB版本发布/金丝雀发布

    原文 在学习像 Istio 这样的新技术时,看一下示例应用程序总是一个好主意. Istio repo 有一些示例应用程序,但它们似乎有各种不足. 文档中的 BookInfo 是一个很好的示例. 但是, ...

  7. 9.1 k8s pod版本更新流程及命令行实现升级与回滚

    1.创建 Deployment root@k8-deploy:~/k8s-yaml/controllers/deployments# vim nginx-deployment.yaml apiVers ...

  8. k8s学习笔记(3)- kubectl高可用部署,扩容,升级,回滚springboot应用

    前言:上一篇通过rancher管理k8s,部署服务应用扩容,高可用,本篇介绍kubectl命令行部署高可用集群节点,测试升级.扩容等 1.测试环境:3节点k3s,使用其中2节点(ubuntunode1 ...

  9. 2、jenkins+svn自动发布和回滚

    Jenkins配置回滚思路: 目前只能实现使用salt来管控配置文件的管控,配置文件的版本回滚需要后续定制化开发,或者进行格外其他的管理操作.后续实现 以下配置可以为每个项目备份构建文件到本地指定路径 ...

随机推荐

  1. windows server2012 搭建FTP服务器过程

    搭建过程链接地址:https://blog.csdn.net/smalllu161226/article/details/53887751 1.打开windows server2012R2 服务器管理 ...

  2. java基础学习——Swing图形化用户界面编程

    原文链接:https://blog.csdn.net/yiziweiyang/article/details/52317240 链接有详细解释,也有例子,以下是个人参照例子实验的代码. package ...

  3. 第46天学习打卡(四大函数式接口 Stream流式计算 ForkJoin 异步回调 JMM Volatile)

    小结与扩展 池的最大的大小如何去设置! 了解:IO密集型,CPU密集型:(调优)  //1.CPU密集型 几核就是几个线程 可以保持效率最高 //2.IO密集型判断你的程序中十分耗IO的线程,只要大于 ...

  4. CMD(命令提示符)的基本操作(文件夹)

    打开CMD窗口,接下来将介绍如何使用CMD来创建.删除.修改.查看文件夹(目录) ps:以下所有文件夹将统一写成目录 1.1 使用CMD创建空目录(为了更好的演示,本文皆以D盘为当前路径),命令如下: ...

  5. Java 程序员每天都在做什么?

    作为一名 在大.中.小微企业都待过 的 Java 开发者,今天和大家分享下自己在不同公司的工作日常和收获.包括一些个人积累的工作提升经验,以及一些 Java 学习的方法和资源. 先从我的第一份 Jav ...

  6. 如何快速开发Winform应用系统

    在实际的业务中,往往还有很多需要使用Winform来开发应用系统的,如一些HIS.MIS.MES等系统,由于Winform开发出来的系统界面友好,响应快速,开发效率高等各方面原因,还有一些原因是独立的 ...

  7. Java 虚拟机详解

    深入理解JVM 1   Java技术与Java虚拟机 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言.Java类文件格式.Java虚 ...

  8. 03----python入门----函数相关

    一.前期知识储备 函数定义 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号  () 任何传入参数和自变量必须放在圆括号中间,圆括号 ...

  9. 什么是内存对齐,go中内存对齐分析

    内存对齐 什么是内存对齐 为什么需要内存对齐 减少次数 保障原子性 对齐系数 对齐规则 总结 参考 内存对齐 什么是内存对齐 弄明白什么是内存对齐的时候,先来看一个demo type s struct ...

  10. GTID介绍

    从MySQL5.6开始增加GTID这个特性,Global Transaction ID,全局事务ID,用来强化主从数据库的一致性,故障恢复,以及容错能力,来替代传统的人工的主从复制: 有了GTID,在 ...