CN115437653A - 一种利用容器技术私有化部署的方法 - Google Patents
一种利用容器技术私有化部署的方法 Download PDFInfo
- Publication number
- CN115437653A CN115437653A CN202210824324.1A CN202210824324A CN115437653A CN 115437653 A CN115437653 A CN 115437653A CN 202210824324 A CN202210824324 A CN 202210824324A CN 115437653 A CN115437653 A CN 115437653A
- Authority
- CN
- China
- Prior art keywords
- deployment
- application
- file
- privatized
- files
- 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.)
- Pending
Links
Images
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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种利用容器技术私有化部署的方法:步骤1、离线安装NFS远程共享文件服务,配置所有私有化部署应用配置文件的共享目录;步骤2、制作容器docker、编排工具kubernetes的rpm包;步骤3、使用yumlocalinstall方式离线安装docker容器,kubernetes集群;步骤4、制作PV、PVC存储卷yaml文件并在kubernetes集群中完成部署;步骤5、获取应用系统所有依赖的中间件离线镜像,在kubernetes集群中部署所有中间件;步骤6、制作上传私有化部署系统的每个子系统的镜像文件,利用shell脚本一次性在kubernetes集群中部署所有应用。
Description
技术领域
本发明涉及计算机领域,具体涉及一种利用容器化技术私有化部署的方法。
背景技术
一个SAAS系统(Software As a Service软件即服务)的私有化部署越来越成为很多中小企业,特别是创业公司盈利的一种重要模式,通过SAAS这种完整的平台系统的私有化部署,使得用户购买的服务更加稳定可控和数据安全。一个完整的平台系统由多个子系统、数据库、中间件所构成。使用传统的部署模式,即先计算各个部分所需的硬件资源,上传所有离线包,然后,通过脚本搭建环境,安装中间件,部署各个应用,最后调试完成后交付。这种私有化部署对于提供这种产品的企业来说,面对两个难题:第一:每一次私有化部署都需要提供足够的技术支持资源,因为每次私有化部署中所遇到的问题可能都是不一样的,比如软件环境问题,子系统间通信的网络问题。第二:平台系统某部分组件的升级问题,比如有系统bug(故障)需要修复升级,这种情况往往都是需要提供1对1的专门服务。这两个问题就直接影响到企业的私有化部署效率以及成本投入和收益比。而容器技术做为最热门最受欢迎的服务器端技术,其中镜像文件技术、集群管理、负载均衡等天然特性极大的提高了PASS系统的私有化部署的效率。
发明内容
针对上述的问题,本发明提供一种利用容器技术私有化部署的方法,通过镜像文件制作、部署清单、应用容器化、中间件容器化、kubernetes一键部署等标准流程管理,完成复杂系统平台的快速高效部署。
名词解释:
1、NFS:网络文件系统,一种分布式文件系统,客户端主机可以访问服务器端文件,其过程就像访问本地存储一样。
2、kubernetes:一个用于跨多主机管理容器化应用的开源编排系统。
3、docker:就是容器技术,用于支持创建和使用linux容器。docker load:加载镜像文件。docker pull:从仓库拉取镜像。docker build:构建镜像文件。
4、PV:持久化存储卷,主要定义的是一个持久化存储在宿主机上的目录,比如一个NFS的挂载目录。
5、PVC:描述的是kubernetes最小部署单元pod所希望使用的持久化存储的属性,比如:存储大小、可读写权限等等。
6、Dockerfile:一个用于构建镜像文件的文本文档,其主体由一个个命令行所构成。
7、yaml:一种可读性友好的通用的可序列化的标记语言。
8、dashboard:系统可视化控制面板。
9、yum localinstall:离线安装软件工具。
10、kubelet、kubeadm、kubectl:容器集群管理工具。
11、storage、path、server:文件服务器存储、路径、地址信息。
12、mysql、redis、mongodb、elk:关系数据库、缓存、文档数据库、日志数据库。
13、shell:一种脚本编程语言。
14、imagePullPolicy:容器拉取镜像的策略。
为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
一种利用容器技术私有化部署的方法,包括如下部署:
步骤1、离线安装NFS服务,创建共享文件夹目录,上传所有私有化部署应用系统的配置文件,按照应用系统划分分别配置其配置文件所在的NFS共享目录;
步骤2、制作完整的可离线使用的包含所有依赖包的kubernetes rpm安装包以及所有kubernetes服务安装所必须的核心镜像文件以及网络插件镜像文件、dashboard控制面板镜像文件;
步骤3、所有部署机器离线安装docker容器服务,使用docker load加载所有kubernetes服务的离线镜像文件,使用yum localinstall指令将所有部署机器离线安装kubelet、kubeadm、kubectl后组成一个kubernetes集群,在该kubernetes集群里部署dashboard控制面板应用;
步骤4、依据NFS服务,制作存储卷PV、PVC的yaml清单配置文件,检查确认storage、path、server参数正确性;
步骤5、使用PV、PVC yaml清单文件部署,部署完成后检查PV、PVC状态是否处于绑定状态,并且对应绑定正确;
步骤6、使用docker pull获取应用依赖的中间件mysql、redis、mongodb、elk镜像文件,然后加载到kubernetes集群的所有节点上,使用kubenetes部署应用系统依赖的中间件;
步骤7、制作私有化部署应用系统的每个子系统的Dockerfile文件,yaml清单文件,根据Dockerfile文件使用docker build制作镜像文件,yaml清单文件中应用配置使用本地配置,挂载卷使用PVC挂载;
步骤8、根据私有化部署系统的每个子系统的yaml清单文件编写shell启动脚本,一次性在kubernetes集群中部署所有应用。
优选的,在实际私有化部署过程中,所有的安装文件、部署文件、部署镜像都使用离线方式。这样能确保私有化部署不依赖外网。
优选的,所有应用系统配置文件存储目录使用PV挂载进行持久化存储。
优选的,所有中间件的数据存储目录使用PV挂载进行持久化存储。
优选的,应用根据Dockerfile制作的镜像文件中的应用包需要提前使用打包工具将源码打包好,Dockerfile需要包含应用包、时区配置、应用包运行环境、暴露端口、启动命令。
优选的,需要打包的应用需要区分版本,初始版本为1.0.0,需要镜像文件升级,应用系统需要重新打包,升级版本的原则是小功能升小版本号,大功能升大版本号。
优选的,在升级应用版本过程中,如果有应用配置更新,则以补丁的方式执行shell脚本更新配置文件,初始版本配置文件内容不要手动一个个更新,而是通过不同版本的脚本去更新。
优选的,所有部署系统的镜像文件提前加载到本地仓库,yaml部署清单中imagePullPolicy均设置为Never。
与现有技术相比较,本发明的有益效果是:
1)显著提高私有化部署的效率,降低人力服务成本和管理成本。
2)容器化部署显著提高了硬件资源的利用率,相比较于传统的部署方式,降低了硬件资源的浪费。
3)配置文件、系统数据的中心化管理,使得配置、数据与系统隔离,系统故障重启或重新部署不影响数据。
4)部署的过程大大降低了维护人员的技术水平要求。
5)基于kubernetes的一键发布,大大提升了发布的速度、应用扩展性。
附图说明
图1是本发明一种利用容器技术私有化部署方法的容器架构图;
图2是本发明系统部署状态的拓扑图。
具体实施方式
下面结合附图和具体的实施例对本发明技术方案做进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
如图1、2所示,一种利用容器化技术私有化部署的方法,具体包括如下步骤:
步骤1、使用一台独立机器离线安装NFS服务,创建共享文件夹目录,上传所有私有化部署应用系统的配置文件,按照应用系统划分分别配置其配置文件所在的NFS共享目录。
步骤2、制作完整的可离线使用的包含所有依赖包的kubernetes rpm安装包以及所有kubernetes服务安装所必须的核心镜像文件以及网络插件镜像文件、dashboard控制面板镜像文件。
步骤3、所有部署机器离线安装docker容器服务,使用docker load加载所有kubernetes服务的离线镜像文件,使用yum localinstall指令将所有部署机器离线安装kubelet、kubeadm、kubectl这三个kubernetes核心组件,然后利用kubeadm工具将这些部署机器组成一个kubernetes集群,在该kubernetes集群里部署dashboard控制面板应用,方便对kubernetes操作使用。
步骤4、依据NFS服务,制作存储卷PV、PVC的yaml清单配置文件,额外注意storage、path、server参数正确性。
步骤5、使用PV、PVC yaml清单文件部署,部署完成后检查PV、PVC状态是否处于绑定状态,并且对应绑定正确。
步骤6、容器化环境全部准备完成后就是开始部署系统,先是部署应用依赖的中间件系统,使用docker pull获取应用依赖的中间件mysql、redis、mongodb、elk等镜像文件,然后加载到所有kubernetes集群的所有节点上。将中间件的yaml部署清单中imagePullPolicy设置为Never,即永远不向远程仓库中拉取镜像文件,只使用本地镜像。yaml文件中还需要定义中间件的service DNS访问方式。
步骤7、制作私有化部署应用系统的每个子系统的Dockerfile文件,yaml清单文件,根据Dockerfile文件使用docker build制作镜像文件,yaml清单文件中应用配置使用本地配置,挂载卷使用PVC挂载。
步骤8、根据私有化部署系统的每个子系统的yaml清单文件编写shell启动脚本,一次性在kubernetes集群中部署所有应用。如果子系统存在启动顺序,注意shell脚本中应用部署的的次序,增加部署开始、完成的日志,有必要时可以增加sleep操作,等待某些应用完全部署好。脚本全部执行完成后,通过kubernetes的dashboard控制面板查看各个应用是否运行正常。
制作离线资源,利用一台可以连接公共互联网的linux系统机器使用yum、dnf工具制作完整的包含所有依赖包的kubernetes离线rpm安装包,使用docker pull指令获取所有kubernetes服务安装所必须的核心镜像文件以及网络插件镜像文件、dashboard控制面板镜像文件,最后将这些离线资源打包导出,这些离线包可以使的部署机器在不连接公共互联网的情况下搭建出容器化环境。
需要容器化部署的分成两种系统,一种是中间件,比如数据库mysql、mongdb、日志ELK、缓存redis等,这类属于有状态应用,都需要有指定的文件夹专门用于存放数据;一种是应用系统,也需要有指定的文件夹能够读取应用配置文件,即使这两种系统的应用重启、重新部署,数据也不会丢失。这些数据可以集中存放在NFS这种远程文件服务中,使用方式就是通过kubernetes的PV、PVC机制,制作存储卷PV、PVC的yaml清单配置文件,文件中配置存储卷名、容量大小、读写权限、文件夹路径、服务器地址等信息。yaml文件中还需要定义中间件的service DNS访问方式,这样每个应用系统中依赖的中间件所配置的访问地址就是固定不变的。
制作私有化部署应用系统的每个子系统的Dockerfile文件,yaml清单文件,其中清单文件中imagePullPolicy设置为Never。根据Dockerfile文件使用docker build制作镜像,yaml清单文件中应用配置使用本地配置,挂载卷使用PVC挂载。需要打包的应用需要区分版本,基于master分支切出一个私有化部署分支,基于私有化部署分支打tag,初始版本为1.0.0,如果master分支有新的功能代码,需要镜像文件升级,从master分支的代码merge或者cherry-pick到私有化部署分支,再重新打tag,升级版本,小功能升小版本号,大功能升大版本号。在升级应用版本过程中,如果有应用配置更新,则以补丁的方式执行shell脚本更新配置文件,初始版本配置文件内容不要手动一个个更新,而是通过不同版本的脚本去更新。这样做是为了方便项目能分版本部署,新增的shell脚本跟对应的应用tag保持一致,脚本名称:$应用名_$文件名_$tag.sh。
该利用容器化技术私有化部署的方法能够显著提高私有化部署的效率,降低人力服务成本和管理成本。容器化部署显著提高了硬件资源的利用率,相比较于传统的部署方式,降低了硬件资源的浪费。配置文件、系统数据的中心化管理,使得配置、数据与系统隔离,系统故障重启或重新部署不影响数据。部署的过程大大降低了维护人员的技术水平要求。基于kubernetes的一键发布,大大提升了发布的速度、应用扩展性。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或者等效流程变换,或者直接或间接运用在其它相关的技术领域,均同理包含在本发明的专利保护范围内。
Claims (8)
1.一种利用容器技术私有化部署的方法,其特征在于,包括如下部署:
步骤1、离线安装NFS服务,创建共享文件夹目录,上传所有私有化部署应用系统的配置文件,按照应用系统划分分别配置其配置文件所在的NFS共享目录;
步骤2、制作完整的可离线使用的包含所有依赖包的kubernetes rpm安装包以及所有kubernetes服务安装所必须的核心镜像文件以及网络插件镜像文件、dashboard控制面板镜像文件;
步骤3、所有部署机器离线安装docker容器服务,使用docker load加载所有kubernetes服务的离线镜像文件,使用yumlocalinstall指令将所有部署机器离线安装kubelet、kubeadm、kubectl后组成一个kubernetes集群,在该kubernetes集群里部署dashboard控制面板应用;
步骤4、依据NFS服务,制作存储卷PV、PVC的yaml清单配置文件,检查确认storage、path、server参数正确性;
步骤5、使用PV、PVC yaml清单文件部署,部署完成后检查PV、PVC状态是否处于绑定状态,并且对应绑定正确;
步骤6、使用docker pull获取应用依赖的中间件mysql、redis、mongodb、elk镜像文件,然后加载到kubernetes集群的所有节点上,使用kubenetes部署应用系统依赖的中间件;
步骤7、制作私有化部署应用系统的每个子系统的Dockerfile文件,yaml清单文件,根据Dockerfile文件使用docker build制作镜像文件,yaml清单文件中应用配置使用本地配置,挂载卷使用PVC挂载;
步骤8、根据私有化部署系统的每个子系统的yaml清单文件编写shell启动脚本,一次性在kubernetes集群中部署所有应用。
2.根据权利要求1所述的一种利用容器技术私有化部署的方法,其特征在于:在实际私有化部署过程中,所有的安装文件、部署文件、部署镜像都使用离线方式。
3.根据权利要求1所述的一种利用容器技术私有化部署的方法,其特征在于:所有应用系统配置文件存储目录使用PV挂载进行持久化存储。
4.根据权利要求1所述的一种利用容器技术私有化部署的方法,其特征在于:所有中间件的数据存储目录使用PV挂载进行持久化存储。
5.根据权利要求1所述的一种利用容器技术私有化部署的方法,其特征在于:应用根据Dockerfile制作的镜像文件中的应用包需要提前使用打包工具将源码打包好,Dockerfile需要包含应用包、时区配置、应用包运行环境、暴露端口、启动命令。
6.根据权利要求5所述的一种利用容器技术私有化部署的方法,其特征在于:需要打包的应用需要区分版本,初始版本为1.0.0,需要镜像文件升级,应用系统需要重新打包,升级版本的原则是小功能升小版本号,大功能升大版本号。
7.根据权利要求6所述的一种利用容器技术私有化部署的方法,其特征在于:在升级应用版本过程中,如果有应用配置更新,则以补丁的方式执行shell脚本更新配置文件,初始版本配置文件内容不要手动一个个更新,而是通过不同版本的脚本去更新。
8.根据权利要求1所述的一种利用容器技术私有化部署的方法,其特征在于:所有部署系统的镜像文件提前加载到本地仓库,yaml部署清单中imagePullPolicy均设置为Never。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210824324.1A CN115437653A (zh) | 2022-07-14 | 2022-07-14 | 一种利用容器技术私有化部署的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210824324.1A CN115437653A (zh) | 2022-07-14 | 2022-07-14 | 一种利用容器技术私有化部署的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437653A true CN115437653A (zh) | 2022-12-06 |
Family
ID=84241489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210824324.1A Pending CN115437653A (zh) | 2022-07-14 | 2022-07-14 | 一种利用容器技术私有化部署的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437653A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301932A (zh) * | 2022-12-21 | 2023-06-23 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种kubernetes环境下大型项目的快速部署方法 |
CN116483394A (zh) * | 2023-04-26 | 2023-07-25 | 北京远舢智能科技有限公司 | 一种基于容器的Kubernetes离线安装方法及装置 |
-
2022
- 2022-07-14 CN CN202210824324.1A patent/CN115437653A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301932A (zh) * | 2022-12-21 | 2023-06-23 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种kubernetes环境下大型项目的快速部署方法 |
CN116301932B (zh) * | 2022-12-21 | 2023-09-29 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种kubernetes环境下大型项目的快速部署方法 |
CN116483394A (zh) * | 2023-04-26 | 2023-07-25 | 北京远舢智能科技有限公司 | 一种基于容器的Kubernetes离线安装方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947773B (zh) | 在多租户数据库系统中部署对键模式的改变 | |
EP3477502B1 (en) | Patching content across shared and tenant containers in multi-tenancy database systems | |
CN115437653A (zh) | 一种利用容器技术私有化部署的方法 | |
CN107577475B (zh) | 一种数据中心集群系统的软件包管理方法及系统 | |
US9075638B2 (en) | Efficient hosting of virtualized containers using read-only operating systems | |
US8365164B1 (en) | Portable software applications | |
EP3477498A1 (en) | Transitioning between system sharing types in multi-tenancy database systems | |
EP3477499A1 (en) | Exchanging shared containers and adapting tenants in multi-tenancy database systems | |
US20100325624A1 (en) | Method and System for Application Portability | |
US6973647B2 (en) | Preferable modes of software package deployment | |
US8881139B1 (en) | Legacy application rehosting system | |
EP3477500A1 (en) | Deploying changes in a multi-tenancy database system | |
US8464246B2 (en) | Automation of mainframe software deployment | |
US10715637B2 (en) | Systems and methods for automated application deployment management | |
US10715594B2 (en) | Systems and methods for update propagation between nodes in a distributed system | |
CN112882729A (zh) | 应用镜像升级方法、装置、计算机设备和存储介质 | |
CN102929665B (zh) | 用于驱动安装的系统 | |
CN103714287A (zh) | 一种获取临时Root权限的方法及装置 | |
CN114201239B (zh) | 一种系统适配方法、装置及电子设备和存储介质 | |
CN112925609B (zh) | OpenStack云平台升级方法及装置 | |
CN116450153B (zh) | 一种容器化仿真平台快速部署方法 | |
CN117707543A (zh) | 一种应用安装包制作和安装方法、计算设备及存储介质 | |
CN115145604A (zh) | 一种容器化的电力营销系统部署方法 | |
CN115421730A (zh) | 一种页面内动态加载不限格式静态资源文件的方法 | |
CN113821228B (zh) | 一种基于分层容器镜像构建ros或类ros项目的方法 |
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 |