一、deployment部署控制器概念
在学习rc和rs控制器资源时,我们指导,这两个资源都是控制pod的副本数量的,但是,他们两个有个缺点,就是在部署新版本pod或者回滚代码的时候,需要先apply资源清单,然后再删除现有pod,通过资源控制,重新拉取新的pod来实现回滚或者迭代升级;
那么deployment部署控制器资源,就因此而诞生了;
deployments资源,实际上就是用来专门部署业务代码的控制器,专门用于企业业务代码的升级和回滚;
所以,这个资源非常的重要;
deployment部署控制器,实际上控制的是rs副本控制器,如果说rs副本控制器是控制pod的副本数量的,那么deployment就是专门控制rs控制器资源的;
二、deployment资源的清单编写
deployment资源与replicaset资源的清单编写方式没什么区别,只是kind的类型换成deployment就可以了,就实现了资源清单的编辑;
三、小结
我们先以查看标签的方式,查看一下pod,可以看到下图中,多出来一个自动生成的标签;
deployment:是用来部署服务的一个资源,是常见的,企业中经常用的资源控制器;
功能:
1,管理rs资源,通过rs资源管理pod;
2,它剧本上线部署、副本设置、滚动升级、回滚等功能;
3,它也提供了声明式更新,可以使用apply命令进行更新镜像版本之类的能力‘
使用场景:企业部署迭代应用
原理:
通过“标签”管理,实现rs资源的控制,它会在自动创建rs的过程中给rs自动生成一个特有的标签(专属于deployment),当apply更新清单的时候,它会通过标签选定是使用历史的rs还是重新创建rs;
四、deployment实现升级和回滚
1,编辑deployment资源清单(v1版本)
2,创建deploy资源(V1)
3,创建service资源用于访问
· 编辑svc资源清单
· 创建svc资源
· 浏览器访问
4,修改deploy清单中pod镜像版本为V2
5,重新apply一下deploy资源
6,浏览器刷新查看是否迭代成功
发现,版本已经更新;
7,小结
deployment,不需要删除原有的pod,只需要apply重新更新一下资源清单,即可实现产品迭代,同比与rc和rs资源,优势明显;
deployment资源,在apply升级后,是又重新创建了rs资源,也就是再升级的过程中,有两个rs资源;
每修改一次镜像,就创建一个rs资源,我们选择使用哪个镜像,就会将这个镜像创建相应的pod副本数,不是用的,就逐渐归零;
五、deployment的升级策略
什么事升级策略?就是升级时过程的控制策略;
1,编辑资源清单
2,升级创建资源
六、蓝绿发布
1,概念
蓝绿发布,就是准备两套代码,不需要停止老版本(不影响上一个版本的用户访问),而是在另一套环境中部署新版本然后进行测试,测试通过后将用户流量切换到新的版本,其特点是业务没有终端,升级风险相对较小;
实现方式:
1,部署当前版本代码
2,部署svc资源
3,部署新版本使用新的deployment名称,新的标签
4,切换svc标签到新的pod中实现业务切换;
2,准备“蓝环境”版本v1
· 编辑deployment资源清单
· 编辑svc资源
· 创建svc与deployment资源(蓝环境的)
· 浏览器访问
蓝环境v1准备完毕
3,准备“绿环境”v2
· 编辑deployment资源清单
· 创建deployment资源(绿环境的)
4,切换svc资源的标签,让其指向新版本
· 修改svc资源清单
· 重新apply资源清单(svc)
5,浏览器访问测试
可见,切换新版本成功;
七、灰度发布(金丝雀发布)
实现的机制:
1,部署老版本,使用多副本(模拟正式环境)
2,部署svc,匹配标签
3,部署新版本,标签与老版本标签一致(让svc能够访问到,副本从0开始)
4,灰度版本测试没有问题,将恢复版本的副本数量,逐渐调高增加为生产数量;
5,将旧版本逐渐调低至0,此时流量全部跑到了新版本上;
1,部署老版本
2,部署新版本
3,部署svc
4,将新版本的副本逐渐调高
5,将旧版本的副本逐渐调低
至此,灰度发布,学习完毕;
灰度发布就是让新旧版本,一起上线,旧版本和新版本让用户随机访问到,然后没有业务问题之后,逐渐调高新版本副本数量,逐渐调低旧版本副本数量,从而达到灰度发布;
#########################################
至此,deployment部署控制器学习完毕;
#########################################
接下来,我们需要拿一个案例,来整体回顾一下,我们学过的知识;
#########################################
接下来,就是k8s的进阶学习了,你准备好了吗?