【工具链】基于K8s构建DevOps平台

为了解耦开发、测试、运维在应用生命周期各自的关注点,明晰责任和界限,紧密协作,我们基于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!