CN115629771B - 一种基于K3s的数据中台私有化部署方法及系统 - Google Patents

一种基于K3s的数据中台私有化部署方法及系统 Download PDF

Info

Publication number
CN115629771B
CN115629771B CN202211571229.1A CN202211571229A CN115629771B CN 115629771 B CN115629771 B CN 115629771B CN 202211571229 A CN202211571229 A CN 202211571229A CN 115629771 B CN115629771 B CN 115629771B
Authority
CN
China
Prior art keywords
service
offline
node
cluster
docker
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211571229.1A
Other languages
English (en)
Other versions
CN115629771A (zh
Inventor
夏赟
王乐珩
张金银
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Bizhi Technology Co ltd
Original Assignee
Hangzhou Bizhi Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Bizhi Technology Co ltd filed Critical Hangzhou Bizhi Technology Co ltd
Priority to CN202211571229.1A priority Critical patent/CN115629771B/zh
Publication of CN115629771A publication Critical patent/CN115629771A/zh
Application granted granted Critical
Publication of CN115629771B publication Critical patent/CN115629771B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于K3s的数据中台私有化部署方法及系统,所述方法包括以下步骤:S1.准备服务安装包,所述服务安装包包括K3s、java、中间件和大数据集群;S2.将Docker Registry镜像仓库部署在主服务节点;S3.上传服务离线镜像至Docker Registry镜像仓库;S4.通过K3s离线安装自动化脚本部署K3s集群;S5.通过大数据集群离线安装自动化脚本部署Hadoop大数据集群;S6.初始化JuiceFS;S7.在K3s中运行服务。本方法机系统具有封装部署便捷性好、轻量级、高可用性的特点,大大减少工程复杂度,且系统能够实时动态处理服务水平扩缩容。

Description

一种基于K3s的数据中台私有化部署方法及系统
技术领域
本发明涉及计算机及大数据处理技术领域,尤其是涉及一种基于K3s的数据中台私有化部署方法及系统。
背景技术
K3s是一种边缘计算工具,它满足了在边缘计算环境中运行在x86、ARM64和ARMv7处理器上的小型、易于管理的Kubernetes集群日益增长的需求。k3s提供的主要功能在于:k3s把在任何设备上安装Kubernetes所需的一切都包含在这一个40MB的二进制文件当中,只需要一个命令即可快速配置或者升级单节点的K3s集群。简单的向集群中添加任意节点:节点和服务器键的通信靠安全的token来实现。自动生成证书:集群启动时,在Kubernetes主服务器和节点之间建立TLS所需的所有证书都会被自动创建,还会自动创建服务账号的加密密钥。
在实现数据中台部署方法的时候,将Java微服务、中间件等服务运行在裸金属或公有云服务器上,将服务产生的数据文件存储在各自服务器上,同时以操作系统systemctl的方式对服务进行守护进程。
第一,数据中台服务的数据文件存储在各自服务器上存在局限性,在服务高可用或多实例的情况下,很难实现文件共享;第二,将服务运行在裸金属或公有云服务器上存在操作系统兼容问题,并且对系统环境有严格的依赖;第三,在服务弹性伸缩方面存在不足,无法及时方便的对服务进行伸缩容;最后,在数据中台私有化部署过程中,严重依赖运维实施人员的技术能力。
发明内容
针对现有技术存在的问题,本发明提供了一种基于K3s的数据中台私有化部署方法及系统,该方法及系统能够解决上述问题而且基于K3s的数据中台私有化部署方法具有封装部署便捷性好、轻量级、高可用性的特点,大大减少工程复杂度,且解决了服务弹性伸缩方面存在的不足,系统能够实时动态处理服务水平扩缩容。
为实现上述目的,本发明提供一种基于K3s的数据中台私有化部署方法,所述方法包括以下步骤:
S1. 准备服务安装包,所述服务安装包包括K3s、java、中间件和大数据集群;
S2. 将Docker Registry镜像仓库部署在主服务节点;在主服务节点以docker-compose的方式部署运行Docker Registry镜像仓库
S3.上传服务离线镜像至Docker Registry镜像仓库;
S4.在主服务节点自动安装K3s主服务,通过K3s离线安装自动化脚本部署K3s集群;
S5.通过大数据集群离线安装自动化脚本部署Hadoop大数据集群;并安装hadoop主服务,使用MySQL数据库作为元数据存储;
S6.初始化JuiceFS;其中MySQL作为JuiceFS的元数据、大数据集群HDFS存储作为JuiceFS数据存储;
S7.在K3s中运行服务,数据中台服务采用K3s HPA控制器执行动态扩缩容处理。
进一步,步骤S1中,在macos系统和linux系统中新建一个文件目录,数据中台java服务通过Dockerfile文件编译生成离线docker镜像包;K3s、中间件、Docker Registry和JuiceFS CSI驱动镜像生成离线docker镜像包;再将离线安装自动化脚本、服务配置文件、离线docker镜像包、大数据集群离线安装包放置在同一目录,最后通过执行tar -zcvfinstall.tar.gz * 的命令打包,将install.tar.gz包上传至主服务节点的/tmp目录下。
进一步,步骤S2中,解压install.tar.gz包,配置nodes.conf配置文件,执行离线安装自动化脚本。离线安装自动化脚本将读取里面的nodes.conf文件并解析文件内容,将Docker Registry离线镜像文件和Docker Registry离线安装自动化脚本传输至主服务节点,在主服务节点以docker-compose的方式部署运行Docker Registry镜像仓库;并通过ssh免密登陆其余主机,将Docker Registry镜像仓库IP地址记录到/etc/hosts。
进一步,步骤S3中,离线安装自动化脚本会自动解压当前离线镜像文件并加载到主机,最后将加载完的镜像上传到Docker Registry镜像仓库。
进一步,步骤S4中,离线安装自动化脚本识别nodes.conf文件参数k3s-master(k3s主服务节点),在主服务节点自动安装K3s主服务,获取K3s主服务的Token信息;通过ssh免密登陆K3s工作节点,并通过Token信息注册到K3s主服务,将工作节点加入到K3s集群。
进一步,步骤S5中,离线安装自动化脚本识别nodes.conf文件参数hadoop-server参数(hadoop主服务节点)将大数据集群离线安装包传输至hadoop大数据集群主节点并解压到/tmp目录,同时运行/tmp目录大数据离线安装包中的大数据集群离线安装自动化脚本。大数据集群离线安装自动化脚本在主节点自动安装大数据集群的本地repo源(repo源可使linux系统在离线环境下载安装包)和MySQL数据库,并安装hadoop主服务,使用MySQL数据库作为元数据存储。当安装完hadoop主服务后,用户可在浏览器hadoop主服务页面选择hadoop计算节点和存储节点安装。
进一步,步骤S6中,离线安装自动化脚本识别nodes.conf文件参数juicefs和hadoop-server,根据hadoop-server参数确认MySQL元数据地址和hadoop主服务地址进行初始化JuiceFS,并通过K3s离线安装自动化脚本识别JuiceFS Yaml配置文件,在K3s集群安装JuiceFS CSI驱动,生成PV/PVC存储卷。
进一步,步骤S7中,数据中台服务采用K3s HPA控制器执行动态扩缩容处理,水平方向增加或减少服务实例Pod的数量,K3s中的MetricsServer采集指标服务实时采集服务实例的指标数据,HPA 控制器通过 Metrics Server采集指标服务的API获取内存使用率、CPU使用率和服务请求数,基于扩缩容规则进行计算,得到目标服务实例副本数量,所述扩缩容策略步骤如下:
S100、实时获取内存使用率、CPU使用率和服务请求数的具体数值;
S200、依次判断内存使用率、CPU使用率和服务请求数的当前等级;
S300、根据依次判断的内存使用率、CPU使用率和服务请求数的当前等级确定最优目标服务实例副本数量;
S400、将当前副本数量与最优目标服务实例副本数量进行对比,若当前副本数量小于最优目标服务实例副本数量,则执行扩容处理;若当前副本数量大于最优目标服务实例副本数量,则执行缩容处理;使得当前副本数量与最优目标服务实例副本数量相同。
进一步,将所有服务和中间件按照步骤S7进行安装,将所有步骤串联,编进shell脚本中,实现自动化部署基于K3s的数据中台。
另一方面,本发明提供一种基于K3s的数据中台私有化部署系统,所述系统用于实现根据本发明所述的基于K3s的数据中台私有化部署方法。
本发明的有益效果在于:基于K3s的数据中台私有化部署方法,可通过JuiceFS和Hadoop HDFS持久化生成K3s持久化存储卷,实现服务多实例/高可用/弹性伸缩场景下的数据共享;通过Docker容器化技术,可避免私有化部署时系统环境不同造成的部署影响,并且系统能够实时动态处理服务水平扩缩容。
附图说明
图1示出了根据本发明实施例中基于K3s的数据中台私有化部署的基本系统架构图示意图;
图2示出了根据本发明实施例中基于K3s的数据中台私有化部署流程图;
图3示出了根据本发明实施例中基于K3s的数据中台私有化部署的数据流转示意图;
图4示出了根据本发明实施例中基于K3s的数据中台私有化部署初始化JuiceFS流程图;
图5示出了根据本发明实施例中基于K3s的数据中台私有化部署大数据集群部署流程图;
图6示出了根据本发明实施例中基于K3s的数据中台私有化部署服务弹性伸缩示意图。
具体实施方式
下面将结合附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
以下结合图1-图5对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
本发明的基于K3s的数据中台私有化部署方法及系统的基本构思在于部署DockerRegistry,Registry是一个存储和内容交付系统,其中维护着若干命名的Docker镜像。以Docker Registry为image镜像仓库提供服务的镜像存储能力,将K3s、java、中间件等服务的docker镜像存储到Docker Registry镜像仓库;部署K3s集群,基于K3s提供服务容器编排能力,使服务实现快速伸缩容和高可用;采用JuiceFS CSI驱动提供基于Hadoop HDFS的数据存储能力,使服务可以在K3s中持久化数据,快速共享数据文件。
如图2所示,基于K3s的数据中台私有化部署方法的基本流程为:
步骤S1,准备服务安装包,所述服务安装包包括K3s、java、中间件和大数据集群;
步骤S2,将Docker Registry镜像仓库部署在主服务节点;
步骤S3,上传服务离线镜像至Docker Registry镜像仓库;
步骤S4,通过K3s离线安装自动化脚本部署K3s集群;
步骤S5,通过大数据集群离线安装自动化脚本部署Hadoop大数据集群;
步骤S6,初始化JuiceFS;
步骤S7,在K3s中运行服务。
具体的在步骤S1中,K3s离线安装包主要包含K3s离线镜像文件、K3s离线安装自动化脚本,K3s离线镜像文件可通过K3s官网获得,可以通过K3s离线安装自动化脚本实现K3s集群离线安装部署。
数据中台服务离线安装包主要包含数据中台服务离线镜像文件、数据中台服务离线安装自动化脚本、数据中台服务Yaml配置文件。数据中台服务Yaml配置文件主要包含Deployment、Service、IngressRoute三种类型的配置,可以通过数据中台服务离线安装自动化脚本实现在K3s集群上部署运行数据中台服务。数据中台服务通过Dockerfile编译生成的docker离线镜像,需要提前准备docker离线镜像依赖的基础镜像和java运行环境。以rockylinux:8.6为基础系统镜像,jdk1.8为java运行环境,startdt为运行用户;编译docker离线镜像时,将数据中台服务jar复制进指定目录,如/opt目录下。将所有数据中台服务通过此方法编译生成docker离线镜像,镜像可运行在任何docker环境中,在k3s环境中更可以实现容器服务编排,可解决数据中台服务在不同操作系统兼容问题,以及对系统环境的严格依赖。
大数据集群离线安装包主要包含大数据集群离线rpm包、大数据集群离线安装自动化脚本,大数据集群离线rpm包通过Datakun官方渠道获得,可以通过大数据集群离线安装自动化脚本实现大数据集群离线部署。
中间件服务离线安装包主要包含如Docker Registry和JuiceFS CSI驱动等中间件的离线镜像文件、离线安装自动化脚本、Yaml配置文件。中间件服务离线镜像文件通过Docker Hub官网获得,可以通过离线安装自动化脚本实现中间件服务的离线部署。
整个离线安装包,通过key(键)=value(值)的形式定义了一种描述应用安装方式的配置文件,文件名为nodes.conf,离线安装自动化脚本识别可配置文件nodes.conf的参数变量来安装各服务。配置文件参见下面的代码:
registry_ip=镜像仓库地址,示例:127.0.0.1
K3S_MASTER_IP=k3s主服务节点地址,示例:127.0.0.1
k3S_AGENT_IP=k3s工作节点地址,示例:127.0.0.1
hadoop_server=hadoop主服务节点,示例:127.0.0.1
具体在步骤S2中,如图1所示的基于K3s的数据中台私有化部署的基本系统架构图,整个系统架构分成两部分,K3s集群-数据中台和hadoop大数据集群。K3s集群-数据中台分成主服务节点和工作节点两种节点类型,其中主服务节点主要运行K3s主服务、DockerRegistry镜像仓库、JuiceFS CSI驱动,K3s主服务跟K3s客户端服务进行TCP通信,组成K3s集群;工作节点主要运行K3s客户端服务、数据中台Java微服务、数据库、其余中间件,数据库主要存储数据中台Java微服务和JuiceFS的元数据。hadoop大数据集群分成主节点、计算节点、存储节点三种节点类型,其中主节点主要运行hadoop主服务,计算节点主要运行hadoop计算服务,存储节点主要运行hadoop存储服务,存储JuiceFS的数据。
中间件离线安装自动化脚本主要识别可配置文件nodes.conf的参数变量registry_ip(Docker Registry安装的目标节点IP地址)。Docker Registry离线安装自动化脚本运行,将Docker Registry离线镜像文件和Docker Registry离线安装自动化脚本传输至主服务节点;在主服务节点运行Docker Registry服务,并在主服务和工作节点记录registry_ip,使各节点识别Docker Registry镜像仓库地址,允许匿名请求推送docker镜像至Docker Registry镜像仓库。
具体在步骤S3中,执行中间件离线安装自动化脚本,执行参数为images,离线安装自动化脚本会自动检查当前主机是否可以通信Docker Registry镜像仓库,并自动解压加载K3s离线镜像文件、数据中台服务离线镜像文件、中间件离线镜像文件,最后通过for循环函数遍历当前镜像列表,逐个将镜像列表中的镜像推送至Docker Registry镜像仓库。
具体的在步骤S4中,执行K3s离线安装自动化脚本部署K3s集群,K3s离线安装自动化脚本主要识别可配置文件nodes.conf的参数变量K3S_MASTER_IP(K3s的主服务节点IP地址)和k3S_AGENT_IP(K3s的工作节点IP地址),K3s离线安装自动化脚本首先会执行K3s主服务安装函数,自动从Docker Registry镜像仓库下载K3s主服务镜像,并安装K3s主服务;K3s主服务安装结束后,K3s离线安装自动化脚本轮询K3s主服务是否正常,当K3s主服务正常状态后执行K3s客户端服务安装函数,通过ssh免密登陆K3s工作节点,自动从DockerRegistry镜像仓库下载K3s客户端服务镜像,安装K3s客户端服务;K3s客户端服务安装函数会获取K3s主服务节点IP地址和K3s Token信息,并通过Token信息注册到K3s主服务,将工作节点加入到K3s集群。K3s离线安装自动化脚本轮询K3s客户端服务是否正常,当K3s客户端服务状态正常后,K3s集群安装完成,数据中台Java微服务、JuiceFS CSI在K3s集群运行基本条件具备。
具体的在步骤S5中,如图5所示的基于K3s的数据中台私有化部署大数据集群部署流程图,包括以下子步骤:
S20. 安装本地repo源;
S21. 安装MySQL数据库;
S22. 安装hadoop主服务;
S23. 安装大数据集群客户端;
S24. 选择计算服务和存储服务;
大数据集群离线安装自动化脚本会识别nodes.conf文件hadoop_server参数(hadoop主服务节点),自动解压大数据集群离线rpm包,在主节点自动安装大数据集群的本地repo源和MySQL数据库。大数据集群本地repo源以nginx服务为访问代理层,nginx服务可以将TCP请求转发至本地repo源。在部署Hadoop大数据集群时,主服务、计算服务及存储服务会请求本地repo源下载npm安装包。部署MySQL数据库时,默认初始化Hadoop大数据集群的DB,指定Hadoop大数据集群元数据为MySQL。大数据集群离线安装自动化脚本通过shellwhile循环判断nginx、MySQL是否准备完成,当nginx、MySQL准备完成时,开始自动安装hadoop主服务;未完成时,则等待,直到nginx、MySQL准备完成。安装完hadoop主服务后,用户可在浏览器hadoop主服务页面输入hadoop大数据集群的所有节点,并将主服务节点的私钥填充在SSH私钥认证输入框,安装完大数据集群客户端后,在计算节点选择安装hadoop计算服务,在存储节点选择安装hadoop存储服务。安装完成后,Hadoop大数据集群可以提供JuiceFS的初始化安装条件,包含元数据存储MySQL、数据存储HDFS。
具体的在步骤S6中,如图4所示的基于K3s的数据中台私有化部署初始化JuiceFS流程图,包括以下子步骤:
S10. 初始化元数据和数据存储;
S11. 安装JuiceFS CSI驱动;
S12. 生成存储卷。
步骤S6会根据步骤S5中的MySQL和hadoop主服务地址来初始化JuiceFS,其中MySQL作为JuiceFS的元数据、大数据集群HDFS存储作为JuiceFS数据存储。JuiceFS初始化完成后,会在K3s集群安装JuiceFS CSI驱动,并生成JuiceFS 密钥(包含JuiceFS的元数据信息、数据存储信息以及JuicsFS文件系统名称),根据JuiceFS 密钥可以生成基于JuiceFSCSI驱动的K3s JuiceFS存储卷。
JuiceFS存储卷提供动态存储和静态存储两种存储方式,数据中台服务以静态存储的方式创建指定存储卷,供所有服务挂载;中间件服务以动态存储的方式请求JuiceFSCSI驱动,生成新JuiceFS CSI实例,以hash命名的方式创建一个随机存储卷,供中间件服务挂载。服务挂载存储卷的时候,可以设定只读或者读写两种权限,支持多实例同时挂载存储卷并读写存储卷里的文件,实现数据中台服务文件数据持久化的功能。
具体的在步骤S7中,数据中台服务离线安装自动化脚本会识别nodes.conf文件registry_ip参数(Docker Registry镜像仓库地址),并检查Docker Registry镜像仓库是否通信成功。当Docker Registry镜像仓库通信成功时,会读取数据中台服务Yaml配置文件目录,将目录下的数据中台服务Yaml配置文件全部生成运行在K3s集群。当DockerRegistry镜像仓库通信失败时,数据中台服务离线安装自动化脚本会返回通信失败信息给用户。
当数据中台服务需要数据持久化时,需要提前定义数据中台服务数据持久化目录,比如数据中台服务任务执行结果文件放置在/opt/task/log,K3s JuiceFS存储卷需要挂载在/opt/task/log。数据中台稳定运行时,数据中台服务以相同的环境2个k3s pod实例同时运行,主要服务类型为k3s的Deployment类型,replicas副本数为2。同一数据中台服务多个实例运行时,实例同时挂载K3s JuiceFS存储卷目录/opt/task/log;根据步骤S6初始化JuiceFS生成的存储卷,具备同时读写特性,当同一数据中台服务多个实例同时被用户请求执行数据任务时,实例会将数据任务执行日志结果同时写入/opt/task/log,并输出/opt/task/log的文件内容给用户,实现数据中台有状态服务的数据持久化、数据便捷共享;当多个实例的其中1个或多个出现运行异常时,特指java内存溢出等问题,异常实例可通过滚动更新的方式,产生新的实例,然后回收删除异常实例,避免出现裸金属服务器服务运行异常时无法感知、无法自动恢复的问题,实现数据中台服务的高可用。
数据中台服务采用K3s HPA控制器执行动态扩缩容处理,水平方向增加/减少服务实例Pod的数量,K3s中的MetricsServer采集指标服务会持续采集服务实例的指标数据,HPA 控制器通过 Metrics Server采集指标服务的API获取这些数据,基于用户定义的扩缩容规则进行计算,得到目标服务实例副本数量。当目标服务实例副本数量与当前副本数量不同时,HPA 控制器就向服务实例的副本控制器发起 scale扩缩容操作,然后副本控制器会调整服务实例的副本数量,完成扩缩容操作;为了实现最优扩缩容策略,本发明采用如下的策略步骤:
S100、实时获取内存使用率、CPU使用率和服务请求数的具体数值;
S200、依次判断内存使用率、CPU使用率和服务请求数的当前等级;
S300、根据依次判断的内存使用率、CPU使用率和服务请求数的当前等级确定最优目标服务实例副本数量;
S400、将当前副本数量与最优目标服务实例副本数量进行对比,若当前副本数量小于最优目标服务实例副本数量,则执行扩容处理;若当前副本数量大于最优目标服务实例副本数量,则执行缩容处理;使得当前副本数量与最优目标服务实例副本数量相同。
其中,步骤S300中,确定最优目标服务实例副本数量的流程如下:
S301、判断内存使用率的当前等级;根据不同等级择一执行S302A-S302D;
S302A、若内存使用率大于等于第一内存阈值,直接进行扩容操作,将服务的最优目标服务实例副本数量确定为最大值N;
S302B、若内存使用率小于第一内存阈值且大于等于第二内存阈值,判断CPU使用率的当前等级;包括:
当CPU使用率大于等于第一CPU阈值时,确定服务的最优目标服务实例副本数量为N-1;
当CPU使用率小于第一CPU阈值且大于第二CPU阈值时,确定服务的最优目标服务实例副本数量为N-2;
S302C、若内存使用率小于第二内存阈值且大于等于第三内存阈值,判断CPU使用率的当前等级;包括:
当CPU使用率大于等于第一CPU阈值时,确定服务的最优目标服务实例副本数量为N-2;
当CPU使用率小于第二CPU阈值时,确定服务的最优目标服务实例副本数量为N-3;
S302D、若内存使用率小于第三内存阈值,判断CPU使用率的当前等级;包括:(1)当CPU使用率小于第二CPU阈值时,判断服务请求数的当前等级;根据不同等级择一执行S303A-S303C;
S303A、当服务请求数小于第一服务请求阈值时,确定服务的最优目标服务实例副本数量为最小值M;
S303B、当服务请求数大于等于第一服务请求阈值且小于第二服务请求阈值时,确定服务的最优目标服务实例副本数量为M+1;
S303C、当服务请求数大于等于第二服务请求阈值时,确定服务的最优目标服务实例副本数量为M+2;
(2)当CPU使用率大于等于第二CPU阈值时,直接确定服务的最优目标服务实例副本数量为(M+N)/2(若不为整数,取最接近整数)。
其中,上述各步骤中:
第一内存阈值>第二内存阈值>第三内存阈值;优选第一内存阈值为90%,第二内存阈值80%,第三内存阈值50%;
第一CPU阈值>第二CPU阈值;优选第一CPU阈值为80%,第二内CPU阈值为50%;
第一服务请求阈值<第二服务请求阈值,优选第一服务请求阈值为1000,第二服务请求阈值为2000。
如图6所示的基于K3s的数据中台私有化部署服务弹性伸缩的一个优选实施例中,数据中台服务定义了1个HPA扩缩容规则:当K3s中的MetricsServer采集指标服务采集到数据中台服务内存使用率指标大于90%时,数据中台服务实例将触发HPA扩缩容规则,将服务的pod实例数scale扩容至最大的6个实例;MetricsServer采集指标服务持续采集数据中台服务指标,如果数据中台服务内存使用率指标还是大于等于80%,但是小于90%,MetricsServer采集指标服务会采集数据中台服务CPU使用率指标,如果服务CPU使用率指标大于等于80%,将服务的pod实例数scale扩缩容范围到[5,6];如果服务CPU使用率指标大于等于50%且小于80%,将服务的pod实例数scale扩缩容范围到[4,5];如果服务CPU使用率指标小于50%,将服务的pod实例数scale扩缩容到4个;直到内存使用率指标小于80%但是大于等于50%,HPA将根据服务的CPU使用率指标计算scale副本数:当服务CPU使用率指标大于等于80%,将服务的pod实例数scale扩缩容范围到[4,5];如果服务CPU使用率指标大于等于50%且小于80%,将服务的pod实例数scale扩缩容范围到[3,4];如果服务CPU使用率指标小于50%,将服务的pod实例数scale扩缩容到3个。直到内存使用率指标小于50%但是大于等于20%,HPA将根据服务的CPU使用率指标和服务请求数指标同时判断:如果CPU使用率指标大于等于50%,将服务的pod实例数scale扩缩容范围到[3,4];如果CPU使用率指标小于50%,将根据服务请求数指标进行scale副本数计算,当服务请求数指标大于等于2000时,将服务的pod实例数scale扩缩容至4个;当服务请求数指标大于等于1000且小于2000时,将服务的pod实例数scale扩缩容至3个;当服务请求数指标小于1000时,将服务的pod实例数scale扩缩容至2个。当服务内存使用率指标小于20%时,且服务请求数指标大于2000时,将服务的pod实例数scale扩缩容至3个;当服务内存使用率指标小于20%时,且服务请求数指标小于2000时,将服务的pod实例数scale扩缩容至2个。数据中台服务根据服务状态自动弹性伸缩,实现无人为干预,系统自动处理服务水平扩缩容。
数据中台服务在实现数据持久化、数据共享后,除了基于K3s HPA控制器的水平扩缩容,也可以通过手动在线扩缩容,只需将服务的replicas副本数调整至指定的数,K3s将自动生成同等数量的服务实例。
如图3所示的基于K3s的数据中台私有化部署的数据流转示意图,当用户访问数据中台服务任务执行结果时,部署在工作节点的Java微服务可以通过JuiceFS CSI驱动挂载的存储卷读写数据至hadoop大数据集群的存储节点,将数据结果返回呈现给用户。JuiceFSCSI驱动可以将实际数据文件转换成元数据和数据存储分别读写至数据库和hadoop大数据集群HDFS文件系统。JuiceFS在hadoop大数据集群HDFS文件系统中以树状结构存储数据,以chunks为总目录,0,1,2...N数字序列为子目录,分布式存储数据中台服务任务执行结果文件,保证数据的高可用性。
最终,只要将所有服务和中间件按照步骤7进行安装,一个基于K3s的数据中台就完成了私有化部署。将所有步骤串联,编进shell脚本中,就可以实现自动化部署基于K3s的数据中台。
主要优点:基于K3s的数据中台私有化部署方法,可通过JuiceFS和Hadoop HDFS持久化生成K3s持久化存储卷,实现服务多实例/高可用/弹性伸缩场景下的数据共享;通过Docker容器化技术,让用户打包应用服务及依赖包到一个可移植的容器中,使应用服务运行在一个稳定、规范、统一的容器环境,可避免私有化部署时系统环境不同造成的部署影响。
在本说明书的描述中,参考术语“实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,本领域的技术人员可以在不产生矛盾的情况下,将本说明书中描述的不同实施例或示例以及其中的特征进行结合或组合。
上述内容虽然已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型等更新操作。

Claims (7)

1.一种基于K3s的数据中台私有化部署方法,其特征在于,所述方法包括以下步骤:
S1. 准备服务安装包,所述服务安装包包括K3s、java、中间件和大数据集群;
S2. 将Docker Registry镜像仓库部署在主服务节点;在主服务节点以docker-compose的方式部署运行Docker Registry镜像仓库;
S3. 上传服务离线镜像至Docker Registry镜像仓库;
S4. 在主服务节点自动安装K3s主服务,通过K3s离线安装自动化脚本部署K3s集群;
S5. 通过大数据集群离线安装自动化脚本部署Hadoop大数据集群;并安装hadoop主服务,使用MySQL数据库作为元数据存储;
S6. 初始化JuiceFS;其中MySQL作为JuiceFS的元数据、大数据集群HDFS存储作为JuiceFS数据存储;
S7. 在K3s中运行服务,数据中台服务采用K3s HPA控制器执行动态扩缩容处理;
步骤S1中,在macos系统和linux系统中新建一个文件目录,数据中台java服务通过Dockerfile文件编译生成离线docker镜像包;K3s、中间件、Docker Registry和JuiceFSCSI驱动镜像生成离线docker镜像包;再将离线安装自动化脚本、服务配置文件、离线docker镜像包、大数据集群离线安装包放置在同一目录,最后通过执行tar -zcvfinstall.tar.gz * 的命令打包,将install.tar.gz包上传至主服务节点的/tmp目录下;
步骤S2中,解压install.tar.gz包,配置nodes.conf配置文件,执行离线安装自动化脚本;离线安装自动化脚本将读取里面的nodes.conf文件并解析文件内容,将DockerRegistry离线镜像文件和Docker Registry离线安装自动化脚本传输至主服务节点,在主服务节点以docker-compose的方式部署运行Docker Registry镜像仓库;并通过ssh免密登陆其余主机,将Docker Registry镜像仓库IP地址记录到/etc/hosts;
步骤S7中,数据中台服务采用K3s HPA控制器执行动态扩缩容处理,水平方向增加或减少服务实例Pod的数量,K3s中的MetricsServer采集指标服务实时采集服务实例的指标数据,HPA 控制器通过 Metrics Server采集指标服务的API获取内存使用率、CPU使用率和服务请求数,基于扩缩容规则进行计算,得到目标服务实例副本数量,所述扩缩容规则步骤如下:
S100、实时获取内存使用率、CPU使用率和服务请求数的具体数值;
S200、依次判断内存使用率、CPU使用率和服务请求数的当前等级;
S300、根据依次判断的内存使用率、CPU使用率和服务请求数的当前等级确定最优目标服务实例副本数量;
S400、将当前副本数量与最优目标服务实例副本数量进行对比,若当前副本数量小于最优目标服务实例副本数量,则执行扩容处理;若当前副本数量大于最优目标服务实例副本数量,则执行缩容处理;使得当前副本数量与最优目标服务实例副本数量相同。
2.根据权利要求1所述的基于K3s的数据中台私有化部署方法,其特征在于,步骤S3中,离线安装自动化脚本会自动解压当前离线镜像文件并加载到主机,最后将加载完的镜像上传到Docker Registry镜像仓库。
3.根据权利要求1所述的基于K3s的数据中台私有化部署方法,其特征在于,步骤S4中,离线安装自动化脚本识别nodes.conf文件参数k3s-master,在主服务节点自动安装K3s主服务,获取K3s主服务的Token信息;通过ssh免密登陆K3s工作节点,并通过Token信息注册到K3s主服务,将工作节点加入到K3s集群。
4.根据权利要求1所述的基于K3s的数据中台私有化部署方法,其特征在于,步骤S5中,离线安装自动化脚本识别nodes.conf文件参数hadoop-server参数将大数据集群离线安装包传输至hadoop大数据集群主节点并解压到/tmp目录,同时运行/tmp目录大数据离线安装包中的大数据集群离线安装自动化脚本;大数据集群离线安装自动化脚本在主节点自动安装大数据集群的本地repo源和MySQL数据库,并安装hadoop主服务,使用MySQL数据库作为元数据存储;当安装完hadoop主服务后,用户可在浏览器hadoop主服务页面选择hadoop计算节点和存储节点安装。
5.根据权利要求1所述的基于K3s的数据中台私有化部署方法,其特征在于,步骤S6中,离线安装自动化脚本识别nodes.conf文件参数juicefs和hadoop-server,根据hadoop-server参数确认MySQL元数据地址和hadoop主服务地址进行初始化JuiceFS,并通过K3s离线安装自动化脚本识别JuiceFS Yaml配置文件,在K3s集群安装JuiceFS CSI驱动,生成存储卷。
6.根据权利要求1所述的基于K3s的数据中台私有化部署方法,其特征在于,将所有服务和中间件按照步骤S7进行安装,将所有步骤串联,编进shell脚本中,实现自动化部署基于K3s的数据中台。
7.一种基于K3s的数据中台私有化部署系统,其特征在于,所述系统用于实现根据权利要求1-6任一项所述的基于K3s的数据中台私有化部署方法。
CN202211571229.1A 2022-12-08 2022-12-08 一种基于K3s的数据中台私有化部署方法及系统 Active CN115629771B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211571229.1A CN115629771B (zh) 2022-12-08 2022-12-08 一种基于K3s的数据中台私有化部署方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211571229.1A CN115629771B (zh) 2022-12-08 2022-12-08 一种基于K3s的数据中台私有化部署方法及系统

Publications (2)

Publication Number Publication Date
CN115629771A CN115629771A (zh) 2023-01-20
CN115629771B true CN115629771B (zh) 2023-03-21

Family

ID=84910348

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211571229.1A Active CN115629771B (zh) 2022-12-08 2022-12-08 一种基于K3s的数据中台私有化部署方法及系统

Country Status (1)

Country Link
CN (1) CN115629771B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110502244A (zh) * 2019-07-11 2019-11-26 新华三大数据技术有限公司 部署Kubernetes集群的方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114281352A (zh) * 2020-09-28 2022-04-05 京东方科技集团股份有限公司 服务部署方法及相关设备
CN112346752A (zh) * 2020-12-03 2021-02-09 江苏云坤信息科技有限公司 基于jenkins和K3S的软件环境快速部署方法
CN112988705B (zh) * 2021-03-08 2022-04-15 厦门靠谱云股份有限公司 一种可用于企业级生产的数据中台构建方法
CN115048060B (zh) * 2022-06-30 2023-06-23 北京百度网讯科技有限公司 一种存储管理方法、装置、电子设备及存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110502244A (zh) * 2019-07-11 2019-11-26 新华三大数据技术有限公司 部署Kubernetes集群的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
佚名.Kubernetes VS Docker.2021,全文. *

Also Published As

Publication number Publication date
CN115629771A (zh) 2023-01-20

Similar Documents

Publication Publication Date Title
US11922177B2 (en) Securely and reliably transferring startup script
US9525592B2 (en) Client/server network environment setup method and system
US9264296B2 (en) Continuous upgrading of computers in a load balanced environment
CA2891339C (en) Distributed caching cluster management
CN111026414B (zh) 一种基于kubernetes的HDP平台部署方法
CN109542862B (zh) 用于控制文件系统的挂载的方法、装置和系统
US11055108B2 (en) Network booting in a peer-to-peer environment using dynamic magnet links
CN114116909A (zh) 一种分布式云原生数据库管理方法和系统
CN111444157A (zh) 分布式文件系统及数据访问方法
CN110334079B (zh) 一种数据迁移方法及装置
CN115629771B (zh) 一种基于K3s的数据中台私有化部署方法及系统
EP3977707B1 (en) Hardware load balancer gateway on commodity switch hardware
US10880376B1 (en) Downloading chunks of an object from a storage service while chunks of the object are being uploaded
CN113268254A (zh) 一种集群系统安装方法、装置、电子设备及存储介质
CN113169997B (zh) 基于装置和网络状况提供可变大小的文件的方法、设备及存储介质
US11995450B2 (en) Cloud-based provisioning of UEFI-enabled systems
CN113301004A (zh) 数据处理方法、装置、通信方法和单网卡虚拟机
US20220342707A1 (en) Infrastructure for deploying a security information and event management application on a container platform
US11363113B1 (en) Dynamic micro-region formation for service provider network independent edge locations
US20220129281A1 (en) Sharing image installation image streams
Nocentino et al. Kubernetes architecture
US10824476B1 (en) Multi-homed computing instance processes
US11872497B1 (en) Customer-generated video game player matchmaking in a multi-tenant environment
US11888943B1 (en) Use of production traffic to load test a service
Das Distributed File Systems Implementation on an Edge Router using GlusterFS for Cloud Applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant