基于k8s的DevOps实践之路

Tommy744 等级 663 0 0

原标题:基于k8s的DevOps实践之路

很多快速发展的公司都面临着一个巨大挑战:在需求不断动态横向扩容的同时继续保持系统的高可用性。如何有效解决这一问题,Kubernetes(k8s)应运而生。k8s以运行可扩展工作负载而闻名,它可以根据资源使用情况调整工作负载。

白山科技云分发团队基于多年的DevOps实践经验,在白山会运维日第三期与Thoughtworks咨询师陈海鹏及业内运维同学共同探讨基于k8s的DevOps实践经验。

白山运维工程师张灿强从用户故事、产品设计、实践之路、未来思考等角度分享了白山基于k8s搭建自动化运维IaaS平台的思路。

用户故事

首先,我们从开发整个环节来看用户故事,思考如何将平台做的更简单。

基于k8s的DevOps实践之路

DevOps开发阶段

从图上的开发过程,我们可以梳理出目前的需求主要包括:为服务解决方案、云开发平台、CI/CD、基于k8s的IaaS、可观察性、边缘计算、Serverless、DApp,我们最终确定了目前需要完成的4项核心功能,并确定了优先级:

1. CI/CD

2. 基于k8s的IaaS

3. 数据可视化

4. 云开发平台

明确需求后,我们考虑过以上功能是否需要直接外采或自研。外采的好处在于可以快速部署,但实际研发过程中,我们只需要其中部分功能,“全家桶”的捆绑无法满足灵活自定义的需求,难以进行后续进一步演进开发。根据实际情况,我们最终考虑一步步自研完成。

产品设计

在产品设计阶段,我们需要既能保证快速上线,同时满足后期局部的可修改性,我们为这个长期项目做了乐高式松耦合设计:

基于k8s的DevOps实践之路

架构图

松耦合架构允许每一层只完成该部分的功能,最小化对上下的耦合度,保证局部修改对整个系统影响最小。例如:我们需要部署一个Prometheus监控,运维同学无需管理源码,我们只需要直接从配置开始进入部署,或者把镜像缓存到本地后开始部署。

实践之路

1.CI/CD

在开始之前我们首先确定了Git工作流,我们考虑过主干开发,考虑到主客观条件以及我们的目标是让开发变成一件简单的事情,我们最终采用了如下图的开发流程。

基于k8s的DevOps实践之路

CI/CD研发我们最初选用的是Jenkins。但是我们的Git用的是Bitbucket,初期用户体验并不是很好,而且部署的权限控制、账号体系都比较繁琐。为达到更好用户体验目的,我们现在开始尝试使用Bamboo研发CI/CD。

除了用户体验外,在使用Jenkins期间,Jenkinsfile前期的管理也比较粗糙,项目增多后分叉也变的很多,迭代和维护都很繁琐。为更好地管理Bamboo的配置,我们采用了Git子树,以达到方便升级的效果;同时我们也把执行动作脚本化,既确保差异管理又能脱离CI/CD体系,本地即可完成独立调试开发。

2.测试

在整个实践过程中遇到的最大问题在于测试、测试推广以及快速构建各种集成测试环境。

测试推广更多的属于管理问题,研发可以涉及的主要在于:自动化生成一些测试和基镜,帮助项目快速补齐部分测试。

关于如何快速构建各种集成测试环境,我们使用Helm来部署每个项目。通过主Helm 包的依赖尽可能快速地构建关联环境。

环境构建只是开始,环境有了,我们需要测试它们,目前自动化测试最为合适。

如果这个过程有测试部门参与会简单很多,根据业务线和场景去做各个测试管理和维护。

在没有测试部门参与的情况下我们该怎么做?如果代码是同语言大仓库,这个问题也会很简单,只需进行关联回归即可。但是我们面临的现实情况是:一个CDN系统设计涉及各个组件各种环境和语言。我们的解决方式是把测试链条的各个环节落实到各自的项目上,谁开发谁负责原则。我们只管理关系链,做上线前回归。

基于k8s的DevOps实践之路

快速部署关联系统方案

3云开发平台

很多开发者都会遇到多个项目开发环境的切换问题,例如:很多同语言的新老项目版本差异较大、需自定义环境设置;或者很多新人想要入手一个项目搭建开发环境就要耗费大量时间。

我们的原则是把开发变成一件很简单的事情。我们正在尝试使用Eclipse Che的工作空间管理的方式来管理项目开发环境,以降低开发门槛。Eclipse Che是一个开源的解决方案,这里不作过多介绍,感兴趣的朋友可以自己了解下。

未来思考

产品的最终形态可能是什么样子?

基于k8s的DevOps实践之路

目前按照目前的优先级,火箭右侧的4项核心功能是我们优先要做的。就像上面所说的松耦合架构有利于产品的局部迭代升级,局部的量变有可能带来产品的质变。

往前一步,我们需要做什么,才能更贴近用户?应该是微服务解决方案。

往后一步,我们需要做什么,才能更贴近云服务?目前能确定的是对标产品是容器云,那这个平台的卖点就是一个完整开发工具链的容器云。

关于边缘计算,作为IaaS层的k8s换成KubeEdge等或许我们产品就具备了边缘计算的能力。

如果区块链的DApp或是Serverless成熟的IaaS层的修改替换更容易让产品快速适应市场。返回搜狐,查看更多

责任编辑:

本文转自 https://www.sohu.com/a/316030913_446710,如有侵权,请联系删除。

收藏
评论区

