转载

智能工厂的容器云实践

分享人介绍:覃璐,中铝视拓智能科技有限公司PaaS平台架构师,负责公司PaaS平台的整体架构。

分享摘要:随着国家对智能制造的大力推进,传统工业领域也在加快信息化转型。中铝视拓致力于有色金属领域的工业互联网平台的研发。本次分享,和大家一起讨论在传统工业领域中,基于Kubernetes的容器云如何帮助企业提高信息化效率。

主要内容:

* 一般工厂的信息化现状

* 基于Ansible的K8S离线部署方案

* DevOps实践

* 面向业务人员的开发运维平台

大家好,我是中铝视拓的PaaS平台架构师覃璐,今天和大家分享一下,我们在传统工业领域中,如何通过基于Kubernetes容器云,来帮助企业提高研发效率,降低运维成本。

现状

中铝是一家从事有色金属领域相关的企业,主要从事矿产资源开发、有色金属冶炼加工、相关贸易及工程技术服务等。除了本身工业领域的相关技术以外,也需要信息化系统的辅助。典型的场景就是工厂的生产管控系统和计量系统。

不同的工厂规模不一样,导致在信息化投入的力度上也不一样,所以现场的IT 资产的情况也不一样。有的工厂盈利不错,信息化水平会相对高一些,有独立的机房,有IaaS 相关的基础设施,有较为完善的IT 系统,有的工厂盈利不行,信息化水平就低一些,可能就只有老旧的几台低配服务器来运行所有的IT系统,系统也是比较传统的C/S 的.NET 应用。

一般工厂基于安全考虑,机房不会直接和互联网通信,因此主流的在线安装的形式不适合现场的情况。针对这种情况,我们基于Ansible 开发了一整套的全容器化离线安装工具,并以此为基础,提供了版本的概念,规范部署和升级。K8S的基础概念之前的很多分享都已经提到了,我就不再赘述。我更多的是分享一下,我们在易用性上所作的一些工作。

Ansible 部署

基于Ansible 的部署这个本身没有太多别的东西,就是按照Ansible 的规范,把K8S相应的组件分门别类的放好。在技术选型上,我们也基本是跟着主流走,这个看Ansible 的role 就能看出来。网络组件采用的是calico,日志体系采用的是典型的ELK,监控体系采用的是Prometheus,分布式存储采用的是Gluster。

智能工厂的容器云实践

在Kubernetes的版本上,我们经历了1.8,1.10,1.14 三个大版本,目前是使用的1.14.0版本。主要看中CSI 1.0和Windows 节点的能力。

在整体的部署上,采用全容器化的离线部署方式,这样能极大的降低部署过程中的复杂度,也方便日后的升级。对于一个典型的组网结构来说,我们采用3个管理节点和3个存储节点,计算节点则根据实际需求去进行分配。当然也有一些极端场景下,只提供3台甚至是只有1台虚拟机,脚本本身也是适配的,不需要做额外的改动。

面向业务人员的开发运维平台

这里主要介绍一下gpass 这个模块。

* cs-cloud,开发运维平台

* elk,日志体系,采集平台所有的日志,包括业务容器、平台容器、节点产生的日志

* monitor,监控体系,根据Prometheus 采集的度量数据,进行监控和告警

cs-cloud 是我们封装的面向开发人员和工厂信息科工作人员的开发运维平台,主要分三个模块

* auth,用户体系模块

* ccapi,后端服务模块

* dashboard,前端服务模块

我们主要做了这些工作:

* 封装了K8S 的Java SDK,方便开发

* 整合了平台所使用的各种组件,提供统一的访问UI

* 屏蔽了部分K8S 的底层概念,方便开发人员理解

通过使用我们提供的平台,开发人员可以很方便的部署出自己开发的服务,不需要了解底层的技术细节。

智能工厂的容器云实践

左上方是环境选择菜单,用户登录之后,只会看到和自己相关的环境,这个就是对标的namespace。

右上方是当前环境下的一些公共内容,这里比K8S多出来的就是应用商店。

对于用户来说,他主要关心自己部署的服务。平台中的服务是K8S 中多个概念的综合体,包含了deployment、service等概念。我们增加了一个服务组的逻辑概念,来方便用于对关联度较高的服务进行分组,方便展示和查看。

在部署一个新的服务的时候,我们提供了一个综合性的标签页,在大部分情况下,能够满足部署一个新服务所需的功能。这样用户不需要去关心K8S底层的那些概念,更多的是关心服务本身,降低了上手难度。

智能工厂的容器云实践

智能工厂的容器云实践

对于之前提到的应用商店,是我们对一些使用频率较高的公共服务做的一些封装,尤其是一些配置项较多,或者有相互关联的服务,方便部署。主要涉及的是Spring Cloud相关的服务。

智能工厂的容器云实践

因为一些遗留原因,部分服务会使用到Spring Cloud作为微服务框架进行开发。所以我们提供了一个全套的Spring Cloud应用,包括config、zuul、oauth2、eureka、hystrix dashboard,一键部署出整套环境。

DevOps 实践

为了方便管理代码到部署的整个生命周期,我们基于Jenkins 构建了整个DevOps 流水线。

在构建方式上,没有采用传统的每个项目单独构建的形式,而是根据项目类型的不同,通过一个公共项目进行构建。

以Java 类型为例

智能工厂的容器云实践

项目根据实际情况填写参数就可以了,当然为了简化,也可以直接克隆一份,把参数固化。

智能工厂的容器云实践

质量分析目前是采用的SonarQube,除了对每次的构建进行分析,我们还专门对每次代码提交进行了自动触发质量分析,只要项目提交了代码,GitLab 就会通过webhook 通知Jenkins,对项目进行代码质量分析,并将分析结果通知给项目开发人员。

智能工厂的容器云实践

截止到目前是已经分析了8108次,质量部门会根据这个分析结果,对项目质量提出一些要求,从一定程度上提高项目代码质量。

最后,看一下我们最新上线的一个智能工厂案例,采用的是3个管理节点,3个存储节点,10个计算节点的配置。

这是节点的情况。

智能工厂的容器云实践

这是其中部分服务的部署情况。

智能工厂的容器云实践

智能工厂的容器云实践

智能工厂的容器云实践

原文  http://dockone.io/article/9014
正文到此结束
Loading...