【大话云原生】kubernetes灰度发布篇-从步行到坐缆车的自动化服务升级
此文系【大话云原生】系列第四篇,该系列文章期望用最通俗、简单的语言说明白云原生生态系统内的组成、架构以及应用关系。从这篇开始我们要开始针对Kubernetes进行介绍了,本文内容如下:
一、Kubernetes的Pod概念解析
前文说到老婆过生日了我们一起出去旅游,上了团体服务班车,小娜同学(老婆)闲聊到:“这服务还不错哈,2个跟车导游,1个司机”。三句不离老本行,我无聊的说到:“他们三个人就是一个Pod,提供一天的旅游服务内容,有主有次不可分割"。

小娜同学又上套了:“什么是Pod啊?英文单词豌豆荚?”,让老婆增加对老公崇拜感的机会不可多得,那就开讲,反正坐车也是闲着。
- 一般来说一个Pod提供一种服务(微服务),“哎?之前说容器的时候你也是这么说的”。是的,容器是提供服务的最小单元,那么Pod是什么概念?这是因为我们现在讨论的是k8s,Pod是k8s服务调度的最小单元。
- “为什么引入Pod的概念?”,因为有的时候你会发现:一个服务通常包含辅助它的服务。比如这个车上,一个导游长得漂亮口才好作为主导游提供核心讲解服务,还有一个辅助她的导游负责发帽子、统计人数、统计消费等。同理回到架构技术角度,一个nginx提供web服务容器作为核心服务容器,负责收集nginx日志的服务容器作为辅助服务和它部署在一起,这样方便日志收集与连接。
- 一个Pod存在一个基础容器Infra,基础容器Infra提供了网络共享的能力,就像主导游和辅助导游必须在一辆车(基础容器Infra)上,或者基于这辆车组成了一个组合,否则他们之间无法对话及资源共享。
- 一个Pod下的容器共享网络及数据卷,所以将容器服务间具有相当强的捆绑关系的服务容器放到一个Pod里面,通常一个容器提供核心服务,其他的容器提供辅助服务,如:日志收集、监控告警等。
二、Pod标签与Service服务
聊着聊着很快车就到了旅游目的地,一下车发现X公司的团队还真不少。导游都统一都带上了深红色的帽子(游客带上蓝色遮阳帽),浩浩荡荡出发。深红色的帽子为导游打上了标签,他们面向游客(用户)提供了统一的一种服务叫做:“导游服务”。

对于K8s中的服务架构也是一样的:
- 一个Pod通常提供一种服务,如nginx web访问服务
- 多个提供同样服务的Pod通常打上一样的标签
- 创建Service:具备同一种标签的Pod组成一个Service,对外提供服务。
三、自动化服务升级-灰度发布
我们今天的项目是爬山,提供了两种方式:一是直接爬(即步行),二是坐缆车,当然如果你中途爬不动了也可以在缆车换乘站上缆车。
- 步行到缆车可以理解为一次服务升级(1.0版本服务升级为2.0版本服务)。从技术角度,服务升级等同于新版本服务的部署被称为Deployment。K8s同样使用Deployment这个术语代表服务升级部署。
- ReplicaSet代表一个版本的Pod服务组合,1.0步行版本的Pod服务组合,2.0为缆车版本的Pod服务组合,这样理解是不是容易多了呢?
- 在服务容器部署Deployment的过程中,不希望服务中断(即:不希望对步行1.0的用户的服务出现中断情况),所以停掉一个1.0的Pod,再启动一个2.0的Pod2.0,这个过程被称为灰度发布。整个过程高度依赖Kubernetes提供的自动化运维能力。

上面的图每个RS只有2个Pod,还不能那么直观的理解灰度发布,看下面这张图
- 圆形代表Pod,分为v1版本和v2版本,虚线标识的Pod表示即将下线的Pod
- v1版本的Pod减一,v2版本的pod加一
- 逐渐ReplicaSet:v1的Pod全部销毁,ReplicaSet:v2的Pod逐渐被创建并启动提供服务
- 整个的灰度发布过程,在k8s种通过一个Deployment进行定义。

