为了解耦开发、测试、运维在应用生命周期各自的关注点,明晰责任和界限,紧密协作,我们基于Kubernetes打造无限能力的新一代DevOps平台。
一、Kubernetes简介
Kubernetes 是Google开源的容器集群管理系统,是 Google 多年大规模容器管理技术 Borg 的开源版本,主要功能包括:
ü 基于容器的应用部署、维护和滚动升级;
ü 负载均衡和服务发现;
ü 跨机器和跨地区的集群调度;
ü 自动伸缩;
ü 无状态服务和有状态服务;
ü 插件机制保证扩展性。
Kubernetes用户可以通过编写一个yaml或者json格式的配置文件,也可以通过工具/代码生成或直接请求Kubernetes API创建应用,该配置文件中包含了用户想要应用程序保持的状态,不论整个Kubernetes集群中的个别主机发生什么问题,都不会影响应用程序的状态,你还可以通过改变该配置文件或请求Kubernetes API来改变应用程序的状态。
二、为什么基于Kubernetes构建DevOps平台?
作为生产运行容器的首选平台,Kubernetes是一个完备的分布式系统支持平台,支持多层安全防护、准入机制、多租户应用支撑、透明的服务注册、服务发现、内建负载均衡、强大的故障发现和自我修复机制、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力,完善的管理工具,包括开发、测试、部署、运维监控,一站式的完备的分布式系统开发和支撑平台。
VMware《2021年Kubernetes状态报告》显示,企业仍在持续进行Kubernetes建设并增加其在生产中的使用。
65%的受访者在生产中使用Kubernetes,这其中的78%来自大公司,这一数字在 2020年为59%,而2018年这个数字还不到三分之一。
Kubernetes 主要由以下几个核心组件组成:
² etcd 保存了整个集群的状态;
² apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
² controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
² scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;
² kubelet 负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理;
² Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI);
kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡;
除了核心组件,还有一些推荐的插件,其中有的已经成为 CNCF 中的托管项目:
² CoreDNS 负责为整个集群提供 DNS 服务
² Ingress Controller 为服务提供外网入口
² Prometheus 提供资源监控
² Dashboard 提供 GUI
² Federation 提供跨可用区的集群
三、如何基于K8s构建DevOps平台
1、构建思路
流水线构建 基于kubernetes构建完整的koca平台的产品流水线,
环境构建 基于Kubernetes及其生态构建完整的容器化的高可用运行环境。
面向用户 提供易用的用户平台,提供监控管理等功能。
过程支撑 使用Kubernetes构建Koca-studio和Koca-amo满足开发过程需求。
2、对策
代码开发与管理方面与之前相同,仍使用Github并接入单元测试及度量。
环境部署不再使用之前的方式,而是建企业级镜像仓库,容器化发布,自动化部署,实现全链路容器化
Koca-studio提供开发支持
Koca-AMO提供运维监控支持
![](file:///C:/Users/zhl/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg?lastModify=1680252442)
3、流水线构建
整个流水线中,除了公用的jira外,支持系统、开发环境、测试环境、发布制品到生产环境都基于K8S环境,发布制品Docker化发布,除了少数人工操作外,保证开发-测试-发布-运维整体全链路自动化。
光说不练假把式,光练不说真把式,连说带练全把式。
来,试试DevOps,试试k8s!