CN109947536A - 一种基于Kubernetes的PostgreSQL自动化部署方法 - Google Patents

一种基于Kubernetes的PostgreSQL自动化部署方法 Download PDF

Info

Publication number
CN109947536A
CN109947536A CN201910226440.1A CN201910226440A CN109947536A CN 109947536 A CN109947536 A CN 109947536A CN 201910226440 A CN201910226440 A CN 201910226440A CN 109947536 A CN109947536 A CN 109947536A
Authority
CN
China
Prior art keywords
postgresql
kubernetes
helm
standby
method based
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
Application number
CN201910226440.1A
Other languages
English (en)
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.)
Shandong Inspur Cloud Information Technology Co Ltd
Original Assignee
Shandong Inspur Cloud Information 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 Shandong Inspur Cloud Information Technology Co Ltd filed Critical Shandong Inspur Cloud Information Technology Co Ltd
Priority to CN201910226440.1A priority Critical patent/CN109947536A/zh
Publication of CN109947536A publication Critical patent/CN109947536A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于Kubernetes的PostgreSQL自动化部署方法,属于数据库管理系统容器化部署领域。本发明首先通过制作和构建PostgreSQL的镜像文件,然后通过Helm模板的设计实现PostgreSQL的主备和数据持久化,最后在Kubernetes上启动master、slave主备容器和建立一个数据持久化的目录,最终提供给用户一个安全可靠的PostgreSQL数据库管理系统。本发明简单易操作,通过Helm工具部署在容器中,能够更加快速,并且很方便的在不同云、不同版本操作系统之间进行迁移。更重要的一点,在Helm模板设计时指定副本模式,当主备节点有任何一个挂掉时,都会重新启动另外一个新的容器,使整个PostgreSQL服务一直保持主备两节点模式。

Description