相关推荐

DevOps与CICD的区别 及 docker、k8s的CICD思路
1\. DevOps简介DevOps 就是开发(Development)、测试(QA)、运维(Operations)这三个领域的合并。image.png为什么要合并这三个领域?主要是开发和运维的脱节。DevOps是一种思想、一组最佳实践、以及一种文化。DevOps落地实施,从组织架构、设计人员、流程、人员分工、人员技能到工具,变化
基于k8s的DevOps实践之路
原标题:基于k8s的DevOps实践之路很多快速发展的公司都面临着一个巨大挑战:在需求不断动态横向扩容的同时继续保持系统的高可用性。如何有效解决这一问题,Kubernetes(k8s)应运而生。k8s以运行可扩展工作负载而闻名,它可以根据资源使用情况调整工作负载。白山科技云分发团队基于多年的DevOps实践经验,在白山会运维日第三期与Thoughtworks
如何基于K8s构建下一代DevOps平台?
如何基于K8s构建下一代DevOps平台?发布时间: 20082715:41阿里妹导读:OAM是阿里巴巴与微软联合推出的开放应用模型,旨在解耦应用研发、应用运维与基础设施人员在应用生命周期中各自的关注点,明晰责任与界限,聚焦自身业务,同时又依然能紧密协作。当前云原生DevOps体系现状如何?面临哪些挑战?如何通过
K8S为何杀死我的应用
#### 首发公众号:二进制社区,转载联系:binary0101@126.com ### 导读 "K8S为我们提供自动部署调度应用的能力,并通过健康检查接口自动重启失败的应用,确保服务的可用性,但这种自动运维在某些特殊情况下会造成我们的应用陷入持续的调度过程导致业务受损,本文就生产线上一个核心的平台应用被K8S频繁重启调度问题展开剖解,抽丝剥茧一
K8S使用群晖DS218+的NFS
### 欢迎访问我的GitHub https://github.com/zq2599/blog\_demos 内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等; ### 群晖和K8S+ 1. 学习K8S时经常用到网络存储,于是想找个稳定的NFS服务,正好家里的群晖DS218+长期开着,空间又充足
01:k8s 安装部署
**k8s 官网详解:** https://www.kubernetes.org.cn/k8s 准备环境:三台centos7 服务器 192.168.6.129 k8s-master(主) 192.168.6.130 k8s-node-1(节点) 192.168.6.131 k8s-node-2(节点) **#kubernetes(
DevOps 之路
### 本日共賞 * 系統架構 * 部署 Jenkins ### 希望你知道 * DevOps * CI/CD * 在 GCP 中建立 k8s 叢集 既然這次是參加 DevOps 組別,勢必要與 DevOps 做個完美的結合。我們在過去的二十幾天內,一起探討了 k8s 的概念、各種
DevOps能否在Kubernetes攻击中幸存?
![](https://oscimg.oschina.net/oscnet/f9eca4ac5fa4f61c8780f52c71e764f265a.jpg) ![](https://oscimg.oschina.net/oscnet/5acadbba756cf65263ffc4d9a1d8d62e52a.jpg) **导语** DevOps能否
Gitlab Runner的分布式缓存实战
### 欢迎访问我的GitHub [https://github.com/zq2599/blog\_demos](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2Fzq2599%2Fblog_demos) 内容:所有原创文章分类汇总及配套源码,涉及Java、Doc
K8S的Kafka监控(Prometheus+Grafana)
### 欢迎访问我的GitHub [https://github.com/zq2599/blog\_demos](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2Fzq2599%2Fblog_demos) 内容:所有原创文章分类汇总及配套源码,涉及Java、Doc
K8S的StorageClass实战(NFS)
### 欢迎访问我的GitHub [https://github.com/zq2599/blog\_demos](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2Fzq2599%2Fblog_demos) 内容:所有原创文章分类汇总及配套源码,涉及Java、Doc
Kubernetes K8s架构师实战集训营,对标大厂高级K8s运维岗
Kubernetes K8s架构师实战集训营,对标大厂高级K8s运维岗,覆盖主流容器云平台核心技术,由李振良老师主讲,共8个大的章节,包含工具共计20G。课程为K8s架构师中高级课程,适合K8s已经入门或者高级运维/开发人员学习,学完本套课程能够提升K8s架构设计及故障排查能力,增强公司K8s容器平台。 ![Kubernetes K8s架构师实战集训营,对
Kubernetes 集群管理IDE,通过鼠标拖拉来管理K8S
![](https://oscimg.oschina.net/oscnet/9ae5a3de-1849-4878-945f-f74259c43334.gif) 靠鼠标也能管理大量K8s集群,K8 Studio维运工具推出测试版 ![](https://oscimg.oschina.net/oscnet/f48d872f-715b-4e
Kubernetes使用中发现的问题和错误
Kubernetes使用中发现的问题和错误 ===================== 本文不再更新,移动到 [https://qq253498229.github.io/docs-k8s/](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fqq253498229.github.io%2F
TiDB on Kubernetes 最佳实践
> 作者介绍:吴叶磊 PingCAP Cloud 工程师。 随着 Kubernetes(K8s) 的全面成熟,越来越多的组织开始大规模地基于 K8s 构建基础设施层。然而,考虑到数据库在架构中的核心地位与 K8s 在有状态应用编排上的短板,仍有不少组织认为在 K8s 上运行核心数据库会带来颇高的风险。事实上,在 K8s 上运行 TiDB 不仅能实现企业技术