CN116089011A - 创建镜像仓库的方法、装置、存储介质以及电子设备 - Google Patents
创建镜像仓库的方法、装置、存储介质以及电子设备 Download PDFInfo
- Publication number
- CN116089011A CN116089011A CN202310080219.6A CN202310080219A CN116089011A CN 116089011 A CN116089011 A CN 116089011A CN 202310080219 A CN202310080219 A CN 202310080219A CN 116089011 A CN116089011 A CN 116089011A
- Authority
- CN
- China
- Prior art keywords
- mirror
- warehouse
- cluster
- repository
- creating
- 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
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/45595—Network integration; Enabling network access in virtual machine instances
-
- 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种创建镜像仓库的方法、装置、存储介质以及电子设备。其中,该方法包括:在预定集群中创建用于部署镜像仓库的命名空间;在预定集群创建预定分布式存储引擎对应的存储类,并获取镜像仓库对应的安装文件;将安装文件安装至命名空间,将安装文件中的配置文件修改为存储类,以在预定集群中完成对镜像仓库的安装部署。本申请解决了相关技术中,在部署私有镜像仓库的过程中,往往需要重复性的在集群中的多个节点部署安装,且需要人工手动进行部署配置,部署过程自动化程度,部署效率低下的技术问题。
Description
技术领域
本申请涉及镜像仓库部署领域,具体而言,涉及一种创建镜像仓库的方法、装置、存储介质以及电子设备。
背景技术
容器技术以应用容器引擎Docker为代表,近年来随着容器编排技术Kubernetes(即k8s)的兴起以及基于k8s制定了容器运行时的接口规范,但Docker技术仍有许多用户群体。镜像仓库用于存放Docker容器镜像,Docker默认访问的远端镜像仓库是Docker Hub。在远端镜像仓库中可以找到许多开源项目或软件的镜像,在远端镜像仓库中可以进行下载,在创建项目时要创建相应的镜像。
在创建镜像仓库的时候,采用Docker提供的公共镜像仓库,易造成项目数据存在遗失或泄露的风险,基于网络情况、公司资产的安全性以及效率等方面考虑,将项目部署在公共镜像仓库中无法确保项目数据在公司内部网络中进行管控,因此部署私有环境内的镜像仓库非常必要,私有镜像仓库可以将镜像全部保存在公司内部网络中确保各种数据的安全。
相关技术中,在部署私有镜像仓库的过程中,往往需要重复性在集群中的多个节点部署安装,需要人工手动进行部署配置,部署过程自动化程度较低,部署效率低下。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种创建镜像仓库的方法、装置、存储介质以及电子设备,以至少解决相关技术中,在部署私有镜像仓库的过程中,往往需要重复性的在集群中的多个节点部署安装,且需要人工手动进行部署配置,部署过程自动化程度,部署效率低下的技术问题。
根据本申请实施例的一个方面,提供了一种创建镜像仓库的方法,包括:在预定集群中创建用于部署镜像仓库的命名空间,其中,预定集群至少包括一组用于运行容器化应用的节点计算机,镜像仓库至少用于存储容器镜像;在预定集群创建预定分布式存储引擎对应的存储类,并获取镜像仓库对应的安装文件;将安装文件安装至命名空间,将安装文件中的配置文件修改为存储类,以在预定集群中完成对镜像仓库的安装部署,其中,在完成安装部署后,确定镜像仓库对外提供服务。
可选地,确定镜像仓库对外提供服务,包括:确定镜像仓库的对外访问地址为预定集群的虚拟IP地址,其中,虚拟IP地址由预定集群中任意一个控制节点生成。
可选地,预定集群包括多个第一数量的控制节点,以及第二数量的工作负载节点,控制节点与工作负载节点均设置有至少一个计算单元。
可选地,在确定镜像仓库以预定方式对外提供服务之后,方法还包括:确定预定集群中部署有镜像仓库的工作负载节点为目标待检测节点;间隔预定周期检测目标待检测节点是否发生故障;在确定目标待检测节点发生故障的情况下,通过任意一个控制节点将目标待检测节点的工作负载转移至除目标待检测节点之外的其他工作负载节点,并在其他工作负载节点生成镜像仓库的数据。
可选地,在其他工作负载节点生成镜像仓库的数据,包括:获取历史时段目标待检测节点存储的镜像仓库的历史数据,将目标待检测节点存储的历史数据,通过预定分布式存储引擎将历史数据复制至其他工作负载节点;或者获取历史时段中镜像仓库的副本,通过预定分布式存储引擎将副本复制至其他工作负载节点。
可选地,在其他工作负载节点生成镜像仓库的数据,包括:获取历史时段中镜像仓库存储的容器镜像的标识,确定标识对应的容器,生成容器对应的镜像数据,通过预定分布式存储引擎将镜像数据从容器复制至其他工作负载节点。
可选地,预定集群包括:kubernetes,镜像仓库包括:Harbor仓库,预定分布式存储引擎包括:OpenEBS,镜像仓库对外提供服务的方式包括以下之一:NodePort、Ingress以及ClusterIP。
根据本申请实施例的另一方面,还提供了一种创建镜像仓库的装置,包括:第一创建模块,用于在预定集群中创建用于部署镜像仓库的命名空间,其中,预定集群至少包括一组用于运行容器化应用的节点计算机,镜像仓库至少用于存储容器镜像;第二创建模块,用于在预定集群创建预定分布式存储引擎对应的存储类,并获取镜像仓库对应的安装文件;部署模块,用于将安装文件安装至命名空间,将安装文件中的配置文件修改为存储类,以在预定集群中完成对镜像仓库的安装部署,其中,在完成安装部署后,确定镜像仓库对外提供服务。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,包括:存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行任意一项创建镜像仓库的方法。
根据本申请实施例的另一方面,还提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现任意一项创建镜像仓库的方法。
在本申请实施例中,借助k8s集群和分布式存储引擎实现了对镜像仓库的安装部署,通过在预定集群中创建用于部署镜像仓库的命名空间;在预定集群创建预定分布式存储引擎对应的存储类,并获取镜像仓库对应的安装文件;将安装文件安装至命名空间,将安装文件中的配置文件修改为存储类,以在预定集群中完成对镜像仓库的安装部署,达到了利用k8s的调度功能和OpenEBS-cStor副本数据复制功能实现Harbor镜像仓库的高可用的目的,从而实现了不需要在多个节点上部署Harbor集群,无需考虑集群之间交互所产生的诸多问题,提高运维自动化的程度,降低人工运维成本的技术效果,进而解决了相关技术中,在部署私有镜像仓库的过程中,往往需要重复性的在集群中的多个节点部署安装,且需要人工手动进行部署配置,部署过程自动化程度,部署效率低下的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种创建镜像仓库方法的流程示意图;
图2是根据本申请实施例的一种k8s高可用集群的结构示意图;
图3是根据本申请实施例的OpenEBS-cStor分布式云原生存储引擎的结构示意图;
图4是根据本申请实施例的一种k8s高可用集群与OpenEBS-cStor存储引擎关系的示意图;
图5是根据本申请实施例的一种创建镜像仓库的装置结构示意图;
图6是根据本申请实施例的一种示例电子设备600的示意性框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于本领域技术人员更好的理解,本申请相关实施例,现对本申请可能涉及的技术术语或者部分名词进行解释:
Kubernetes是基于Docker的开源容器集群管理系统,简称k8s,其目的是让使用者透过Kubernetes集群来进行云端容器集群的管理,而无需再进行复杂的设置。系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作。一个调度单元Pod由一组工作于同一物理工作节点的容器构成。这些组容器拥有相同的网络命名空间、IP以及存储配额,也可以根据实际情况对每一个调度单元Pod进行端口映射。Kubernetes的工作节点会由主系统进行管理,节点包含了能够运行Docker容器所用到的服务,其中,Pod是可以在Kubernetes中创建和管理的、最小的可部署的计算单元。
OpenEBS是Kubernetes上有状态应用程序的云原生存储,遵循松散耦合的体系结构。由于OpenEBS遵循CAS架构,在节点故障时,Kubernetes将重新调度OpenEBS控制器,而底层数据则通过使用一个或多个副本来保护。每个工作负载都可以利用对应的OpenEBS,因此不存在因存储丢失而导致系统大范围宕机的风险。OpenEBS管理k8s节点上的存储,并为k8s有状态负载(StatefulSet)提供本地存储卷或分布式存储卷。
OpenEBS-cStor是一种分布式存储卷,具有高性能的iSCSI target和Copy-On-Write块系统,提供数据完整性、数据弹性和时间点的快照和克隆。cStor有一个池特性,它以条带、镜像或RAIDZ模式聚合一个节点上的磁盘,以提供更大的容量和性能单位。cStor还可以跨区域将数据同步复制到多个节点,从而避免节点丢失或节点重启导致数据不可用。
容器镜像(简称镜像),容器包含了组成应用的文件和组件,然后可倍增以快速实现横向扩展,或者根据需要移动至其他系统,而容器镜像就是容器的一个副本。创建容器镜像后会形成一种模板,随后就可以用该模板来创建应用或者扩展现有应用。使用容器镜像时,需要一个位置来保存和访问创建的镜像,这正是容器镜像仓库的作用。除了容器镜像,镜像仓库还存储有应用编程接口路径和访问控制参数。
根据本申请实施例,提供了一种创建镜像仓库的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的一种创建镜像仓库的方法,如图1所示,该方法包括如下步骤:
步骤S102,在预定集群中创建用于部署镜像仓库的命名空间,其中,预定集群至少包括一组用于运行容器化应用的节点计算机,镜像仓库至少用于存储容器镜像;
需要说明的是,预定集群可以为k8s高可用集群,镜像仓库可以为Harbor镜像仓库,可以理解的,镜像仓库还可以除了Harbor镜像仓库之外的其他私有镜像仓库。
步骤S104,在预定集群创建预定分布式存储引擎对应的存储类,并获取镜像仓库对应的安装文件;
可选地,预定分布式存储引擎可以为OpenEBS-cStor分布式云原生存储引擎,在预定分布式存储引擎为OpenEBS-cStor分布式云原生存储引擎的情况下,上述存储类为StorageClass,需要说明的是,StorageClass可以通过指定注释openebs来选择存储引擎,且StorageClass规范中的io/cas-type。StorageClass定义了提供程序的细节,并可为每个CAS引擎指定单独的供应程序。
步骤S106,将安装文件安装至命名空间,将安装文件中的配置文件修改为存储类,以在预定集群中完成对镜像仓库的安装部署,其中,在完成安装部署后,确定镜像仓库对外提供服务。
在本申请实施例中,借助k8s集群和分布式存储引擎实现了对镜像仓库的安装部署,通过在预定集群中创建用于部署镜像仓库的命名空间;在预定集群创建预定分布式存储引擎对应的存储类,并获取镜像仓库对应的安装文件;将安装文件安装至命名空间,将安装文件中的配置文件修改为存储类,以在预定集群中完成对镜像仓库的安装部署,达到了利用k8s的调度功能和OpenEBS-cStor副本数据复制功能实现Harbor镜像仓库的高可用的目的,从而实现了不需要在多个节点上部署Harbor集群,无需考虑集群之间交互所产生的一系列问题,提高运维自动化的程度,降低了人工运维成本的技术效果,进而解决了相关技术中,在部署私有镜像仓库的过程中,往往需要重复性的在集群中的多个节点部署安装,且需要人工手动进行部署配置,部署过程自动化程度,部署效率低下技术问题。
本申请一些可选的实施例中,确定镜像仓库对外提供服务,包括:确定镜像仓库的对外访问地址为预定集群的虚拟IP地址(简称VIP),其中,虚拟IP地址由预定集群中任意一个控制节点生成。需要说明的是,该VIP可以在控制节点上提供一个Kubernetes原生的HA负载均衡,以此便不需要再在外部设置HAProxy和Keepalived来实现集群的高可用了,可以理解的,该VIP对应的控制节点可将负载均衡至其他控制节点。
本申请一些可选的实施例中,预定集群包括多个第一数量的控制节点,以及第二数量的工作负载节点,控制节点与工作负载节点均设置有至少一个计算单元。需要说明的是,本申请对控制节点的第一数量,与工作负载节点的第二数量不作限定,两者可根据实际情况设置,但需要说明的是,在预定集群为k8s的情况下,为了防止资源浪费,上述控制节点的第一数量应设置为奇数,之所以设置为奇数是因为对于k8s而言,其要求只有当超过的一半的节点处于正常状态,其才可以对外提供服务,例如,有n个控制节点,则必须大于n/2的控制节点处于正常状态才可以对外提供服务。举例而言,对于3个控制点或者4个控制节点而言,其都是最多只能由一个节点异常,即只有一个节点的容错率。因此,可将控制节点的第一数量应设置为奇数,以避免浪费资源。
作为一种可选的实施方式,在确定镜像仓库以预定方式对外提供服务之后,为了保证对外服务的稳定性:可确定预定集群中部署有镜像仓库的工作负载节点为目标待检测节点,并间隔预定周期检测目标待检测节点是否发生故障,然后在确定目标待检测节点发生故障的情况下,通过任意一个控制节点将目标待检测节点的工作负载转移至除目标待检测节点之外的其他工作负载节点,并在其他工作负载节点生成镜像仓库的数据。
本申请一示例性实施例中,在其他工作负载节点生成镜像仓库的数据,可以通过如下方式实现:第一种、获取历史时段目标待检测节点存储的镜像仓库的历史数据,将目标待检测节点存储的历史数据,通过预定分布式存储引擎将历史数据复制至其他工作负载节点;第二种、获取历史时段中镜像仓库的副本,通过预定分布式存储引擎将副本复制至其他工作负载节点。即当镜像仓库发生故障,例如,宕机的情况下,可以通过分布式存储引擎,对镜像仓库进行复制迁移,将镜像仓库中的数据迁移至其他节点。容易注意到的,本申请上述实施例中的两种迁移方式存在一定的区别,对于第一种迁移方式而言,其复制迁移的是镜像仓库本身的数据,第二种迁移方式则是对镜像仓库副本的迁移。
可以理解的是,镜像仓库发生故障,至少存在两种可能性,第一种是镜像仓库自身发生了故障,第二种,则是镜像仓库所在的节点发生了故障(即部署该镜像仓库所在的节点发生了故障,例如,k8s中的工作节点),而对于镜像仓库自身发生了故障这种情况而言,由于镜像仓库很很有可能已经无法启动或者正常动作,因此,可优先使用上述第二种迁移方式,同理,在确定镜像仓库所在的节点发生了故障的情况下,可优先使用第一种迁移方式,由于第一种迁移方式,其复制迁移的是镜像仓库本身的数据,实时性较高,因此,可以尽可能还原镜像仓库中的历史数据。
对于复制迁移镜像仓库而言,作为另一种可选的实施方式,其还可以通过如下方式实现,第三种、获取历史时段中镜像仓库存储的容器镜像的标识,确定标识对应的容器,生成容器对应的镜像数据,通过预定分布式存储引擎将镜像数据从容器复制至其他工作负载节点。可以理解的,由于镜像仓库中存储的是容器镜像中的数据,因此,本申请可以通过确定镜像仓库对应的容器,将该容器中的数据进行复制迁移。
可以理解的,对于上述三种不同的复制迁移方式而言,在确定镜像仓库所在的节点发生了故障的情况下,不仅需要对镜像仓库中的数据进行复制迁移,而且需要将该镜像仓库,重新部署至集群中其他的健康节点。
举例而言,当k8s高可用集群中负责Harbor镜像存储的节点宕机后,k8s高可用集群会自动调度Harbor相关调度单元pod至新的健康节点,同时OpenEBS-cStor会在新的节点上生成镜像仓库的数据。
本申请一些可选的实施例中,预定集群包括:kubernetes,镜像仓库包括:Harbor仓库,预定分布式存储引擎包括:OpenEBS,镜像仓库对外提供服务的方式包括以下之一:NodePort、Ingress以及ClusterIP。
容易注意到的是,在预定集群为k8s高可用集群,镜像仓库为Harbor镜像仓库以及预定分布式存储引擎为OpenEBS-cStor分布式云原生存储引擎的情况下,本申请的部署架构可以分为三部分:k8s高可用集群、OpenEBS-cStor分布式云原生存储引擎以及高可用Harbor镜像仓库,其中,OpenEBS-cStor分布式云原生存储引擎依赖于k8s高可用集群,高可用Harbor镜像仓库依赖于k8s高可用集群和OpenEBS-cStor分布式云原生存储引擎。
图2是本申请实施例的一种k8s高可用集群的结构示意图,如图2所示,该k8s高可用集群,包括三个控制节点和两个工作节点。
需要说明的是,k8s高可用集群在部分控制节点或工作节点宕机后,整个集群依然可以正常运行工作;且通过可以在控制节点漂移的VIP提供统一的访问入口,另外,
在Harbor的部署安装过程中,需要依赖此VIP实现负载均衡,在Harbor后续使用过程中,也要依赖此VIP实现对外服务;正如上述实施例所述,K8s高可用集群为OpenEBS和Harbor提供了基础的环境,因此OpenEBS和Harbor均是在k8s高可用集群的基础上部署和运作。
图3是本申请实施例的OpenEBS-cStor分布式云原生存储引擎的结构示意图,如图3所示,一个有状态的应用程序,可在k8s高可用集群中部署为三副本的OpenEBS cStor存储卷,数据可同步写入三个副本卷。
需要说明的是,OpenEBS-cStor分布式存储引擎主要包含两个组件:cStorPool和cStor Target。其中,cStorPool用于将数据持久化到磁盘中,cStor Target负责从应用程序中接收数据然后将数据传给cStorPool,且cStorTarget可以同步副本间数据以及管理副本数量。
图4是本申请实施例中的k8s高可用集群与OpenEBS-cStor存储引擎关系的示意图,如图4所示,该示意图包括:一个三节点的k8s高可用集群,其中,每个节点上可以有8组磁盘,共24组磁盘,以lvm的方式进行管理。OpenEBS-cStorPool由分布在三个节点上的实例组成,cStor存储卷的副本数可以自定义,OpenEBS-cStor存储引擎根据一定的算法将副本卷分配到cStorpool的实例中。
举例而言,App1由三个位于pool1实例上的cStor副本卷和1个iSCSITarget组成,App2则是由一个位于pool1实例上的cStor副本卷和1个iSCSITarget组成,其中,Pool1分布在三个节点上,有3个实例组成,每个pool实例由8组磁盘组成,8组磁盘可以以类似磁盘阵列的方式组成pool实例。
结合上述实施例可知,在高可用的k8s集群和分布式云原生存储引擎OpenEBScStor的基础上部署高可用的镜像存储仓库Harbor可通过如下步骤实现:
(1)创建k8s高可用集群中用于部署Harbor的命名空间,例如:devops;需要说明的是,上述k8s集群的每个节点上磁盘的组织方式为lvm,且由于cStor要求的BlockDevice是原始(未格式化)块设备,因此在创建上述命名空间之前,可初始化一定大小的逻辑卷lv,并可在集群中的各个节点安装iscsi utils。
(2)创建基于OpenEBS-cStor的StorageClass,将Harbor的资源清单文件中的StorageClass指定为步骤一中创建的OpenEBS-cStor StorageClass的名称;
需要说明的是,对于创建基于OpenEBS-cStor的StorageClass而言,需要配置OpenEBScStor的yaml文件,然后可使用kubectlapply命令在k8s集群中安装OpenEBScStor,在安装完成后,k8s集群相应的命名空间中会出现BlockDevice资源。
然后,创建OpenEBS中自定义的k8s资源类型CStorPoolCluster,指定k8s集群节点上的设备信息为前述步骤中创建的BlockDevice信息创建cStor storage pools,最后,使用cstorPoolCluster创建OpenEBScStor类型的StorageClass。可以理解的,在创建了StorageClass之后,Harbor便可以指定使用cStor类型的StorageClass,并进一步创建k8s中的PVC和PV,用于Harbo中的数据进行存储。
(3)指定Harbor以NodePort的方式对外提供服务,其中,external URL使用k8s高可用集群的VIP。可选地,Harbor中可指定Replicas数量为1。另外正如上文所述,除了NodePort的方式之外,也可以通过ingress、clusterIP等其他方式对外提供服务,本申请相关实施例中,对Harbor的服务暴露方式不作具体限定,可以根据实际情况选择。
容易注意到的,本申请相关实施例中通过创建私有镜像仓库的方式,可以在在k8s高可用集群中节点发生故障后,能够利用k8s的调度功能和OpenEBS-cStor副本数据是复制功能实现Harbor镜像仓库的高可用,且无需在多个节点上部署Harbor集群,省去了集群间交互所带来的问题,提高了运维自动化的程度,减少了人工运维的成本。
图5是根据本申请实施例的一种创建镜像仓库的装置结构示意图,如图5所示,该装置包括:
第一创建模块50,用于在预定集群中创建用于部署镜像仓库的命名空间,其中,预定集群至少包括一组用于运行容器化应用的节点计算机,镜像仓库至少用于存储容器镜像;
第二创建模块52,用于在预定集群创建预定分布式存储引擎对应的存储类,并获取镜像仓库对应的安装文件;
部署模块54,用于将安装文件安装至命名空间,将安装文件中的配置文件修改为存储类,以在预定集群中完成对镜像仓库的安装部署,其中,在完成安装部署后,确定镜像仓库对外提供服务。
该装置中,第一创建模块50,用于在预定集群中创建用于部署镜像仓库的命名空间,其中,预定集群至少包括一组用于运行容器化应用的节点计算机,镜像仓库至少用于存储容器镜像;第二创建模块52,用于在预定集群创建预定分布式存储引擎对应的存储类,并获取镜像仓库对应的安装文件;部署模块54,用于将安装文件安装至命名空间,将安装文件中的配置文件修改为存储类,以在预定集群中完成对镜像仓库的安装部署,其中,在完成安装部署后,确定镜像仓库对外提供服务,达到了利用k8s的调度功能和OpenEBS-cStor副本数据复制功能实现Harbor镜像仓库的高可用的目的,从而实现了不需要在多个节点上部署Harbor集群,省去了集群之间交互所产生的问题,提高了运维自动化的程度,降低了人工运维成本的技术效果,进而解决了相关技术中,在部署私有镜像仓库的过程中,往往需要重复性的在集群中的多个节点部署安装,且需要人工手动进行部署配置,部署过程自动化程度,部署效率低下技术问题。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行任意一项创建镜像仓库的方法。
具体地,上述存储介质用于存储以下功能的程序指令,实现以下功能:
在预定集群中创建用于部署镜像仓库的命名空间;在预定集群创建预定分布式存储引擎对应的存储类,并获取镜像仓库对应的安装文件;将安装文件安装至命名空间,将安装文件中的配置文件修改为存储类,以在预定集群中完成对镜像仓库的安装部署。
可选地,在本实施例中,上述存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。上述存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
在本申请一示例性实施例中,还提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现上述任一项创建镜像仓库的方法。
可选地,该计算机程序在被处理器执行时可实现如下步骤:
在预定集群中创建用于部署镜像仓库的命名空间;在预定集群创建预定分布式存储引擎对应的存储类,并获取镜像仓库对应的安装文件;将安装文件安装至命名空间,将安装文件中的配置文件修改为存储类,以在预定集群中完成对镜像仓库的安装部署。
根据本申请的实施例提供了一种电子设备,该电子设备包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述任一项创建镜像仓库的方法。
可选地,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入设备输出设备和上述处理器连接。
图6是根据本申请实施例的一种示例电子设备600的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图6所示,设备600包括计算单元601,其可以根据存储在只读存储器(ROM)602中的计算机程序或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。计算单元601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元601可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元601的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元601执行上文所描述的各个方法和处理,例如创建镜像仓库的方法。例如,在一些实施例中,创建镜像仓库的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由计算单元601执行时,可以执行上文描述的创建镜像仓库的方法的一个或多个步骤。备选地,在其他实施例中,计算单元601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行创建镜像仓库的方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种创建镜像仓库的方法,其特征在于,包括:
在预定集群中创建用于部署镜像仓库的命名空间,其中,所述预定集群至少包括一组用于运行容器化应用的节点计算机,所述镜像仓库至少用于存储容器镜像;
在所述预定集群创建预定分布式存储引擎对应的存储类,并获取所述镜像仓库对应的安装文件;
将所述安装文件安装至所述命名空间,将所述安装文件中的配置文件修改为所述存储类,以在所述预定集群中完成对所述镜像仓库的安装部署,其中,在完成安装部署后,确定所述镜像仓库对外提供服务。
2.根据权利要求1所述的方法,其特征在于,确定所述镜像仓库对外提供服务,包括:
确定所述镜像仓库的对外访问地址为所述预定集群的虚拟IP地址,其中,所述虚拟IP地址由所述预定集群中任意一个控制节点生成。
3.根据权利要求2所述的方法,其特征在于,所述预定集群包括多个第一数量的所述控制节点,以及第二数量的工作负载节点,所述控制节点与所述工作负载节点均设置有至少一个计算单元。
4.根据权利要求3所述的方法,其特征在于,在确定所述镜像仓库以预定方式对外提供服务之后,所述方法还包括:
确定所述预定集群中部署有所述镜像仓库的工作负载节点为目标待检测节点;
间隔预定周期检测所述目标待检测节点是否发生故障;
在确定所述目标待检测节点发生故障的情况下,通过任意一个所述控制节点将所述目标待检测节点的工作负载转移至除所述目标待检测节点之外的其他工作负载节点,并在所述其他工作负载节点生成所述镜像仓库的数据。
5.根据权利要求4所述的方法,其特征在于,在所述其他工作负载节点生成所述镜像仓库的数据,包括:
获取历史时段所述目标待检测节点存储的所述镜像仓库的历史数据,将所述目标待检测节点存储的所述历史数据,通过所述预定分布式存储引擎将所述历史数据复制至所述其他工作负载节点;或者
获取所述历史时段中所述镜像仓库的副本,通过所述预定分布式存储引擎将所述副本复制至所述其他工作负载节点。
6.根据权利要求4所述的方法,其特征在于,在所述其他工作负载节点生成所述镜像仓库的数据,包括:
获取历史时段中所述镜像仓库存储的容器镜像的标识,确定所述标识对应的容器,生成所述容器对应的镜像数据,通过所述预定分布式存储引擎将所述镜像数据从所述容器复制至所述其他工作负载节点。
7.根据权利要求2至权利要求6中任意一项所述的方法,其特征在于,所述预定集群包括:kubernetes,所述镜像仓库包括:Harbor仓库,所述预定分布式存储引擎包括:OpenEBS,所述镜像仓库对外提供服务的方式包括以下之一:NodePort、Ingress以及ClusterIP。
8.一种创建镜像仓库的装置,其特征在于,包括:
第一创建模块,用于在预定集群中创建用于部署镜像仓库的命名空间,其中,所述预定集群至少包括一组用于运行容器化应用的节点计算机,所述镜像仓库至少用于存储容器镜像;
第二创建模块,用于在所述预定集群创建预定分布式存储引擎对应的存储类,并获取所述镜像仓库对应的安装文件;
部署模块,用于将所述安装文件安装至所述命名空间,将所述安装文件中的配置文件修改为所述存储类,以在所述预定集群中完成对所述镜像仓库的安装部署,其中,在完成安装部署后,确定所述镜像仓库对外提供服务。
9.一种非易失性存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至7中任意一项所述创建镜像仓库的方法。
10.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的创建镜像仓库的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310080219.6A CN116089011A (zh) | 2023-01-19 | 2023-01-19 | 创建镜像仓库的方法、装置、存储介质以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310080219.6A CN116089011A (zh) | 2023-01-19 | 2023-01-19 | 创建镜像仓库的方法、装置、存储介质以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116089011A true CN116089011A (zh) | 2023-05-09 |
Family
ID=86213731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310080219.6A Pending CN116089011A (zh) | 2023-01-19 | 2023-01-19 | 创建镜像仓库的方法、装置、存储介质以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116089011A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117081959A (zh) * | 2023-10-17 | 2023-11-17 | 明阳产业技术研究院(沈阳)有限公司 | 一种网络连通性监测与恢复方法、系统、介质及设备 |
CN117369952A (zh) * | 2023-12-08 | 2024-01-09 | 中电云计算技术有限公司 | 集群的处理方法、装置、设备及存储介质 |
CN117519912A (zh) * | 2024-01-04 | 2024-02-06 | 之江实验室 | 一种镜像仓库部署的方法、装置、存储介质、设备 |
-
2023
- 2023-01-19 CN CN202310080219.6A patent/CN116089011A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117081959A (zh) * | 2023-10-17 | 2023-11-17 | 明阳产业技术研究院(沈阳)有限公司 | 一种网络连通性监测与恢复方法、系统、介质及设备 |
CN117081959B (zh) * | 2023-10-17 | 2023-12-22 | 明阳产业技术研究院(沈阳)有限公司 | 一种网络连通性监测与恢复方法、系统、介质及设备 |
CN117369952A (zh) * | 2023-12-08 | 2024-01-09 | 中电云计算技术有限公司 | 集群的处理方法、装置、设备及存储介质 |
CN117369952B (zh) * | 2023-12-08 | 2024-03-15 | 中电云计算技术有限公司 | 集群的处理方法、装置、设备及存储介质 |
CN117519912A (zh) * | 2024-01-04 | 2024-02-06 | 之江实验室 | 一种镜像仓库部署的方法、装置、存储介质、设备 |
CN117519912B (zh) * | 2024-01-04 | 2024-04-05 | 之江实验室 | 一种镜像仓库部署的方法、装置、存储介质、设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062655B (zh) | 一种容器化云平台及服务器 | |
US10055300B2 (en) | Disk group based backup | |
CN116089011A (zh) | 创建镜像仓库的方法、装置、存储介质以及电子设备 | |
US8539087B2 (en) | System and method to define, visualize and manage a composite service group in a high-availability disaster recovery environment | |
US9871851B2 (en) | Migrating private infrastructure services to a cloud | |
US9465697B2 (en) | Provision of backup functionalities in cloud computing systems | |
CN112099918A (zh) | 容器化环境中的集群的实时迁移 | |
CN108270726B (zh) | 应用实例部署方法及装置 | |
EP2802990B1 (en) | Fault tolerance for complex distributed computing operations | |
US20130091376A1 (en) | Self-repairing database system | |
CN111026414B (zh) | 一种基于kubernetes的HDP平台部署方法 | |
CN104737133A (zh) | 使用服务组的分布式应用优化 | |
CN104272292A (zh) | 用于基于云的服务的网络资源部署 | |
US10223218B2 (en) | Disaster recovery of managed systems | |
CN113204353B (zh) | 一种大数据平台组件部署方法及装置 | |
CN111343219B (zh) | 计算服务云平台 | |
US11900173B2 (en) | Container runtime optimization | |
US10831621B2 (en) | Policy-driven high availability standby servers | |
US11675931B2 (en) | Creating vendor-neutral data protection operations for vendors' application resources | |
CN101876920A (zh) | 在虚拟平台上实现虚拟机移转的方法 | |
US11675678B1 (en) | Managing storage domains, service tiers, and failed service tiers | |
CN112241293A (zh) | 工业互联网云平台的应用管理方法、装置、设备及介质 | |
US11663096B1 (en) | Managing storage domains, service tiers and failed storage domain | |
US20230305876A1 (en) | Managing storage domains, service tiers, and failed servers | |
CN115098259A (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 |