一种基于Kubernetes的PostgreSQL自动化部署方法
技术领域
本发明涉及数据库管理系统容器化部署技术领域,具体涉及Docker镜像制作和构建、Docker容器管理、Helm自动化部署工具设计、Kubernetes容器管理等相关技术,更具体来说是一种基于Kubernetes的PostgreSQL自动化部署方法。
背景技术
大数据时代,每个行业都在实时的产生着大量的数据,数据正成为一种生产资料,推动着整个社会的进步和发展。在数据的存储过程中,PostgreSQL作为一个自由的对象-关系数据库管理系统,功能非常强大,包括了可以说是目前世界上最丰富的数据类型的支持。PostgreSQL作为一种功能完备的数据库管理系统,为多种数据的存储提供很好的保证。
传统的应用部署PostgreSQL的方式是通过插件或脚本来安装应用,这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,并且其可移植性差。具体地,目前在虚拟机上部署PostgreSQL的方式,存在如下问题:
首先部署速度慢,每部署一个都需要进行相应的配置;
其次对应的应用部署时需要和机器底层进行较强的耦合,使其不利于在不同系统之间的迁移。
Kubernetes是一个完备的分布式系统支撑平台,提供了一种全新的容器技术的分布式架构领先方案,在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。Helm工具作为Kubernetes的包管理器,可以通过设计Helm的Chart包实现很多应用的自动化部署。
随着Kubernetes容器化技术的快速发展,使得应用的自动化部署成为一种趋势。
发明内容
本发明的技术任务是针对现有技术的不足,提供一种简单易操作的、基于Kubernetes的PostgreSQL自动化部署方法。
本发明解决其技术问题所采用的技术方案是:
1、一种基于Kubernetes的PostgreSQL自动化部署方法,包括如下步骤:
1)首先制作和构建自动化部署PostgreSQL所需要的镜像文件;
2)进一步利用Kubernetes的自动化部署工具Helm,通过设计Helm模板实现PostgreSQL的主备和数据持久化,以此来保证数据的安全;
3)最后在Kubernetes环境上使用Helm指令自动化部署PostgreSQL,通过查看会发现在两个节点上启动了一个master一个slave的容器达到主备模式,在指定的数据盘形成了该PostgreSQL的数据目录达到了数据持久化的作用,并且启动了一个metrecs的监控容器。
进一步地,所述步骤1)中利用Docker技术,通过编写Dockerfile制作和构件自动化部署PostgreSQL所需要的镜像文件。
进一步地,步骤1)中Dockerfile的编写具体包括以下步骤:
1.1)首先指明基础镜像是基于centos7.3制作;
1.2)建立镜像的用户信息;
1.3)将pg_pathman文件夹复制到tmp目录下;
1.4)执行yum install命令安装postgres和pglogical;
1.5)使用build dockerfile命令创建镜像;
1.6)给镜像添加tag,上传至镜像库。
进一步地,所述步骤2)中通过设计Helm模板在参数中指定部署时需要的副本数和数据存储方式来实现PostgreSQL的主备和数据持久化,以此来保证数据的安全。
进一步地,在Helm模板设计时指定副本模式(副本数和数据存数方式),当主备节点有任何一个挂掉时,都会重新启动另外一个新的容器,使整个PostgreSQL服务一直保持主备两节点模式。
进一步地,步骤3)在容器化部署中,每个容器之间相互隔离,每个容器都有自己的文件系统,容器之间进程不会相互影响,独立的文件系统使得数据的持久化工作更加完善和保证了数据的安全。
进一步地,所述容器能够区分计算资源,即部署的两个PostgreSQL主备节点和其他容器是相互独立的,主备节点之间的运行也是互不影响的。
进一步地,Helm工具部署在容器中,能够更加快速,并且很方便的在不同云、不同版本操作系统之间进行迁移。
进一步地,步骤2)中Helm模板的设计具体包括以下步骤:
2.1)使用helm create创建一个新chart目录;
2.2)在chart.yaml中添加描述chart的基本信息,如名称版本等;
2.3)在values.yaml文件中添加制作好的postgresql镜像,主备2个副本数,启动服务的端口号这些配置信息;
2.4)在configmap.yaml文件中设置读取values.yaml文件中配置信息的变量;
2.5)使用helm install命令安装所完成的helm模板。
本发明的一种基于Kubernetes的PostgreSQL自动化部署方法,与现有技术相比所产生的有益效果是:
本发明通过Helm工具在Kubernetes上部署容器的方式实现PostgreSQL的自动化部署,在容器化部署中,每个容器之间相互隔离,每个容器都有自己的文件系统,容器之间进程不会相互影响,容器能够区分计算资源,即部署的两个PostgreSQL主备节点和其他容器是相互独立的,主备节点之间的运行也是互不影响的,独立的文件系统使得数据的持久化工作更加完善和保证了数据的安全。
并且相比于在虚拟机上部署PostgreSQL,通过Helm工具部署在容器中,能够更加快速,并且很方便的在不同云、不同版本操作系统之间进行迁移。
更重要的一点,在Helm模板设计时指定副本模式,当主备节点有任何一个挂掉时,都会重新启动另外一个新的容器,使整个PostgreSQL服务一直保持主备两节点模式。
提高了PostgreSQL部署的易用性;
增加了PostgreSQL部署的多元化;
提升了数据存储的安全性;
提高了PostgreSQL部署的可移植性;
提升了数据操作的高效性。
附图说明
附图1是本发明一种基于Kubernetes的PostgreSQL自动化部署方法的流程示意图;
附图2是本发明Dockerfile的编写流程示意图;
附图3是本发明Helm模板的设计流程示意图。
具体实施方式
下面结合附图1-3,对本发明的一种基于Kubernetes的PostgreSQL自动化部署方法作以下详细说明。
结合附图1,本发明的一种基于Kubernetes的PostgreSQL自动化部署方法,包括如下步骤:
1)首先制作和构建自动化部署PostgreSQL所需要的镜像文件;
2)进一步利用Kubernetes的自动化部署工具Helm,通过设计Helm模板实现PostgreSQL的主备和数据持久化,以此来保证数据的安全;
3)最后在Kubernetes环境上使用Helm指令自动化部署PostgreSQL,通过查看会发现在两个节点上启动了一个master一个slave的容器达到主备模式,在指定的数据盘形成了该PostgreSQL的数据目录达到了数据持久化的作用,并且启动了一个metrecs的监控容器。
其中本发明步骤1)中利用Docker技术,通过编写Dockerfile制作和构件自动化部署PostgreSQL所需要的镜像文件。
结合附图2,本发明步骤1)中Dockerfile的编写具体包括以下步骤:
1.1)首先指明基础镜像是基于centos7.3制作;
1.2)建立镜像的用户信息;
1.3)将pg_pathman文件夹复制到tmp目录下;
1.4)执行yum install命令安装postgres和pglogical;
1.5)使用build dockerfile命令创建镜像;
1.6)给镜像添加tag,上传至镜像库。
结合附图3,本发明步骤2)中,Helm模板的设计具体包括如下步骤:
2.1)使用helm create创建一个新chart目录;
2.2)在chart.yaml中添加描述chart的基本信息,如名称版本等;
2.3)在values.yaml文件中添加制作好的postgresql镜像,主备2个副本数,启动服务的端口号这些配置信息;
2.4)在configmap.yaml文件中设置读取values.yaml文件中配置信息的变量;
2.5)使用helm install命令安装所完成的helm模板。
其中本发明步骤2)中通过设计Helm模板在参数中指定部署时需要的副本数和数据存储方式来实现PostgreSQL的主备和数据持久化,以此来保证数据的安全。
Helm模板
本发明在容器化部署中,每个容器之间相互隔离,每个容器都有自己的文件系统,容器之间进程不会相互影响,独立的文件系统使得数据的持久化工作更加完善和保证了数据的安全。
本发明的容器能够区分计算资源,即部署的两个PostgreSQL主备节点和其他容器是相互独立的,主备节点之间的运行也是互不影响的。
本发明,Helm工具部署在容器中,能够更加快速,并且很方便的在不同云、不同版本操作系统之间进行迁移。
本发明中,在Helm模板设计时指定副本模式,当主备节点有任何一个挂掉时,都会重新启动另外一个新的容器,使整个PostgreSQL服务一直保持主备两节点模式。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。

