k8s+docker+Jenkins实现可持续集成、容器服务监控、平滑增加容器等功能

在项目日常开发过程中,我们需要可持续的集成项目。如果不是可持续集成的话,往往有新版本的时候才会在测试环境中重新部署。如果项目对迭代速度要求比较高的情况下,我们需要每次开发新增一个接口的时候,就马上把测试环境的代码也一样同步更新,然后重新部署。基于这种模式下面的话,我们不能再向以前传统的模式,将打包好的war或者jar上传到服务器种,然后重新部署运行。所以今天给大家介绍另外的一种模式。

应用场景:
问题:项目分为app和后台两种,为了保证再同一个环境下面测试,所以不可能链接开发本地服务进行测试,所以需要搭建一个测试环境,供app进行开发测试。这个时候就有一个问题,如果开发新增加功能或者app调试的时候发现问题,这个时候就需要提交新的代码或者修复bug,然后重新发布到测试环境中去。但是后台人员又不能进入Linux服务器中,只能通过Linux运维人员来重新部署,这样的效率就会极低。
方案:基于这种模式下面的,我们引入了 Jenkins工具,通过Jenkins来拉取svn/git代码到服务器中,再Jenkins中编写Linux运行脚本,通过脚本我们就可以对代码进行编译运行,然后重新发布到服务器中运行。后端人员也不需要通知Linux运维人员来执行这个操作,直接再Jenkins的控制台就可以执行了。

应用场景升级:
场景升级一:
问题:随着开发的进行,项目越来越大,项目的模块也越来越多,每一次编译的时间也越来越久。可是对项目而已,我们修改的接口只是其中一个模块的代码,我们当然不希望因为修改一个模块的代码就重新部署所有模块项目。我们希望可以针对于修改的模块进行单独的部署,这样不仅可以提高部署的效率,也会让部署的时间大大的减少。
方案:基于上面的问题,我们引入了 docker,然后修改Jenkins相关的Linux脚本。将项目按照模块来划分,每一个项目都可以单独来构建,各个项目之间没有必然的依赖。每个模块都会被构建为一个 docker镜像,然后进行部署。这样我们就可以做到,针对于具体的模块来单独的部署,而且不会对其它模块产生任务影响。

场景升级二:
问题:随着项目逐步进行,某一个模块的项目可能需要部署多个的应用,某一些模块需要少部署一些。用专业术语来说就是平滑的新增或者减少模块服务数量,这样有一个前提就是,我们不能关闭所有服务然后重新初始化部署应用。也就是在线上就要做到这一点。还有就是随着模块的增加,服务数量越来越多,我们需要有一个监控平台来监控这些服务的运行情况。
方案:基于上面的问题,我们引入了 kubernetes(简称k8s),通过k8s我们可以在k8s给我们提供一个管理平台上面就可以做到上面的这些需求,比如关闭某个服务,添加某个服务、监控服务的运行状态等等之类的。
下面就是 k8s+docker+Jenkins整个模型的流程图,如下所示:

总体流程:
  • 在开发机开发代码后提交到gitlab
  • 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry
  • 之后将在k8s-master上执行rc、service的创建,进而创建Pod,从私服拉取镜像,根据该镜像启动容器

想要更多干货、技术猛料的孩子,快点拿起手机扫码关注我,我在这里等你哦~

  • 8
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值