CN116301932B - 一种kubernetes环境下大型项目的快速部署方法 - Google Patents
一种kubernetes环境下大型项目的快速部署方法 Download PDFInfo
- Publication number
- CN116301932B CN116301932B CN202211651367.0A CN202211651367A CN116301932B CN 116301932 B CN116301932 B CN 116301932B CN 202211651367 A CN202211651367 A CN 202211651367A CN 116301932 B CN116301932 B CN 116301932B
- Authority
- CN
- China
- Prior art keywords
- project
- kubernetes
- service instance
- mirror image
- service
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- Y—GENERAL 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
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S10/00—Systems supporting electrical power generation, transmission or distribution
- Y04S10/50—Systems or methods supporting the power network operation or management, involving a certain degree of interaction with the load-side end user applications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种kubernetes环境下大型项目的快速部署方法,包括如下步骤:根据项目实际使用场景,制作与项目文件分离的项目基础镜像并上传至镜像仓库;在kubernetes集群中创建项目文件存储PV和服务实例使用的存储声明PVC;在kubernetes集群中创建项目发布管理控制器,若本次部署为首次部署。本发明在大型项目上线流程中,通过分离基础镜像和项目文件,并通过项目文件集中管理的方式,使线上服务实例当前使用的项目文件被快速更新,显著提高了大型项目的业务上线和回滚时间,大幅度节省了大型项目服务实例的***资源占用空间,提高了服务实例重新部署过程中的镜像拉取时间。
Description
技术领域
本发明涉及云原生技术领域,具体来说,涉及一种kubernetes环境下大型项目的快速部署方法。
背景技术
随着云原生技术的普及,越来越多的公司选择放弃将服务部署在传统的多台物理主机上的模式,进而转向将应用服务实例打包成镜像并使用kubernetes进行部署,以便提高***资源利用率以及降低项目管理难度。但是由于很多公司现有的业务比较复杂,镜像中包含的项目文件太大,导致需要上线时,存在上线过程慢、业务影响大等问题。
当前,云原生环境中,项目开发完成后,上线部署普遍采用以下两种方式:
方式一: 将项目依赖的基础镜像和本次新增的项目文件一起,打包成新的镜像文件,上传到镜像仓库,在kubernetes环境中执行拉取新镜像进行应用更新。
方式二:重新部署一套新的服务实例,部署完成后,配置负载均衡,将请求路由到新的服务实例,最后再清除旧版本的服务实例。
上述方式一,由于需要使用基础镜像和项目文件重新生成新镜像,存在镜像过大,kubernetes中pod的调度时间变长,线上业务切换过程中拉取镜像时间过长问题,以及因为每个服务实例都包含一份项目文件,而在大型项目中,这往往很容易造成***磁盘浪费。
上述方式二,因为部署新服务实例时,原有服务实例不会发生任何变动,但是需要消耗原有服务至少一倍的***资源(CPU、内存、磁盘等),在有些kubernetes集群资源紧张的场景下,kubernetes申请不到pod调度所需资源,造成该上线过程很难完成。
可见,上述两种常用应用上线方案,都普遍存在:
1.项目更新每次都需要重新构建和上传镜像,项目上线周期长;
2.消耗太多集群公共资源,影响集群内其他服务实例运行;
3.以及大型项目上线以及版本回退时间过长,服务能力抖动严重,对线上业务影响过大。
针对上述问题,目前还没有有效的解决办法。
发明内容
针对相关技术中的上述技术问题,本发明提出一种kubernetes环境下大型项目的快速部署方法,能够克服现有技术的上述不足。
为实现上述技术目的,本发明的技术方案是这样实现的:
一种kubernetes环境下大型项目的快速部署方法,包括如下步骤:
S1 根据项目实际使用场景,制作与项目文件分离的项目基础镜像并上传至镜像仓库;
S2 在kubernetes集群中创建项目文件存储PV和服务实例使用的存储声明PVC;
S3在kubernetes集群中创建项目发布管理控制器,若本次部署为首次部署,执行步骤S4,否则执行步骤S5;
S4首次部署时,将当前项目的所有版本的项目文件通过存储声明PVC挂载到项目发布控制器进行集中管理,通过项目发布控制器将当前需要使用的项目文件目录创一个软连接,通过PVC挂载到具体的服务实例,供实际运行的服务实例读取当前版本的项目文件,项目上线完成;
S5非首次部署时,当前kubernetes集群中已经有运行的服务实例,新项目文件上传完成后,通过项目发布控制器修改需要使用的项目文件所在位置的软连接,完成服务实例当前使用的项目文件的更新,项目上线完成。
进一步地,S2中存储PV用来存储大型项目的业务代码。
进一步地,S2中存储PV与存储声明PVC相对应。
进一步地,S3中所述项目发布管理控制器用于管理服务实例依赖的项目文件,包括新项目文件的上传、当前使用项目文件目录的实际指向的变更。
进一步地,所述变更包括上线和回滚。
本发明的有益效果:本发明在大型项目上线流程中,通过分离基础镜像和项目文件,并通过项目文件集中管理的方式,使线上服务实例当前使用的项目文件被快速更新,显著提高了大型项目的业务上线和回滚时间,大幅度节省了大型项目服务实例的***资源占用空间,提高了服务实例重新部署过程中的镜像拉取时间。新老版本切换的时间周期缩短,上线流程简化,减少了业务感知。特别适合kubernetes环境中,资源紧张、项目文件大的无状态业务的部署,实现业务的快速上线和回滚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例所述的kubernetes环境下大型项目的快速部署方法的首次上线流程示意图;
图2是根据本发明实施例所述的kubernetes环境下大型项目的快速部署方法的日常更新流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
如图1-2所示,根据本发明实施例所述的一种kubernetes环境下大型项目的快速部署方法,包括如下步骤:
1. 根据项目实际使用场景,制作可与项目文件分离的项目基础镜像并上传到镜像仓库;
2. 在kubernetes集群中创建项目文件存储PV和服务实例使用的PVC;
3. 在kubernetes集群中创建项目发布管理控制器,用于管理服务实例依赖的项目文件,包含新项目文件的上传、当前使用项目文件目录的实际指向的变更(上线或回滚);
4.上述步骤3,若是首次部署服务,需要将当前项目的所有版本的项目文件通过PVC挂载到项目发布控制器进行集中管理,通过项目发布控制器将当前需要使用的项目文件目录创一个软连接,通过PVC挂载到具体的服务实例,供实际运行的服务实例读取当前版本的项目文件;
5.上述步骤3,若非首次部署服务,即当前kubernetes集群中已经有运行的服务实例,则新项目文件上传完成后,通过项目发布控制器修改需要使用的项目文件所在位置的软连接,即可完成服务实例当前使用的项目文件的更新,达到项目快速更新的目的(上线或回滚);
6. 到此为止,项目上线步骤已经完成。
缩略语和关键术语定义:
Kubernetes:一种容器管理***;
PV:Persistent Volumes(kubernetes持久化存储);
PVC:Persistent Volumes Claim(kubernetes持久化存储声明);
为了方便理解本发明的上述技术方案,以下通过具体使用方式上对本发明的上述技术方案进行详细说明。
在具体使用时,根据本发明所述的一种kubernetes环境下大型项目的快速部署方法,具体实施例描述如下:
步骤1:在kubernetes内创建PV,用来存储大型项目的业务代码。
备注:这里应该根据业务场景考虑,分配尽可能大的存储空间,保存最近多个版本的业务代码,以便需要时可以随时进行回滚,不需要上传旧版本的代码。通常建议设置为项目文件大小的5倍及以上。
步骤2:在kubernetes中创建上述PV对应的PVC。
步骤3:在kubernetes中创建项目发布管理控制器,这里需要将上述步骤的PVC挂载到项目发布管理控制器对应的应用pod内。
步骤4:使用项目发布管理控制器,将业务代码上传到存储PV内,并且创建对应的软连接。
到此,已经将项目文件存储和管理服务配置完成,接下来进行项目的实际上线。步骤4 基于实际的业务场景,将一些除项目文件之外的固定不变的内容打包到基础镜像内,并上传到镜像仓库。
步骤5:使用上述步骤4创建的基础镜像创建kubernetes的应用,其中需要使用步骤2创建的PVC将项目文件挂载到对应的应用pod内,同一应用的多个实例启动成功后即可共享的访问同一份项目文件。
步骤6:后期项目更新上线过程中,只需要执行步骤4进行新代码上传、软连接切换,即可实现项目文件的快速更新。
综上所述,借助于本发明的上述技术方案,在大型项目上线流程中,通过分离基础镜像和项目文件,并通过项目文件集中管理的方式,使线上服务实例当前使用的项目文件被快速更新,显著提高了大型项目的业务上线和回滚时间,大幅度节省了大型项目服务实例的***资源占用空间,提高了服务实例重新部署过程中的镜像拉取时间。新老版本切换的时间周期缩短,上线流程简化,减少了业务感知。特别适合kubernetes环境中,资源紧张、项目文件大的无状态业务的部署,实现业务的快速上线和回滚。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种kubernetes环境下大型项目的快速部署方法,其特征在于,包括如下步骤:
S1 根据项目实际使用场景,制作与项目文件分离的项目基础镜像并上传至镜像仓库;
S2 在kubernetes集群中创建项目文件存储PV和服务实例使用的存储声明PVC;
S3在kubernetes集群中创建项目发布管理控制器,若本次部署为首次部署,执行步骤S4,否则执行步骤S5;
S4首次部署时,将当前项目的所有版本的项目文件通过存储声明PVC挂载到项目发布控制器进行集中管理,通过项目发布控制器将当前需要使用的项目文件目录创建一个软连接,通过PVC挂载到具体的服务实例,供实际运行的服务实例读取当前版本的项目文件,项目上线完成;
非首次部署时,当前kubernetes集群中已经有运行的服务实例,新项目文件上传完成后,通过项目发布控制器修改需要使用的项目文件所在位置的软连接,完成服务实例当前使用的项目文件的更新,项目上线完成;
所述项目上线完成包括如下步骤:
S41基于实际的业务场景,将除项目文件之外的固定不变的内容打包到基础镜像内,并上传到镜像仓库;
S42使用上述步骤S41创建的基础镜像创建kubernetes的应用,其中需要使用创建的PVC将项目文件挂载到对应的应用pod内,同一应用的多个实例启动成功后即可共享的访问同一份项目文件。
2.根据权利要求1所述的kubernetes环境下大型项目的快速部署方法,其特征在于,S2中存储PV用来存储大型项目的业务代码。
3.根据权利要求1所述的kubernetes环境下大型项目的快速部署方法,其特征在于,S2中存储PV与存储声明PVC相对应。
4.根据权利要求1所述的kubernetes环境下大型项目的快速部署方法,其特征在于,S3中所述项目发布管理控制器用于管理服务实例依赖的项目文件,包括新项目文件的上传、当前使用项目文件目录的实际指向的变更。
5.根据权利要求4所述的kubernetes环境下大型项目的快速部署方法,其特征在于,所述变更包括上线和回滚。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211651367.0A CN116301932B (zh) | 2022-12-21 | 2022-12-21 | 一种kubernetes环境下大型项目的快速部署方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211651367.0A CN116301932B (zh) | 2022-12-21 | 2022-12-21 | 一种kubernetes环境下大型项目的快速部署方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116301932A CN116301932A (zh) | 2023-06-23 |
CN116301932B true CN116301932B (zh) | 2023-09-29 |
Family
ID=86827571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211651367.0A Active CN116301932B (zh) | 2022-12-21 | 2022-12-21 | 一种kubernetes环境下大型项目的快速部署方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116301932B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813379A (zh) * | 2019-04-11 | 2020-10-23 | 阿里巴巴集团控股有限公司 | 应用部署方法及装置、电子设备、计算机可读存储介质 |
CN111930465A (zh) * | 2020-05-28 | 2020-11-13 | 武汉达梦数据库有限公司 | 一种基于Kubernetes的达梦主从集群部署方法和装置 |
CN112995267A (zh) * | 2019-12-16 | 2021-06-18 | 中科星图股份有限公司 | 一种基于Kubernetes集群的数据订阅服务方法和设备 |
CN113312074A (zh) * | 2021-06-16 | 2021-08-27 | 上海驻云信息科技有限公司 | 一种基于Kubernetes的软件部署方法 |
US11194483B1 (en) * | 2020-06-05 | 2021-12-07 | Vmware, Inc. | Enriching a storage provider with container orchestrator metadata in a virtualized computing system |
CN115292026A (zh) * | 2022-10-10 | 2022-11-04 | 济南浪潮数据技术有限公司 | 容器集群的管理方法、装置、设备及计算机可读存储介质 |
CN115437653A (zh) * | 2022-07-14 | 2022-12-06 | 海纳致远数字科技(上海)有限公司 | 一种利用容器技术私有化部署的方法 |
-
2022
- 2022-12-21 CN CN202211651367.0A patent/CN116301932B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813379A (zh) * | 2019-04-11 | 2020-10-23 | 阿里巴巴集团控股有限公司 | 应用部署方法及装置、电子设备、计算机可读存储介质 |
CN112995267A (zh) * | 2019-12-16 | 2021-06-18 | 中科星图股份有限公司 | 一种基于Kubernetes集群的数据订阅服务方法和设备 |
CN111930465A (zh) * | 2020-05-28 | 2020-11-13 | 武汉达梦数据库有限公司 | 一种基于Kubernetes的达梦主从集群部署方法和装置 |
US11194483B1 (en) * | 2020-06-05 | 2021-12-07 | Vmware, Inc. | Enriching a storage provider with container orchestrator metadata in a virtualized computing system |
CN113312074A (zh) * | 2021-06-16 | 2021-08-27 | 上海驻云信息科技有限公司 | 一种基于Kubernetes的软件部署方法 |
CN115437653A (zh) * | 2022-07-14 | 2022-12-06 | 海纳致远数字科技(上海)有限公司 | 一种利用容器技术私有化部署的方法 |
CN115292026A (zh) * | 2022-10-10 | 2022-11-04 | 济南浪潮数据技术有限公司 | 容器集群的管理方法、装置、设备及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
"A Kubernetes controller for managing the availability of elastic microservice based stateful applications";Leila Abdollahi Vayghan 等;《Journal of Systems and Software》;第175卷;第1-6页 * |
"基于Kubernetes容器云的应用研究";谢超群;《西安文理学院学报(自然科学版)》;第37-40页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116301932A (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108667904B (zh) | 一种Docker容器远程内存卷管理方法和*** | |
CN111338854B (zh) | 基于Kubernetes集群快速恢复数据的方法及*** | |
CN110442430B (zh) | 一种基于分布式存储容器云应用的发布方法 | |
CN104156216A (zh) | 一种面向云计算的异构存储管理***及方法 | |
CN110377580B (zh) | 一种数据迁移方法、装置及设备 | |
CN113067850B (zh) | 一种多云场景下的集群编排*** | |
CN102594852A (zh) | 数据访问方法、节点及*** | |
CN105389186A (zh) | 一种Java应用的热部署方法及*** | |
US20210103554A1 (en) | Rolling Back Kubernetes Applications Including Custom Resources | |
CN102880658A (zh) | 基于地震数据处理的分布式文件管理*** | |
CN102571940A (zh) | 应用程序远程安装***、方法、智能终端、应用服务器 | |
CN102681917A (zh) | 一种操作***及其修复方法 | |
CN112463290A (zh) | 动态调整计算容器的数量的方法、***、装置和存储介质 | |
CN115517009B (zh) | 集群管理方法、集群管理装置、存储介质与电子设备 | |
CN114489761B (zh) | 一种基于容器集群的服务集成和应用集成方法 | |
CN107003880B (zh) | 内核更新方法和装置、计算机设备 | |
CN109710297B (zh) | 一种设备整体或分模块进行升级和回退方法 | |
CN116301932B (zh) | 一种kubernetes环境下大型项目的快速部署方法 | |
US20240134526A1 (en) | Virtual container storage interface controller | |
US20240211157A1 (en) | Automatic data mover selection in information processing system environment | |
WO2016188200A1 (zh) | 一种实现分区切换的方法及装置 | |
US9875120B2 (en) | Virtualized components in computing systems | |
CN111488322B (zh) | 文件***服务方法、装置以及服务端设备 | |
CN103942120A (zh) | 一种基于虚拟化技术的读写方法及*** | |
US10200301B1 (en) | Logical control groups for distributed system resources |
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 |