Claims (9)

1.一种基于Kubernetes的PostgreSQL自动化部署方法,其特征在于,包括如下步骤:
1)首先制作和构建自动化部署PostgreSQL所需要的镜像文件;
2)进一步利用Kubernetes的自动化部署工具Helm,通过设计Helm模板实现PostgreSQL的主备和数据持久化,以此来保证数据的安全;
3)最后在Kubernetes环境上使用Helm指令自动化部署PostgreSQL,通过查看会发现在两个节点上启动了一个master一个slave的容器达到主备模式,在指定的数据盘形成了该PostgreSQL的数据目录达到了数据持久化的作用,并且启动了一个metrecs的监控容器。
2.根据权利要求1所述的一种基于Kubernetes的PostgreSQL自动化部署方法,其特征在于,所述步骤1)中利用Docker技术,通过编写Dockerfile制作和构件自动化部署PostgreSQL所需要的镜像文件。
3.根据权利要求2所述的一种基于Kubernetes的PostgreSQL自动化部署方法,其特征在于,步骤1)中Dockerfile的编写具体包括以下步骤:
1.1)首先指明基础镜像是基于centos7.3制作;
1.2)建立镜像的用户信息;
1.3)将pg_pathman文件夹复制到tmp目录下;
1.4)执行yum install命令安装postgres和pglogical;
1.5)使用build dockerfile命令创建镜像;
1.6)给镜像添加tag,上传至镜像库。
4.根据权利要求1、2或3所述的一种基于Kubernetes的PostgreSQL自动化部署方法,其特征在于,所述步骤2)中通过设计Helm模板在参数中指定部署时需要的副本数和数据存储方式来实现PostgreSQL的主备和数据持久化,以此来保证数据的安全。
5.根据权利要求4所述的一种基于Kubernetes的PostgreSQL自动化部署方法,其特征在于,Helm工具部署在容器中,能够快速、方便地在不同云、不同版本操作系统之间进行迁移。
6.根据权利要求1、2、3或5所述的一种基于Kubernetes的PostgreSQL自动化部署方法,其特征在于,步骤3)在容器化部署中,每个容器之间相互隔离,每个容器都有自己的文件系统,容器之间进程不会相互影响。
7.根据权利要求1、2、3或5所述的一种基于Kubernetes的PostgreSQL自动化部署方法,其特征在于,所述容器能够区分计算资源,即部署的两个PostgreSQL主备节点和其他容器是相互独立的,主备节点之间的运行也是互不影响的。
8.根据权利要求1、2、3或5所述的一种基于Kubernetes的PostgreSQL自动化部署方法,其特征在于,当主备节点有任何一个挂掉时,都会重新启动另外一个新的容器,使整个PostgreSQL服务一直保持主备两节点模式。
9.根据权利要求1、2、3或5所述的一种基于Kubernetes的PostgreSQL自动化部署方法,其特征在于,步骤2)中Helm模板的设计具体包括以下步骤:
2.1)使用helm create创建一个新chart目录;
2.2)在chart.yaml中添加描述chart的基本信息;
2.3)在values.yaml文件中添加制作好的postgresql镜像,主备2个副本数,启动服务的端口号这些配置信息;
2.4)在configmap.yaml文件中设置读取values.yaml文件中配置信息的变量;
2.5)使用helm install命令安装所完成的helm模板。
CN201910226440.1A 2019-03-25 2019-03-25 一种基于Kubernetes的PostgreSQL自动化部署方法 Pending CN109947536A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910226440.1A CN109947536A (zh) 2019-03-25 2019-03-25 一种基于Kubernetes的PostgreSQL自动化部署方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910226440.1A CN109947536A (zh) 2019-03-25 2019-03-25 一种基于Kubernetes的PostgreSQL自动化部署方法

