基于Kubernetes高校数据中心云平台设计
2023-09-25朱小亮
朱小亮
(浙江艺术职业学院,浙江 杭州 310053)
1 概述
高校云平台主要基于VMware虚拟化技术对服务器资源进行管理,采用虚拟资源方式实现应用系统的环境部署、资源管控、网络及存储管理等,解决数据中心资源的供给和高效利用问题,但该模式在应用部署和管理上面临诸多问题:虚拟机环境重复部署,中间件、数据库、Web 服务等安装时间长、资源利用率低、系统负载高、无法实现高并发等;应用的环境配置烦琐,系统部署方式无法适应日益复杂的信息化业务,应用服务迁移无法实现快速打包,尤其是复杂的环境部署、项目维护等问题。
针对当前数据中心管理中的痛点,业务系统不断增长、系统快速迭代升级、运维难度不断提高。为解决VMware 虚拟化业务系统在部署升级速度低、管理复杂等问题,需要改变传统的数据中心基础架构。马献等人[1]利用Kubernetes 集群搭建基于容器技术的分布式架构数据中心将其应用在数字医疗业务中;谢超群[2]基于Kubernetes 容器云设计了具体的部署方案建设校园数据中心;李绪亮[3]使用Docker 技术对高校数据中心进行容器化改造;文献[4-6]介绍了容器云技术在数据中心中的应用以及Kubernetes的资源编排和平台架构设计、功能实现等。
通过查阅文献资料,基于容器技术对不同行业的数据中心的改造或建设,实现应用的快速部署、升级迭代、高效运维等,有许多实践案例。本文基于开源容器编排系统设计了容器引擎的云平台,集成Docker 以及Kubernetes 编排技术,并使用Rancher 可视化全栈管理Kubernetes 集群,降低集群使用和管理难度,实现数据中心资源灵活管理、应用服务部署发布、日志监控、资源告警等,提升业务系统的稳定性,降低故障率,提高数据中心的运维效率。
2 相关技术介绍
2.1 Docker
Docker 是基于LXC 技术为应用程序提供资源和环境隔离的容器管理引擎,消除应用程序代码在不同运行环境下的差异,实现将应用程序从基础架构中分离,方便版本管理和应用的持续集成。相比虚拟机,Docker 消耗更少的资源,具有较强的可移植性,能够降低软件项目发布的成本。容器不需要维护自己的操作系统,直接构建在操作系统之上,降低了指令及硬件转换的损耗,启动速度更快。
对数据中心应用系统来说,通过Docker将应用程序的配置文件、依赖的运行环境等打包成镜像文件,推送到镜像仓库中进行版本管理,在任何支持Docker运行的机器上部署,消除各种复杂的环境配置,极大限度地提升运维效率。
2.2 Kubernetes
Docker 容器技术解决了应用程序的发布升级等问题,但系统依赖的资源环境需要编排系统进行管理。Kubernetes 作为Docker 容器的编排系统,提供跨主机的集群资源管理、服务发现、弹性伸缩等。Kubernetes 提供一个高效的调度平台,可以在物理机或者虚拟机上调度容器,实现自动化部署。其核心功能包括容器的调度、集群资源管理、容器状态的采集和监控等。
Kubernetes集群由Master节点、Node节点、Etcd集群组成。Master 节点负责集群运行和资源管理,Node节点为容器应用提供各类资源,Etcd存储记录集群状态信息。
Master 节点是集群的核心,由API server、scheduler、controller 等组件构成。API server 是集群的核心,所有组件均通过API server交互信息,由API server将集群资源、容器应用等状态持久化到Etcd 数据库;Controller是集群的控制中心,负责集群节点的资源状态、容器应用的健康状态检查、故障恢复等;Scheduler根据Kubernetes 资源调度算法选择合理的node 运行容器。
Etcd集群作为key-value存储系统,通过算法保证集群状态的一致性,并记录集群状态信息。
Node 节点负责容器应用运行,包括容器引擎、Kubelet、Kube-proxy 等组成。Kubelet 组件负责容器应用的生命周期管理,接受来自Master 节点的指令,定期报告容器的状态和资源的使用情况;Kube-proxy运行在每个Node节点,监听容器服务变化,实现容器实例的负载均衡。
3 云平台架构设计
3.1 云平台需求分析
数据中心VMware虚拟化平台解决了资源配置和虚拟机的管理,但面向应用服务的部署及运维效率较低,部署周期长、高并发服务负载不能自适应变化,比如教务系统、线上直播课堂等系统,在业务流量激增的情况下出现系统卡顿,甚至导致宕机。在对传统数据中心改造过程中,采用Docker 容器引擎,结合Kubernetes容器资源编排实现数据中心的高效资源利用和服务的高可用等。结合实际功能需求,主要实现以下目标:
首先,应用部署层面,能够实现应用服务快速部署需求。着力打造高效、高可用的容器化应用,实现镜像管理、环境配置、资源分配,并在系统的后期的升级迭代、持续集成减少复杂配置灵活高效部署等。
其次,对数据中心运维人员来说,主要是保证应用安全可靠运行、资源的统一管理、平台的自动化监控告警、故障快速恢复等。
最后,云平台高可用设计保证数据中心业务系统可靠运行,平台自身的稳定性关键,基于Kubernetes云平台架构设计需具备高可用,同时要易维护、易操作、易部署,为数据中心系统应用提供计算、存储、网络等可靠基础资源。
3.2 云平台架构设计
通过对数据中心需求的分析,容器云平台的总体架构基于容器引擎,开源容器云编排系统Kubernetes及其开放Restful API接口便于数据中心系统的集成。
云平台架构主要包括基础层设施层、平台层、业务应用层,具体架构如图1所示。
图1 云平台架构设计图
基础设施层包含物理服务器、虚拟机公有云等,为云平台提供计算、网络、存储等资源。目前数据中心基于VMware虚拟化,通过vsphere 管理各种资源。
平台层核心功能包括Kubernetes集群的用户认证操作、集群节点的管理,包括基础设施资源、容器应用等,系统持续集成构建、部署、运维;业务系统环境及数据库中间件、镜像仓库的管理、数据存储集群、微服务网格管理istio等。
业务应用层接口层:提供平台层的Restful API 接口方便第三方集成对接、运维监控告警平台、自动化部署工具、Kubernetes 可视化服务管理、日志管理、数据分析等。
4 云平台部署设计
容器云平台为满足应用的部署管理及数据中心的自动化运维。基础设施层基于VMware虚拟化提供可靠资源,Kubernetes 集群部署主要有Maser 节点、Node 节点、Etcd 集群、自动化运维平台、服务暴露Istio-ingress等。云平台组件部署架构图2所示。
图2 云平台部署设计图
1) 节点高可用
Master 节点部署核心组件API server、controller、schedule、容器引擎等,集群的核心入口使用HAProxy、keepalive负载均衡技术保证其高可用。
Node 节点部署容器引擎、kubelet、kube-proxy 组件,节点的数量可以随着应用的增多而增加。容器应用之间的互通使用VXLAN的flannel实现跨node节点的主机通信。
Etcd 集群基于Raft 算法保证分布式系统的一致性,数量选择奇数,独立于Kubernetes 集群,方便数据中心其他系统使用和数据库的扩展。
2) 服务暴露
集群外部要访问容器服务,通过ingress反向代理的方式将容器服务暴露给外部网络,选择开源组件Istio-ingress 监听Kubernetes 集群内部service 服务的变动,实现自动服务发现和注册。
3) 自动化运维平台
数据中心现有虚拟化平台VMware的资源监控使用Zabbix 实现主机自动发现、资源采集、监控报警功能;自动化部署平台基于ansible 配置脚本、批量环境部署;日志监控部署ELK 体系,容器日志的采集以daemonset 在每台Node 节点部署filebeat 容器;资源可视化Grafana 收集来自容器监控Prometheus 和Zabbix的数据进行展示。
4) 镜像仓库
数据中心私有镜像仓库存放各类应用镜像,基于harbor LDAP 集成校内认证账户;应用系统镜像由开发人员将镜像文件push到数据中心仓库中,运维人员从私有仓库中下载应用镜像部署在Kubernetes 集群;harbor 提供可用界面,restful api 接口方便自动化运维平台之间的对接。
5) 集群可视化
Kubernetes 集群提供简单的dashboard页面,但功能较少,数据中心使用Rancher 图形化管理集群。Rancher 可以为集群和资源提供监控和告警,平台集成应用商店,可以一键式安装部署容器应用。除了Kubernetes基本功能,平台提供了镜像仓库管理、应用负载管理、持续集成管理、日志管理等,降低了使用Kubernetes的难度。
5 云平台实施效果
5.1 节点资源状态
Kubernetes 集群使用Rancher 实现全栈管理,通过Rancher 可视化页面,可以直观浏览集群所有节点的活动状态、节点信息、主机负载等。在每一个Node节点详情页,可以查看CPU、内存、pod 等资源状态。图3 为云平台集群物理主机列表,图4 为主机节点的资源详情。
图3 主机列表
图4 主机资源详情
5.2 应用部署
应用系统的部署基于harbor 仓库的镜像文件,在集群中部署相应的应用容器。在部署容器应用过程中可以基于Kubernetes 原生API 接口,通过命令行的方式操作,也可以在rancher管理平台上部署。部署过程中,设置容器的运行环境变量、健康检查探针、动态伸缩策略等。通过对应用容器的健康检查,判断容器的异常状态。需要持久化的应用要配置容器的存储卷,保存应用数据。图5为应用部署详情。
图5 应用部署详情
5.3 应用高并发
数据中心建设容器云集群的主要目标是在高并发负载下应用的自动扩容,尤其对于教学系统的选课阶段。容器应用一旦检测到高并发,服务不可用,Pod状态变为unavailable 时,如图6 所示,会增加实例数量,启动新的实例,状态标记为ContainerCreating,如图7 所示,Pod 实例启动完成后,变为running 状态,以保证服务的可靠运行。在资源负载降低后,集群自动回收资源,减少容器实例的数量,增加的容器状态为removing。高并发情况下实施资源扩容和动态增加应用实例,在资源空闲时进行回收达到动态负载均衡。
图6 高负载时增加实例
图7 低负载时回收实例
图8 Grafana 资源监控
5.4 资源监控
基于Grafana 可视化实现集群资源的效果展示,收集来自Zabbix采集的VMware虚拟化平台的物理主机、虚拟机资源等,运行容器集群的资源由Prometheus采集并在Grafana配置报警监控。
6 结束语
容器技术以其轻量级、开箱即用、快速部署等特性受到广泛关注,容器集装箱的特性使应用系统及其依赖的运行环境达到开箱即用的效果。本文设计的基于容器技术的数据中心云平台解决了复杂的环境配置、资源利用率低等问题,大大简化了应用部署、降低运维故障率、提升了系统资源及日志的监控能力等。容器云平台满足数据中心应用发布部署、资源监控等运维目标。随着应用系统不断增多,微服务数量增长较快,对微服务的管理、数据的持久化、Kubernetes性能优化等问题需进一步探究。