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的


- 架设我们根据deployment的历史记录,回滚到某个版本号
例如退回到版本8:
kubectl rollout undo deployment mynginxdeployment --to-verision=8
k8s deployment 金丝雀发布 更新的 暂停 恢复 回滚的更多相关文章
- SQL Server(2000,2005,2008):恢复/回滚时间比预期长(译)
我已经讨论了各种确定恢复状态的方法,但是本周我参与了一个围绕回滚的有趣讨论.交易已经运行了14个小时,然后发出了KILL SPID.SPID进入回滚,并发生2天和4小时. 自然的问题是为什么不14小时 ...
- 阿里云k8s构建镜像时设置版本号用于版本回滚
jenkins 构建配置参数化构建过程 构建 执行 shell , 将版本号参数传入 脚本 脚本push 带版本号的镜像到阿里云镜像仓库 #!/bin/bash #获取参数 while geto ...
- 详细聊聊k8s deployment的滚动更新(二)
一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 ● 相关的参数介绍: livenessProbe:存活性探测.判断pod是否已经停止 readinessProbe:就绪 ...
- 详细聊聊k8s deployment的滚动更新(一)
一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 二.环境准备 组件 版本 OS Ubuntu 18.04.1 LTS docker 18.06.0-ce 三.准备镜像 首先准备 ...
- 使用GitLab进行落地项目的管理,并且自动更新、重启、回滚
Gitlab 清空项目历史commit,节省空间 http://blog.csdn.net/dounine/article/details/77840416?locationNum=6&f ...
- Istio Routing 实践掌握virtualservice/gateway/destinationrule/AB版本发布/金丝雀发布
原文 在学习像 Istio 这样的新技术时,看一下示例应用程序总是一个好主意. Istio repo 有一些示例应用程序,但它们似乎有各种不足. 文档中的 BookInfo 是一个很好的示例. 但是, ...
- 9.1 k8s pod版本更新流程及命令行实现升级与回滚
1.创建 Deployment root@k8-deploy:~/k8s-yaml/controllers/deployments# vim nginx-deployment.yaml apiVers ...
- k8s学习笔记(3)- kubectl高可用部署,扩容,升级,回滚springboot应用
前言:上一篇通过rancher管理k8s,部署服务应用扩容,高可用,本篇介绍kubectl命令行部署高可用集群节点,测试升级.扩容等 1.测试环境:3节点k3s,使用其中2节点(ubuntunode1 ...
- 2、jenkins+svn自动发布和回滚
Jenkins配置回滚思路: 目前只能实现使用salt来管控配置文件的管控,配置文件的版本回滚需要后续定制化开发,或者进行格外其他的管理操作.后续实现 以下配置可以为每个项目备份构建文件到本地指定路径 ...
随机推荐
- css 超过一行省略号
//超过一行省略号 overflow: hidden; white-space: nowrap; text-overflow: ellipsis; //超过两行省略号 overflow: hidden ...
- 微信小程序一周时间表
<view class="dateView"> <image class="dateLeft" bindtap="prevWeek& ...
- 微信小程序弹出层
1.消息提示 wx.showToast wx.showToast({ title: '成功', icon: 'success', duration: 2000 })2.模态弹窗 wx.show ...
- 订单和产品的多对多表关系在crudapi系统零代码实现
表关系管理 在上一篇序列号管理中,产品和销售订单都是孤立的单表,本文通过crudapi中表关系(relation)管理将多个表连接起来,形成一个整体. 概要 关系类型 表与表之间的关系(relatio ...
- 2020年12月-第02阶段-前端基础-CSS Day02
CSS Day02 复合选择器 后代选择器 并集选择器 1. CSS复合选择器 理解 理解css复合选择器分别的应用场景 为什么要学习css复合选择器 CSS选择器分为 基础选择器 和 复合选择器 , ...
- 【pytest官方文档】解读fixtures - 8. yield和addfinalizer的区别(填坑)
在上一章中,文末留下了一个坑待填补,疑问是这样的: 目前从官方文档中看到的是 We have to be careful though, because pytest will run that fi ...
- OWASP TOP 10 详解
OWASP--开放式web应用程序安全项目 参考文献:袁鸣凯.OWASP Top 10十大风险 – 10个最重大的Web应用风险与攻防.2016-9-18. https://blog.csdn.n ...
- Android实现三角形气泡效果方式汇总
在开发过程中,我们可能会经常遇到这样的需求样式: 这张图是截取京东消息通知的弹出框,我们可以看到右上方有个三角形的气泡效果,这只是其中一种,三角形的方向还可以是上.下.左.右. 通过截图可以发现,气泡 ...
- WAV16T VPX国产化千兆交换板
WAV16T是基于盛科CTC5160设计的国产化3U三层千兆VPX交换板,提供16路千兆电口,采用龙芯 2K1000处理器.支持常规的L2/L3协议,支持Telnet.SNMP.WEB,CLI等多 ...
- C# 基础 - 日志捕获一使用 StreamWriter
public static class LogHelper { private static readonly string _baseDir = AppDomain.CurrentDomain.Ba ...