Publications (1)

Publication Number Publication Date
CN109947536A true CN109947536A (zh) 2019-06-28

Family

ID=67011690

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910226440.1A Pending CN109947536A (zh) 2019-03-25 2019-03-25 一种基于Kubernetes的PostgreSQL自动化部署方法

Country Status (1)

Country Link
CN (1) CN109947536A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026414A (zh) * 2019-12-12 2020-04-17 杭州安恒信息技术股份有限公司 一种基于kubernetes的HDP平台部署方法
CN111142881A (zh) * 2019-12-27 2020-05-12 浪潮云信息技术有限公司 一种基于kubernetes的编排charts自动化部署的系统及方法
CN111444104A (zh) * 2020-04-01 2020-07-24 山东汇贸电子口岸有限公司 一种OpenStack功能测试的方法
CN111930465A (zh) * 2020-05-28 2020-11-13 武汉达梦数据库有限公司 一种基于Kubernetes的达梦主从集群部署方法和装置
CN111930466A (zh) * 2020-05-28 2020-11-13 武汉达梦数据库有限公司 一种基于Kubernetes的数据同步环境部署方法和装置
CN113312063A (zh) * 2021-05-31 2021-08-27 中电福富信息科技有限公司 基于Kubernetes的软件系统快速部署升级方法
CN113590305A (zh) * 2021-05-14 2021-11-02 西安交通大学 一种基于k3s的边缘计算应用能力部署方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503965A (zh) * 2014-10-16 2015-04-08 杭州斯凯网络科技有限公司 PostgreSQL高弹性的高可用及负载均衡实现方法
US20150178122A1 (en) * 2013-12-19 2015-06-25 Red Hat, Inc. Method and system for providing a high-availability application
CN105786564A (zh) * 2016-02-22 2016-07-20 上海新炬网络信息技术有限公司 一种Oracle的自动化定制安装部署方法
CN109062655A (zh) * 2018-06-05 2018-12-21 腾讯科技(深圳)有限公司 一种容器化云平台及服务器
CN109491674A (zh) * 2018-11-07 2019-03-19 李斌 一种在Kubernetes集群中自动部署服务的方法与系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150178122A1 (en) * 2013-12-19 2015-06-25 Red Hat, Inc. Method and system for providing a high-availability application
CN104503965A (zh) * 2014-10-16 2015-04-08 杭州斯凯网络科技有限公司 PostgreSQL高弹性的高可用及负载均衡实现方法
CN105786564A (zh) * 2016-02-22 2016-07-20 上海新炬网络信息技术有限公司 一种Oracle的自动化定制安装部署方法
CN109062655A (zh) * 2018-06-05 2018-12-21 腾讯科技(深圳)有限公司 一种容器化云平台及服务器
CN109491674A (zh) * 2018-11-07 2019-03-19 李斌 一种在Kubernetes集群中自动部署服务的方法与系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JEFF MCCORMICK: "Creating a PostgreSQL Cluster using Helm", 《HTTPS://KUBERNETES.IO/BLOG/2016/09/CREATING-POSTGRESQL-CLUSTER-USING-HELM/》 *
云龙云: "使用Helm优化Kubernetes下的研发体验:基础设施即代码", 《HTTP://DOCKONE.IO/ARTICLE/8243》 *
只有香如故: "使用dockerfile构建postgresql包含pglogical和pg_pathman的镜像", 《HTTPS://WWW.JIANSHU.COM/P/BD610BA63E6F》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026414A (zh) * 2019-12-12 2020-04-17 杭州安恒信息技术股份有限公司 一种基于kubernetes的HDP平台部署方法
CN111026414B (zh) * 2019-12-12 2023-09-08 杭州安恒信息技术股份有限公司 一种基于kubernetes的HDP平台部署方法
CN111142881A (zh) * 2019-12-27 2020-05-12 浪潮云信息技术有限公司 一种基于kubernetes的编排charts自动化部署的系统及方法
CN111142881B (zh) * 2019-12-27 2023-10-27 浪潮云信息技术股份公司 一种基于kubernetes的编排charts自动化部署的系统及方法
CN111444104A (zh) * 2020-04-01 2020-07-24 山东汇贸电子口岸有限公司 一种OpenStack功能测试的方法
CN111930465A (zh) * 2020-05-28 2020-11-13 武汉达梦数据库有限公司 一种基于Kubernetes的达梦主从集群部署方法和装置
CN111930466A (zh) * 2020-05-28 2020-11-13 武汉达梦数据库有限公司 一种基于Kubernetes的数据同步环境部署方法和装置
CN113590305A (zh) * 2021-05-14 2021-11-02 西安交通大学 一种基于k3s的边缘计算应用能力部署方法
CN113312063A (zh) * 2021-05-31 2021-08-27 中电福富信息科技有限公司 基于Kubernetes的软件系统快速部署升级方法