此专栏《大话云原生》的前三篇文章如下
- 《【大话云原生】煮饺子与docker、kubernetes之间的关系》
- 《【大话云原生】负载均衡篇-小饭馆的流量变大了》
- 《【大话云原生】微服务篇-五星级酒店的服务方式》
如果您读完了觉得有收获,期待您能转发分享,您的支持是我不竭的创作动力!
欢迎关注我的博客,更多精品知识合集
本文转载注明出处(必须带连接,不能只转文字):字母哥博客 - zimug.com
觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力!。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。
- 《kafka修炼之道》
- 《手摸手教你学Spring Boot2.0》
- 《Spring Security-JWT-OAuth2一本通》
- 《实战前后端分离RBAC权限管理系统》
- 《实战SpringCloud微服务从青铜到王者》
【大话云原生】kubernetes灰度发布篇-从步行到坐缆车的自动化服务升级的更多相关文章
- 干货分享|使用 Istio 实现灰度发布
Kubernetes 作为基础平台,提供了强大的容器编排能力.但是在其上部署业务和服务治理上,仍然会面对一些复杂性和局限性.在服务治理上,已经有许多成熟的 ServiceMesh 框架用于扩充其能力, ...
- 【转】Spring Framework灰度发布
今天简单介绍下SpringFramework微服务中几种服务发布策略以及实现方式.我接触过的有蓝绿.滚筒和灰度发布. 蓝绿发布: 简单说就像美帝选总统投票一样,非蓝即绿一刀切,这个其实也是传统软件架构 ...
- 【从小白到专家】收官!Istio技术实践之九:路由控制与灰度发布
本期是Istio技术实践专题的最后一个模块,主题是Istio的路由控制与灰度发布.上一期我们讲到,虚拟服务(Virtual Service)以及目标规则(Destination Rule)是 Isti ...
- 【Nginx】实现负载均衡、限流、缓存、黑白名单和灰度发布,这是最全的一篇了!
写在前面 在<[高并发]面试官问我如何使用Nginx实现限流,我如此回答轻松拿到了Offer!>一文中,我们主要介绍了如何使用Nginx进行限流,以避免系统被大流量压垮.除此之外,Ngin ...
- 基于 Istio 与 Kubernetes 对应用进行灰度发布与 Tracing
灰度发布,是指在黑与白之间,能够平滑过渡的一种发布方式.通俗来说,即让产品的迭代能够按照不同的灰度策略对新版本进行线上环境的测试,灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以对新版本进行测试 ...
- Kubernetes 使用 Ingress 实现灰度发布功能
使用 Ingress 实现灰度发布 一.Canary 规则说明 Ingress-Nginx 是一个K8S ingress工具,支持配置 Ingress Annotations 来实现不同场景下的灰度发 ...
- 【大话云原生】煮饺子与docker、kubernetes之间的关系
云原生的概念最近非常火爆,企业落地云原生的愿望也越发强烈.看过很多关于云原生的文章,要么云山雾罩,要么曲高和寡. 所以笔者就有了写<大话云原生>系列文章的想法,期望用最通俗.简单的语言说明 ...
- Nginx详解二十四:Nginx深度学习篇之灰度发布
实战场景 - 灰度发布 灰度发布的作用:按照一定的关系区别,分部分的代码进行上线,使代码的发布能平滑过渡上线实现方式: 1.用户的信息cookie等信息区别 2.根据用户的IP地址 安装memcach ...
- Istio最佳实践:在K8s上通过Istio服务网格进行灰度发布
Istio是什么? Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等公司.它提供了完整的非侵入式的微服务治理解决方案,包含微服务的管 ...
随机推荐
- Prometheus自定义监控告警项-3
prometheus 编写告警规则 将自定义的告警规则写到独立的文件中,prometheus.yml中引用如下: rule_files: - "rules/*.yml" [root ...
- Mysql之B+树索引实战
索引代价 空间上的代价 一个索引都对应一棵B+树,树中每一个节点都是一个数据页,一个页默认会占用16KB的存储空间,所以一个索引也是会占用磁盘空间的. 时间上的代价 索引是对数据的排序,那么当对表中的 ...
- Correct the classpath of your application so that it contains a single, compatible version of org.springframework.util.Assert
一.问题描述 今天启动springboot工程时,报上面的错误. 二.解决方法 加入如下pom: <dependency> <groupId>org.springframewo ...
- IDEA 常用快捷键操作
自定义设置及查询: 操作路径:file-setting-Keymap-Editor actions 右击需要修改的action操作,或者右击Editor actions,选择添加Add Keyboar ...
- Oracle入门基础(十三)一一java调用oracle存储过程
package demo; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultS ...
- 详细描述一下 Elasticsearch 索引文档的过程 ?
这里的索引文档应该理解为文档写入 ES,创建索引的过程. 文档写入包含:单文档写入和批量 bulk 写入,这里只解释一下:单文档写入流程. 记住官方文档中的这个图. 第一步:客户写集群某节点写入数据, ...
- 解决IDEA包重叠在一起的问题
问题显现: 解决方法:
- 什么是RESTFUL?REST的请求方法有哪些,有什么区别?
这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [什么是REST ...
- 认识 Function.prototype.bind()
欢迎前端爱好者加入QQ群:112916679 答疑解惑,且可获取更多前端资料! bind()方法创建一个新的函数, 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个 ...
- python-图的字典表示
图的字典表示.输入多行字符串,每行表示一个顶点和该顶点相连的边及长度,输出顶点数,边数,边的总长度.比如上图0点表示:{'O':{'A':2,'B':5,'C':4}}.用eval函数处理输入,eva ...