今天继续给大家介绍Linux运维相关知识,本文主要内容是金丝雀发布。

一、金丝雀发布定义

金丝雀发布,即灰度发布,是一种Pod的发布方式。金丝雀发布采取先添加、再删除的方式,保证Pod的总量不低于期望值。并且在更新部分Pod后,暂停更新,当确认新Pod版本运行正常后再进行其他版本的Pod的更新。
Deployment控制器支持Pod的更新采取金丝雀发布的方式。今天,我们就来实际进行金丝雀发布的实战。

二、金丝雀发布实战

首先,我们先创建一个Deployment控制器,如下所示:

接下来,我们来设置金丝雀发布的参数,执行命令:

kubectl patch deployment deployment -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":0}}}}'

执行结果如下:

在上述命令中,我们给Deployment控制附加了maxSurge和maxUnavailable两个参数,将maxSurge设置为1,将maxUnavailable设置为0,使得Pod的数量可以恰好等于我们期望的数量,或者是比该数量多一个。
接下来,在参数设置完成后,我们就可以开始进行更新了,执行命令:

kubectl set image deployment deployment myapp=ikubernetes/myapp:v2 && kubectl rollout pause deployment deployment

在该命令中,前面的命令可以使得Deployment控制器更新到myapp的v2版本,在前面的命令执行成功后,会紧跟着执行后面的命令,即暂停Deployment控制器的更新。这两条命令执行结果如下:

在上述命令执行完毕后,我们来查看当前的Pod情况,如下所示:

从上图中可以看出,我们期望的Pod数量是3个,而当前的Pod数量是4个,我们查看当前Pod的具体信息,执行命令:

kubectl get pods -o custom-columns=Name:metadata.name,Image:spec.containers[0].image

该命令执行结果如下:

从上图中可以看出,在当前状态下,Deployment控制器下一共有四个Pod,其中一个Pod是v2版本,其余三个Pod是v1版本。
接下来,我们查看当前Deployment的更新状态,执行命令:

kubectl rollout status deployment deployment

执行结果如下:

从上图中可以看出,当前的Deployment控制器的更新已经完成了一个,并处于暂停的状态。此时,如果是在生产环境下,我们就处于一个新版本和老版本并存的状态,我们可以借此检验新版本Pod的运行情况。如果新版本的Pod没有问题,那么我们就可以继续进行更新,执行命令:

kubectl rollout resume deployment deployment

执行结果如下:

这时,我们再来查看deployment控制器的更新情况,结果如下:

从上图中可以看出,我们已经成功更新了deployment控制器下的Pod,此时我们再来查看一下Pod,结果如下:

从上图中我们可以看出,此时我们的Pod已经全部为v2版本,我们的金丝雀发布实战成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

Kubernetes详解(二十六)——金丝雀发布相关推荐

  1. 数字音频总线A2B开发详解二十:ADAU1701做的功放板的音效(26个例程)(第一部分)

    作者的话 A2B基础的东西我感觉已经讲的差不多了,通过近20篇文章,把A2B做数据传输要干的事情都捋了一遍,那下一个篇章,我就来好好说一说Slave功放板怎么做音效,就从这块ADAU1701的Slav ...

  2. 数字音频总线A2B开发详解二十二:ADAU1701做的功放板的音效(26个例程)(第二部分)

    六. A2B-ADAU1701音效开发:直通分频 混音讲完了,我们再来说说分频,同一个音源,如何才能同时推送到S板的2个黑色输出口来播放音乐呢? 先做S板的Sigma工程,最简单的分频输出,就是用T: ...

  3. flutter 获取android 还是ios_Flutter完整开发实战详解(二十、 Android PlatformView 和键盘问题)...

    作为系列文章的第二十篇,本篇将结合官方的技术文档科普 Android 上 PlatformView 的实现逻辑,并且解释为什么在 Android 上 PlatformView 的键盘总是有问题. 为什 ...

  4. Pygame详解(十六):cursors 模块

    pygame.cursors Pygame 中使用光标资源的模块. 函数 pygame.cursors.compile()  --  由纯字符串创建二进制光标数据 pygame.cursors.loa ...

  5. 【H.264/AVC视频编解码技术详解】十六:帧内预测编码的基本原理

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  6. 计算机基础知识教程职称怎么计算,2017年职称计算机考试基础知识教程详解(二十)...

    文档的操作 一. 文档操作: 1. 新建:文件→新建→任务窗格→新建选项区→空白工作簿 ● ctrl+N组合键 ● 例建基于模板的工作簿 A. 文件→新建→新建工作簿任务窗格 B. 根据模板新建区域单 ...

  7. openstack详解(十六)——openstack Nova安装与数据库配置

    今天继续给大家介绍Linux运维相关知识,本文主要内容是openstack Nova安装与配置. 一.Nova节点安装 Nova节点的安装是在Keystone节点成功安装的基础上进行的.Keyston ...

  8. linux 命令详解 二十二

    #${variable:=word}的示例,其C语言表示形式为: #    if (NULL == variable) {     #        variable=world;     #     ...

  9. TCP/IP详解--第十六章

     第16章 BOOTP:引导程序协议   16.1   引言   在第5章我们介绍了一个无盘系统,它在不知道自身 IP地址的情况下,在进行系统引导时 能够通过 RARP来获取它的 IP地址.然而使用 ...

  10. linux 命令详解 二十四

     11.  数组: Shell中提供了创建一维数组的能力,你可以把一串数字.名字或者文件放在一个变量中.使用declare的-a选项即可创建它们,或者在变量后面增加下标操作符直接创建.和很多其它开发语 ...

最新文章

  1. 传统网站性能优化的三种手段
  2. linux下svn重新定位的方法
  3. 关于mysql出现大量locked进程
  4. 了解为什么要使用微服务!
  5. [转]Oracle - 数据库的实例、表空间、用户、表之间关系
  6. git学习笔记-(6-提交对象)
  7. [改造]微信缩放字体view的改造
  8. 宇枫资本投资过程中要注意这些习惯
  9. 中关村标协智能物联分技术委员会成立,小米张明当选第一届主任委员
  10. 分享招聘工作流程图模板及绘制技巧
  11. 服务器上线运行正常但不能上网,网线是好的,插笔记本正常上网,插在服务器上却不能上网的解决方法...
  12. 十万部冷知识:“澳大利亚”为什么属于亚洲球队?
  13. Windows系统拦截广告弹窗
  14. [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (5) 嵌入式hash表
  15. Rust 创始人:社区应限制成长速度;电商法 1 月 1 日起实施
  16. cad序列号2016申请号_安装 CAD 踩坑
  17. 简单的数据库关系表建立
  18. excel相同内容单元格数值等于固定值怎么做?
  19. OCP/OCA认证考试资料及工具软件分享
  20. SSH2框架实现注冊发短信验证码实例

热门文章

  1. 数据结构与算法python—12.二叉搜索树及python实现与leetcode总结
  2. 民营企业IT项目管理之路2
  3. 思考,思考,不停思考——《技术领导之路》序言
  4. 悟透JavaScript--可爱与智慧并存,灵感与诙谐共生
  5. 关于简历:怎样才叫熟悉/精通Linux?
  6. 【影像学基本知识】T1, T2 and PD weighted imaging
  7. php如何架构设计,PHP – 架构设计帮助 – OOP固体原则
  8. python 物联网服务器_python+树莓派实现IoT(物联网)数据上传到服务器
  9. 执行下面程序段后,y的结果是____。int x,y;x=y=2;x=x-2(y=y+1);printf(“%d“,y);A。3 B.2 C.1 D。0
  10. java实现阴历、阳历互相转换