Similar Documents

Publication Publication Date Title
CN109947536A (zh) 一种基于Kubernetes的PostgreSQL自动化部署方法
CN102999369B (zh) 虚拟机升级的方法及装置
CN101840346B (zh) 云主机部署的方法及系统
US8161479B2 (en) Synchronizing virtual machine and application life cycles
CN109062655A (zh) 一种容器化云平台及服务器
CN105653372B (zh) 基于云平台实现多虚拟化混合管理与调度的方法
CN112015517B (zh) 一种基于k8s集群的区块链节点动态迁移方法和系统
CN106339177A (zh) 一种创建虚拟机的方法和装置
CN103064742A (zh) 一种hadoop集群的自动部署系统及方法
CN109388478A (zh) 用于OpenStack环境中迁移虚拟机的方法和装置
CN110520844A (zh) 云管理平台、虚拟机管理方法及其系统
CN104424338A (zh) web系统的自动生成装置和自动生成方法
CN111124286A (zh) 一种基于Libcloud的多云管理实现方法
CN113485786B (zh) 一种基于云物理机实现pod挂载cinder卷的方法及系统
CN104580532A (zh) 一种跨平台应用系统
CN111176664A (zh) 一种存储集群设置方法、装置、介质及设备
CN106469117A (zh) 一种用于虚拟机存储迁移的存储资源管理方法及装置
CN114564339A (zh) 一种磁盘镜像文件跨平台迁移方法及系统
CN109032753A (zh) 一种异构虚拟机硬盘托管方法、系统、存储介质及Nova平台
CN113849399A (zh) 多国产化平台下的多机协同软件的自动化测试系统和方法
CN112948055A (zh) 一种基于云计算的创新型课程实验自动管理方法及系统
CN105488985A (zh) 一种支持面向对象通讯协议的低压采集终端
CN103389909B (zh) 一种渲染农场节点虚拟化部署系统及其应用
CN109753302B (zh) 基于混合云计算平台的无服务函数的服务方法
CN104572140A (zh) 一种操作系统移植的方法、装置及系统

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20190628

WD01 Invention patent application deemed withdrawn after publication