CN117827363A - 一种容器创建方法、系统及节点 - Google Patents
一种容器创建方法、系统及节点 Download PDFInfo
- Publication number
- CN117827363A CN117827363A CN202211205094.7A CN202211205094A CN117827363A CN 117827363 A CN117827363 A CN 117827363A CN 202211205094 A CN202211205094 A CN 202211205094A CN 117827363 A CN117827363 A CN 117827363A
- Authority
- CN
- China
- Prior art keywords
- node
- file
- file system
- image
- container
- 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
- 238000000034 method Methods 0.000 title claims abstract description 86
- 230000015654 memory Effects 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 12
- 230000002085 persistent effect Effects 0.000 claims description 6
- 229920000915 polyvinyl chloride Polymers 0.000 description 61
- 230000006870 function Effects 0.000 description 27
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000006837 decompression Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 206010047289 Ventricular extrasystoles Diseases 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 229920000457 chlorinated polyvinyl chloride Polymers 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
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
技术领域
本申请涉及存储技术领域,尤其涉及一种容器创建方法、系统及节点。
背景技术
容器是基于镜像(image)文件创建,镜像文件提供容器运行时所需的程序、库、资源、配置参数等文件。
节点需要创建容器时,每个节点均需要从镜像仓库中拉取镜像文件,并将该镜像文件写入到该节点中镜像文件的目录下。该节点中镜像文件的目录描述了该镜像文件在该节点中的存储位置。通常该节点中镜像文件的目录所指示的存储位置位于该节点的本地存储设备中。该节点的本地存储设备是指节点中的硬盘等存储设备。
由于每个节点均需要执行一次从镜像仓库中拉取镜像文件的操作,会造成该镜像仓库的压力。另外,镜像文件直接保存在节点的本地存储设备中,会占用节点自身的存储空间,压缩了节点自身的存储空间。
发明内容
本申请提供一种容器创建方法、系统及节点,用以减少容器创建过程中对节点本地存储空间的占用。
第一方面,本申请实施例提供了一种容器创建方法,在该方法中,第一节点能够在创建容器之前,将容器的镜像文件的目录挂载到远端存储设备上的第一文件系统,建立镜像文件的目录与第一文件系统的关联,这样第一节点写入到镜像文件的目录下的镜像文件会存储在第一文件系统中。其中,该远端存储设备为独立于第一节点的存储设备。该远端存储设备是第一节点之外的存储设备,例如,该远端存储设备可以与该第一节点通过网络连接。
第一节点在需要创建容器时,可以先从第一文件系统获取镜像文件,基于镜像文件在第一节点上创建容器。该第一节点对应于本申请实施例中的节点110N。
通过上述方法,第一节点的镜像文件的目录能够挂载到远端存储设备上的第一文件系统,这样镜像文件可以保存在远端存储设备上,能够减少镜像文件对第一节点的本地存储空间的占用。
在一种可能的实施方式中,与第一节点类似,第二节点也可以将容器的镜像文件的目录挂载到第一文件系统。这里以第二节点为首个将镜像文件存储到第一文件系统的节点为例进行说明。第二节点从镜像仓库中获取镜像文件,将镜像文件存储第一文件系统。该第二节点对应于本申请实施例中的节点110M。
通过上述方法,第二节点从镜像仓库拉取镜像文件,并将镜像文件写入到第一文件系统中,这样第一节点在需要创建容器时,无需再从镜像仓库拉取镜像文件,仅需要从第一文件系统获取该镜像文件即可,减少了需部署容器的节点从镜像仓库拉取镜像文件的次数,实现镜像文件在多个节点之间的共享。
在一种可能的实施方式中,第二节点在需要创建容器时,从第一文件系统获取镜像文件,基于镜像文件在第二节点上创建容器。
通过上述方法,第二节点在创建容器时,也可以从第一文件系统中获取镜像文件,进一步保证了该镜像文件在第一节点以及第二节点之间的共享。
在一种可能的实施方式中,第二节点将镜像文件存储在第一文件系统时,第二节点可以将镜像文件中的增量数据存储在第一文件系统中,增量数据为第一文件系统中已存储的其他镜像文件与镜像文件不同的数据。
通过上述方法,第二节点无需将完整的镜像文件保存在第一文件系统中,仅需要在第一文件系统中保存一些未保存的数据,减少对远端存储设备中存储空间的占用,减少第二节点与第一文件系统之间需要交互的数据量。
在一种可能的实施方式中,第二节点从镜像仓库中获取的镜像文件时,可以从镜像仓库中获取的镜像文件中的增量数据,增量数据为第一文件系统中已存储的其他镜像文件与镜像文件不同的数据。
通过上述方法,第二节点与镜像仓库之间仅需交互镜像文件的增量数据,能够有效减少第二节点与镜像仓库之间的传输的数据量,提升镜像文件的拉取速度。
在一种可能的实施方式中,第一节点与第二节点可以位于不同的数据中心,第一节点与第二节点也可以位于同一数据中心。
通过上述方法,第一节点与第二节点的部署方式较为灵活,适用于不同的场景。
在一种可能的实施方式中,对于远端存储设备与第一节点的部署位置,远端存储设备与第一节点可以位于同一数据中心。远端存储设备与第一节点也可以位于不同的数据中心。类似的,对于远端存储设备与第二节点的部署位置,远端存储设备与第二节点可以位于同一数据中心。远端存储设备与第二节点也可以位于不同的数据中心。
通过上述方法,远端存储设备、第一节点、以及第二节点的部署方式较为灵活,适用于不同的场景。
在一种可能的实施方式中,第一节点从第一文件系统,获取镜像文件时,可以将与第一文件系统之间的交互操作卸载到第一节点的DPU上。也就是说,第一节点的DPU可以实现对第一文件系统的访问。例如,第一节点中DPU从第一文件系统获取镜像文件。
通过上述方法,第一节点中的DPU可以访问第一文件系统,减少第一文件系统的访问对第一节点中处理器的占用。
在一种可能的实施方式中,除了将镜像文件的目录挂载到远端存储设备的第一文件系统,第一节点也可以将容器的其他文件的目录挂载在其他远端存储设备的文件系统上。第一节点也可以将容器的其他文件的目录挂载在该远端存储设备的其他文件系统上。也就是说,容器的不同文件的目录可以挂载到不同的文件系统上,这些不同的文件系统可以在相同的远端存储设备上,也可以在不同的远端设备上。例如,第一节点将容器的根文件的目录挂载到独立于第一节点的存储设备上的第二文件系统。这里的存储设备可以与第一文件系统所在的远端存储设备是同一个设备,也可以是不同的设备。又例如,第一节点将容器的持续化卷PVC的目录挂载到独立于第一节点的存储设备上的第三文件系统。这里的存储设备可以与第一文件系统所在的远端存储设备是同一个设备,也可以是不同的设备。
通过上述方法,第一节点将容器的其他文件的目录挂载在远端存储设备的文件系统上,使得容器的其他文件也可以保存在文件系统上,进一步减少对第一节点本地存储空间的占用。
在一种可能的实施方式中,第一节点将容器的其他文件的目录挂载在远端存储设备的文件系统的情况下,第一节点的DPU可以用于访问容器的其他文件的目录所挂载在的文件系统,例如,第一节点的DPU可以访问第二文件系统以及第三文件系统。
通过上述方法,第一节点中的DPU实现对远端存储设备的访问,以实现容器其他文件的读写,进一步减少容器其他文件的读写操作对第一节点中处理器的占用。
在一种可能的实施方式中,第二节点从镜像仓库中获取的镜像文件,将镜像文件存储第一文件系统时,第二节点从镜像仓库中获取的压缩后的镜像文件。第二节点对压缩后的镜像文件进行解压,将解压获得的镜像文件存储在第一文件系统。
通过上述方法,第二节点可以实现镜像文件的解压缩,便于后续在创建容器时,能够直接从第一文件系统读取解压缩后的镜像文件,提升容器创建效率。
第二方面,本申请实施例提供了一种容器创建系统,有益效果可以参见第一方面的相关描述,此处不再赘述。该容器创建系统中包括第一远端存设备以及第一节点。第一远端存储设备为独立于第一节点的存储设备。
第一远端存储设备上部署有第一文件系统。第一节点在需要创建容器时,可以将容器的镜像文件的目录挂载到第一文件系统,从第一文件系统获取镜像文件,基于镜像文件在第一节点上创建容器。
在一种可能的实施方式中,该系统还包括第二节点以及镜像仓库。
镜像仓库保存有镜像文件。第二节点可以将容器的镜像文件的目录挂载到第一文件系统,还可以从镜像仓库中获取的镜像文件,将镜像文件存储在第一文件系统。
在一种可能的实施方式中,第二节点还可以从第一文件系统获取镜像文件,基于镜像文件创建容器。
在一种可能的实施方式中,第二节点在将镜像文件存储第一文件系统时,可以将镜像文件中的增量数据存储在第一文件系统中,增量数据为第一文件系统中已存储的其他镜像文件与镜像文件不同的数据。
在一种可能的实施方式中,镜像仓库可以向第二节点发送该镜像文件中的增量数据,第二节点可以获取镜像文件中的增量数据,增量数据为第一文件系统中已存储的其他镜像文件与镜像文件不同的数据。
在一种可能的实施方式中,第一节点与第二节点可以位于不同的数据中心,也可以位于同一数据中心。
在一种可能的实施方式中,第一远端存储设备与第一节点或第二节点可以位于同一数据中心。第一远端存储设备与第一节点或第二节点也可以位于不同的数据中心。
在一种可能的实施方式中,第一节点可以将第一文件系统的访问操作卸载到DPU上,例如,第一节点从第一文件系统,获取镜像文件时,第一节点中的DPU可以从第一文件系统获取镜像文件。
在一种可能的实施方式中,该系统还包括第二远端存储设备以及第三远端存储设备;第二远端存储设备以及第三远端存储设备为独立于第一节点的存储设备。第二远端存储设备部署有第二文件系统。第三远端存储设备部署有第三文件系统。
第一节点还可以将容器的根文件的目录挂载到二文件系统,将容器的持续化卷PVC的目录挂载到第三文件系统。这里的远端存储设备可以与第一文件系统所在的远端存设备为相同的设备,也可以为不同的设备。
在上述说明中,第一文件系统、第二文件系统、第三文件系统位于不同的远端存储设备(也即分别位于第一远端存储设备、第二远端存储设备以及第三远端存储设备)为例进行说明的。在实际应用中,第一文件系统、第二文件系统、第三文件系统中的部分或全部也可以位于同一远端存储设备。
在一种可能的实施方式中,第一节点的DPU访问第二文件系统以及第三文件系统。
在一种可能的实施方式中,第二节点从镜像仓库中获取的镜像文件,将镜像文件存储第一文件系统时,第二节点从镜像仓库中获取的压缩后的镜像文件;在对压缩后的镜像文件进行解压后,将解压获得的镜像文件存储在第一文件系统。
第三方面,本申请提供了一种容器创建装置,该容器创建装置具有实现上述第一方面的方法实例中第一节点行为的功能,有益效果可以参见第一方面的描述此处不再赘述。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,容器创建装置的结构中包括第一挂载模块、第一获取模块、第一创建模块,这些模块可以执行上述第一方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第四方面,本申请提供了另一种容器创建装置,该容器创建装置具有实现上述第一方面的方法实例中第二节点行为的功能,有益效果可以参见第一方面的描述此处不再赘述。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,容器创建装置的结构中包括第二挂载模块、第二获取模块、第二创建模块,这些模块可以执行上述第一方面以及第一方面的各个可能的实施方式中的方法中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第五方面,本申请还提供了一种容器创建节点,该容器创建节点可以为第一方面以及第一方面的各个可能的实施方式中所述的方法实例中的第一节点或第二节点。该存储器用于存储计算机程序指令。处理器具有实现上述第一方面或第一方面任一种可能的实现方式所述的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。该容器创建节点还可以包括DPU,该DPU可以用于访问第一文件系统、第二文件系统或第三文件系统。
第六方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法。
第七方面,本申请还提供一种计算机芯片,芯片与存储器相连,芯片用于读取并执行存储器中存储的软件程序,执行上述第一方面以及第一方面的各个可能的实现方式中的方法。
第八方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现。
附图说明
图1为本申请提供的一种系统的架构示意图;
图2为本申请提供的一种节点的结构示意图;
图3为本申请提供的一种容器创建方法示意图;
图4为本申请提供的一种挂载信息配置界面示意图;
图5为本申请提供的一种overlay系统结构示意图;
图6~图7为本申请提供的一种容器创建装置的结构示意图。
具体实施方式
在对本申请实施例提供的一种容器创建方法、系统及节点介绍之前,对本申请涉及的一些概念进行说明:
(1)、虚拟化技术、容器(container)
虚拟化(virtualization)是一种资源管理技术,通过虚拟化技术将节点的各种物理资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来。
容器是虚拟化技术中的一种,容器是通过虚拟化技术模拟的一种独立的运行环境,容器类似于一个轻量级的沙盒,实现对容器外部的软件以及硬件进行屏蔽,容器运行在节点上,实质上可以看成一种特殊的进程。
(2)、kubernetes(k8s)
k8s是开源的容器集群管理系统,k8s构建了一个容器的调度服务。k8s面向用户能够使得用户通过k8s进行容器集群的管理。k8s可以运行在用于部署容器的节点中,也可以部署在该节点之外的设备中。
借助k8s,用户无需进行复杂的配置工作。用户只需在k8s的客户端中设置一些必要参数,如容器需要基于的镜像文件的标识、容器仓(pod)的数量。其中,pod由工作在同一工作节点上的一组容器构成。在本申请实施例中该必要参数还包括容器文件的挂载信息,以是指容器的不同文件的目录所挂载的远端文件系统。
k8s会根据用户设置的必要参数自动选取合适的节点来执行具体的容器集群调度处理工作。
需要说明的是,在本申请实施例中仅是以k8s对容器进行管理为例进行说明,在实际应用中,也可以采用其他、能够用于实现容器管理的系统。
(3)、容器的三种文件
容器有三种不同属性的文件,分别为根文件(root file system,rootfs)、镜像(image)文件、以及持久化卷(persistent volume claim,PVC)。在本申请实施例中,允许容器的三种不同属性的文件中的任意文件存储在远端存储设备上部署的文件系统中(为了方便说明,远端存储设备上部署的文件系统称为远端文件系统)上。
下面分别对这三种文件进行说明:
1)、镜像文件
镜像是容器运行时的只读模板,每个镜像由一系列的层(layers)组成,能够提供容器运行时所需的程序、库、资源、配置参数等文件。鉴于镜像具备层级结构,在镜像以文件形式存在时,不同层可对应一个子文件,每个子文件还可以包括多个子文件。基于镜像的这种构成,镜像文件也被称为镜像文件系统。镜像是一个特殊的文件系统。
镜像仓库用于存储大量镜像,负责镜像的存储、管理和分发。某一个节点在需要创建容器时,从镜像仓库中拉取所需的镜像,利用所拉取的镜像创建容器,启动容器中的应用。
在本申请实施例中,镜像文件可以由一个节点从镜像仓库中拉出,存储在远端文件系统,基于远端文件系统中的镜像文件创建容器。该远端文件系统可以为共享文件系统,也即该节点所属的集群中的其他节点在该镜像文件存放在共享文件系统后,能够从该共享文件系统中获取该镜像文件,基于该镜像文件创建容器。
镜像仓库可以部署在多个设备构成的集群中,也就是说,集群面向节点提供一个或多个镜像文件。该镜像仓库也可以部署在单个设备上,也就是说,由该设备面向节点提供一个或多个镜像文件。本申请实施例并不限定镜像仓库的具体部署方式,在下文中,为了便于描述,利用镜像仓库指代部署有镜像仓库的集群或者单个设备。
2)、rootfs
由于一些rootfs在以文件形式存在时,该文件中可以包括子文件,子文件内部也可以包括子文件。rootfs也被称为根文件系统。
rootfs是容器的工作目录,主要用于存放临时数据、中间数据等。这些临时数据、中间数据包括用户在容器上进行操作时需要暂时存储的数据、以及容器中的应用在运行过程产生的一些需临时存储的数据。
根文件中数据的生命周期与容器的生命周期一致,也就是说,当容器被注销,根文件也会随着被删除。
在本申请实施例中,容器在创建完成后,容器的rootfs存储在远端文件系统,容器的rootfs不会被存储在该容器所在节点的本地存储设备中,也即不会占用节点自己的本地存储设备的存储空间,以减少容器对节点自身的存储空间的占用。
3)、PVC
PVC是容器的数据卷,PVC用于存放需要持久化的数据,PVC中的数据的生命周期长于容器,即容器实例消亡之后,PVC中的数据依然存在,不会丢失。PVC中的数据包括用户在容器进行操作时,操作写入到PCV文件的数据,还包括容器的应用在运行过程中产生的一些需要持久化存储的数据。
PVC的存在也使得容器在发生故障时,一些数据不会被丢失。后续将故障的容器迁移后,重新创建的、用于替换故障容器的容器仍能继续使用故障容器的PVC。
在本申请实施例中,容器创建完成后,PVC可以存储在远端文件系统。该远端文件系统可以为共享文件系统,也即该节点所属的集群中的其他节点在该PVC存放在共享文件系统后,能够从该共享文件系统中获取该PVC。这种情况下,当容器发生故障时,在集群的一个节点上可以拉起一个新的容器用于代替该故障容器,实现容器的故障迁移,新的容器可以从共享文件系统中获取该PVC中的数据,还能够继续向该PVC中写入数据。
(4)、远端存储设备、远端文件系统
在本申请实施例中,远端存储设备是一种具备存储功能的设备。这里特别强调,所谓“远端”存储设备是指独立于节点的存储设备。该远端存储设备部署在节点的外部,与该节点是通过网络连接的。相应的,本地存储设备是指该节点自身的存储设备,如通过系统总线与节点连接的硬盘等。
远端存储设备侧的数据是以文件的概念组织的。每个文件具备唯一的文件名。通过这些文件分组,将同组的文件放置在一个目录中,在一个目录之下还可以放置其他文件,或目录(也称为子目录),形成了具备树状结构的“文件系统”。对于该树状结构中的任一文件,从该树状结构的根节点逐级向下,直至定位到该文件。文件系统是指对远端存储设备的数据访问是文件级别的访问。
为了方便说明,将远端存储设备上部署的文件系统称为远端文件系统。在本申请实施例中涉及两种类型的远端文件系统。一种为共享型远端文件系统,另一种为独享型远端文件系统。
对于共享型远端文件系统,能够被多个节点共享使用,也即该各个节点均与该共享远端文件系统建立了连接,各个节点能够基于网络协议与部署该共享远端文件系统的远端存储设备能够进行通信,任一节点被允许从该远端存储设备部署的共享型远端文件系统中写入数据,如写入镜像文件或者写入PVC。任一节点被允许能够从该远端存储设备部署的共享型远端文件系统中读取数据,如读取其他节点已写入的PVC,又如,读取该节点之前在PVC中写入数据。又例如,读取其他节点之前在PVC中写入数据。
对于独享型远端文件系统,是专属于一个节点(或一个容器),以供该节点(或一个容器)在该独享型远端文件系统中写入一些只属于该节点(或一个容器)的数据。
该节点被允许从该远端存储设备部署的独享型远端文件系统中写入数据,如写入rootfs。该节点被允许能够从该远端存储设备部署的独享型远端文件系统中读取数据,如读取该节点之前在rootfs中写入数据。
为了能够进一步提高独享型远端文件系统中的数据读写速度,该独享型远端文件系统中的文件可以基于键值对(key value,KV)的结构存储。该键值对中的键(key)为文件的文件名。该键值对中的值(value)为该文件。
需要说明的是,在本申请实施例中以部署远端文件系统的存储设备称为远端存储设备,但并不是说,远端文件系统是部署在一个存储设备中。鉴于实际应用中,一个远端文件系统可以被部署多个存储节点上,形成分布式的文件系统。将该多个存储节点作为一个整体,该包括该多个存储节点的整体可以理解为远端存储设备。也就是说,在本申请实施例中远端存储设备可以理解为一个存储设备,也可以理解为包括多个存储节点的系统。
(5)、rootfs的目录、镜像文件的目录、以及PVC的目录
容器的文件的目录,表述了该文件在容器所在节点的存储位置。与容器的三种文件对应,容器的文件的目录分别为rootfs的目录、镜像文件的目录、以及PVC的目录。
rootfs的目录描述了该rootfs在节点的存储位置,镜像文件的目录描述了镜像文件在节点的存储位置。PVC的目录描述了该PVC在节点的存储位置。
rootfs的目录可以理解为节点中的一个文件夹或者一个文件夹的名称,在该文件夹中需要存储rootfs。类似的,镜像文件的目录可以理解为节点中的一个文件夹或者一个文件夹的名称。PVC的目录可以理解为节点中的一个文件夹或者一个文件夹的名称。
以rootfs为例,对于节点来说,只要知道rootfs的目录,可以知道该rootfs记录在哪一个文件夹中。该rootfs的目录可以是用户自行配置的,也即用户可以配置节点中用于存储rootfs的文件夹的名称。该rootfs的目录也可以是由容器的配置文件记录的,用户只需查看配置文件即可确定该存储rootfs的文件夹的名称,进而确定存储rootfs的文件夹。
以rootfs为例,在本申请实施例中通过挂载(mount),允许将rootfs的目录与一个远端文件系统关联在一起,或者可以称为将rootfs的目录挂载在一个远端文件系统中。借助挂载,rootfs的目录下的rootfs实际上是存储在远端文件系统中。而在节点侧,在需要在rootfs中写入数据时,在节点侧需要将数据写入到该rootfs的目录中时,该节点将该数据存储在于该rootfs的目录关联的远端文件系统中。在需要展示rootfs的数据,该节点可以从远端文件系统将数据读到节点本地。
如图1所示,为本申请实施例提供的一种容器创建系统的架构示意图,该容器创建系统100包括至少一个节点110、以及远端存储设备120。可选的,该系统100还包括镜像仓库130。
本申请实施例中并不限定该远端存储设备120的数量,可以为一个,也可以为多个。每个远端存储设备120上部署有一个文件系统或多个文件系统。在图1中示例性的展示了三个远端存储设备120,该三个远端存储设备120分别为远端存储设备120A、远端存储设备120B、以及远端存储设备120C。
其中,远端存储设备120A部署有文件系统A,文件系统A为一个独享型远端文件系统。远端存储设备120B部署有文件系统B,文件系统B为一个共享型远端文件系统。远端存储设备120C部署有文件系统C,文件系统C为一个共享型远端文件系统。
节点110可以为计算设备,包括但不限于个人电脑、服务器、手机、平板电脑或者智能车等。该节点110也可以为虚拟机。
当该容器创建系统100中包括多个节点110时,本申请并不限定该多个节点110的部署位置,该多个节点110可以部署在同一数据中心中,也可以部署在不同数据中心中。同样的,本申请也不限定节点110与远端存储设备120的部署位置。节点110和远端存储设备120可以为位于同一数据中心,也可以位于不同数据中心。
对于任一用于部署容器的节点110,该节点110能够实现容器的文件的目录的挂载,将容器的任一种文件的目录挂载到远端文件系统中。例如,节点110可以将容器的rootfs的目录挂载到文件系统A,将容器的镜像文件的目录挂载到文件系统B,将容器的PVC挂载到文件系统C中。
节点110从镜像仓库130中获取容器的镜像文件,将该镜像文件存储到该镜像文件的目录中(实际上是存储在该镜像文件的目录所挂载的远端文件系统中),基于该镜像文件创建容器。
另外,对于需要部署同一类型容器的节点110,这些节点110中容器的镜像文件的目录可以挂载到同一个共享型远端文件系统中。这样,只需其中一个节点110将镜像文件写入到镜像文件的目录中,其他节点110可以从该共享型远端文件系统获取该镜像文件,基于该镜像文件创建容器。也即其他节点110无需重复地从镜像仓库130中拉起该镜像文件。
容器在创建之后,容器运行过程中产生的临时数据或中间数据可以写入到rootfs的目录中(也即写入到rootfs目录下的rootfs中),也就是说,容器运行过程中产生的临时数据或中间数据将传输至该rootfs的目录所挂载的远端文件系统中。容器运行过程中产生的需要持久化存储的数据可以写入到PVC的目录中(也即写入到PVC目录下的PVC中),节点110可以将写入到PVC的目录下的数据传输至该PVC的目录所挂载的文件系统中。
对于任一远端存储设备120,远端存储设备120上部署有远端文件系统,向节点110提供了存储空间,本申请实施例并不限定该远端存储设备120的具体形态,该远端存储设备120可以表现为一个包括多个存储节点110的系统,也可以表现为存储器112。
在本申请实施例中,节点110侧能够提供容器的文件的目录与远端文件系统的挂载功能,使得容器的文件可以存储在远端文件系统中,占用远端存储设备120的存储空间,避免了容器的对节点110本地的存储设备的占用。
另外,在本申请实施例中,节点110从镜像仓库130获取镜像文件时,可以只获取增量数据。所谓增量数据是指节点110已获取的镜像文件(节点110已获取的镜像文件为节点110已存储在远端文件系统中的镜像文件)与当前需要获取的镜像文件不同的数据(也即差异数据)。这样能够减少节点110与镜像仓库130之间交互的数据量,提升镜像文件的传输速率。而节点110将镜像文件存储在远端文件系统时,也可以只存储增量数据。远端文件系统不需要存储大量的重复数据,能够提升远端文件系统的存储空间利用率,节点110与远端文件系统之间交互的数据量也会减少,加速节点110与远端文件系统之间的交互效率。
具体到节点110内部,下面对节点110的内部结构进行说明:
如图2所示,节点110包括I/O接口113、处理器111、存储器112、以及加速装置114。I/O接口113、处理器111、存储器112、以及加速装置114之间可通过系统总线连接,该系统总线可以为快捷外围部件互连标准(peripheral component interconnect express,PCIe)总线,也可以为计算快速互联(compute express link,CXL)、通用串行总线(universalserial bus,USB)协议或其他协议的总线。
图2示例性的展示了一种连接方式,图2中,加速装置114可以直接插在节点110的主板上的卡槽中,通过PCIe总线115与处理器111交换数据。
I/O接口113用于与位于节点110外部的设备通信。例如,通过I/O接口113接收外部设备发送的容器创建指令,通过I/O接口113从镜像仓库130中获取镜像文件,将镜像文件、rootfs或PCV文件通过I/O接口113发送给远端存储设备120。
处理器111是节点110的运算核心和控制核心,它可以是中央处理器(centralprocessing unit,CPU),也可以是其他特定的集成电路。处理器还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
存储器112通常用来存放节点110操作系统中各种正在运行的计算机程序指令以及数据等。为了提高处理器111的访问速度,存储器112需要具备访问速度快的优点。存储器112通常采用动态随机存取存储器112(dynamic random access memory,DRAM)作为存储器112。除了DRAM之外,存储器112还可以是其他随机存取存储器112,例如静态随机存取存储器112(Static random access memory,SRAM)等。另外,存储器112也可以是只读存储器112(read only memory,ROM)。而对于只读存储器112,举例来说,可以是可编程只读存储器112(programmable read only memory,PROM)、可抹除可编程只读存储器112(erasableprogrammable read only memory,EPROM)等。存储器112还可以为闪存介质(FLASH)、硬盘驱动器(hard disk drive,HDD)或固态驱动器(solid state disk,SSD)等。
本实施例并不限定存储器112的数量。处理器111通过双倍速率(double datarate,DDR)总线或者其他类型的总线和存储器112相连。存储器112理解为节点110的内存(internal memory),内存又称为主存(main memory)。
处理器111可以通过调用该存储器112中的计算机程序指令执行如下文中图3所示的实施例中节点110需执行的全部方法。处理器111也可以通过调用该存储器112中的计算机程序指令执行如下文中图3所示的实施例中节点110需执行的部分方法。例如,在本申请实施例中处理器111可以完成容器的文件的目录与远端文件系统的挂载操作、以及容器的创建操作。而对于节点110访问远端文件系统的操作由加速装置114执行。访问远端文件系统的操作是指从远端文件系统读取数据或向远端文件系统写入数据。
加速装置114包括数据处理单元(data process unit,DPU)1141,可选的,该加速装置114还包括存储器1142、供电电路等,DPU1141与存储器1142通过系统总线连接,该系统总线可以为基于PCIe的线路,也可以为CXL、USB协议或其他协议的总线。
DPU1141为加速装置114的主要运算单元,是加速装置114的核心单元,DPU1141承担了加速装置114的主要功能。例如节点110的部分功能可以卸载到DPU1141上,由DPU1141处理数据,执行节点110交由加速装置114的任务。DPU1141通过调用该存储器1142中的计算机程序指令执行如下文中图3所示的实施例中节点110需执行的一些方法。DPU1141可以访问远端文件系统,从远端文件系统读取数据或将数据写入到远端文件系统。这里的数据可为rootfs中的数据、镜像文件或PVC中的数据。
下面结合附图3对本申请实施提供的容器创建方法进行说明,在图3所示的实施例中以在节点110M以及节点110N上创建容器进行说明,图3仅示例性的描述了在节点110M以及节点110N分别创建一个容器的过程。在节点110上创建多个容器的方式与在节点110上创建一个容器的方法类似,此处不再赘述。图3所示的容器创建方法包括三部分,第一部分为容器的文件的目录与远端文件系统挂载的过程,参见步骤300~步骤302,第二部分为容器创建过程,参见步骤303~步骤305,第三部分为容器运行过程中,容器的文件的写入以及读取过程,参见步骤306~步骤307。
步骤300:用户配置容器文件的挂载信息,触发容器的文件挂载流程。其中,容器文件的挂载信息描述容器的三种文件与远端文件系统的关联关系。
下面列举三种用户配置容器文件的挂载信息的方式:
方式一:利用容器集群管理系统配置容器文件的挂载信息。
以k8s为例,用户能够通过k8s对容器进行管理,用户在需要部署容器时,可以在部署在用户侧的k8s侧的客户端配置一些必要参数。例如,用户可以配置容器所需基于的镜像文件,用户在k8s在配置镜像文件时,可以输入能够唯一标识该镜像文件的标识,该镜像文件的标识可以是镜像仓库130为该镜像文件配置的,也可以是镜像文件设计人员在将该镜像文件存放在镜像仓库130时为该镜像文件设置的。又例如,用户可以配置容器仓的数量。其中,每个容器仓中容器的数量是预先配置的。
又例如,用户可以在k8s配置容器文件的挂载信息,针对容器的rootfs、镜像文件以及PVC的任一种,用户可以配置该文件的目录、该文件的目录所挂载的远端文件系统的类型、该文件的目录所挂载的远端文件系统名。
如图4所示,为k8s为用户提供的一种配置容器文件的挂载信息的界面示意图,在图4中,提供了针对容器的rootfs的挂载信息的接口,其中,针对容器的rootfs的挂载信息包括该rootfs的目录、该rootfs的目录所挂载的远端文件系统的类型、该rootfs的目录所挂载的远端文件系统名,可选的,该挂载信息中还可以包括远端文件系统的入口地址。远端文件系统的入口地址为该远端存储设备120的地址,该入口地址用于节点110与该远端文件系统通过网络进行数据传输。该入口地址可为网络协议(internet protocol,IP)地址,也可以为媒体存储控制地址(media access control addres,MAC),本申请实施例并不限定该入口地址的具体类型,凡是能够实现与该远端文件系所在的远端存储地址进行通信的地址均是用于本申请实施例。
提供了针对容器的镜像文件的挂载信息的接口,其中,包括该镜像文件的目录、该镜像文件的目录所挂载的远端文件系统的类型、该镜像文件的目录所挂载的远端文件系统名。可选的,该挂载信息中还可包括远端文件系统的入口地址。远端文件系统的入口地址用于节点110与该远端文件系统进行数据传输。
提供了针对容器的PVC的挂载信息的接口,其中,包括该PVC的目录、该PVC的目录所挂载的远端文件系统的类型、该PVC的目录所挂载的远端文件系统名。可选的,该挂载信息中还可包括远端文件系统的入口地址。远端文件系统的入口地址用于节点110与该远端文件系统进行数据传输。
在本申请实施例中涉及了两种不同类型的远端文件系统,为了与已有的网络文件系统(network file system,NFS)进行区分,可以为这两种不同类型的远端文件系统预先设计相应的类型名。例如,将共享型远端文件系统的类型名设计为SFS,将共享型远端文件系统的类型名设计EFS。两种不同类型的远端文件系统的类型名是节点110能够识别的。在实际应用中为了能够使得节点110能够识别这两种不同类型的远端文件系统,可以通过更新节点110中的容器存储接口(container storage interface,CSI)插件,使得节点110具备识别这两种不同类型的远端文件系统的类型名的功能,能够自动执行携带其中任一类型的远端文件系统的类型名挂载指令。
在图4中针对容器的rootfs的挂载信息中,rootfs的目录为rootfs-1,表明存储rootfs的文件夹的名称为rootfs-1;该rootfs的目录所挂载的远端文件系统的类型为EFS,表明该rootfs的目录需要挂载到一个独享型远端文件系统中、该rootfs的目录所挂载的远端文件系统名为文件系统A,表明该独享型远端文件系统的文件名为文件系统A。远端文件系统的入口地址为10.10.0.1,表明远端文件系统的入口地址为10.10.0.1,节点110能够基于该入口地址通过网络从远端文件系统读取rootfs中的数据或者将数据写入到该远端文件系统。
针对容器的镜像文件的挂载信息中,镜像文件的目录为image-1,表明存储镜像文件的文件夹的名称为image-1;该镜像文件的目录所挂载的远端文件系统的类型为SFS,表明该镜像文件的目录需要挂载到一个共享型远端文件系统中;该镜像文件的目录所挂载的远端文件系统名为文件系统B,表明该共享型远端文件系统的文件名为文件系统B。远端文件系统的入口地址为10.10.0.2,表明远端文件系统的入口地址为10.10.0.2,节点110能够基于该入口地址通过网络从远端文件系统读取镜像文件或者将镜像文件写入到远端文件系统。
针对容器的PVC的挂载信息中,PVC的目录为PVC-1,表明存储PVC的文件夹的名称为PVC-1;该镜像文件的目录所挂载的远端文件系统的类型为SFS,表明该镜像文件的目录需要挂载到一个共享型远端文件系统中;该镜像文件的目录所挂载的远端文件系统名为文件系统C,表明该共享型远端文件系统的文件名为文件系统C。远端文件系统的入口地址为10.10.0.3,表明远端文件系统的入口地址为10.10.0.3,节点110能够基于该入口地址通过网络从远端文件系统读取PVC中的数据或者将PVC中的数据写入到远端文件系统。
用户在k8S的客户端配置完成后,k8s可以根据用户的配置编排多个容器,确定在哪些节点110上部署pod,每个节点110部署多少个pod。k8s向所确定节点110发送容器挂载请求,该容器挂载请求中携带了容器文件的挂载信息,以请求节点110完成容器的文件的目录与远端文件系统的挂载,触发容器的文件挂载流程(也即步骤301~步骤303)。例如,k8s可以向节点110M和节点110N下发容器挂载请求,该容器挂载请求中可以携带图4所配置的容器文件的配置信息。
此外,k8s还可以向所确定节点110中的部分节点110发送镜像拉取请求,该镜像拉取请求用于请求节点110从镜像仓库130中拉取镜像文件,该镜像拉取请求中携带了镜像文件的标识。以k8s确定了在节点110M以及节点110N中部署pod为例,k8s不需要向节点110M和节点110N分别发送镜像拉取请求,仅需向节点110M或节点110N发送镜像拉取请求。
当然,在实际应用中k8s侧可以如图4所示向用户提供容器的三种文件的挂载信息的配置功能,也可以只向用户提供其中一种或两种文件的挂载信息的配置功能。
方式二:用户通过更新容器的配置文件配置,容器文件的挂载信息。
在节点110侧,节点110保存有容器的配置文件,容器的配置文件记录了容器创建的一些参数,该容器的配置文件可以包括容器中一种或多种文件的挂载信息。容器的配置文件中针对任一中文件的挂载信息属于预设的信息。这些预设的信息的允许进行变更的。
举例来说,容器的配置文件中包括预设的针对容器的镜像文件的挂载信息、以及针对容器的rootfs的挂载信息。针对容器的镜像文件的挂载信息。
预设的针对容器的rootfs的挂载信息包括预设的该rootfs的目录、预设的该rootfs的目录所挂载的远端文件系统的类型、预设的该rootfs的目录所挂载的远端文件系统名,可选的,该挂载信息中还可以包括预设的远端文件系统的入口地址。
用户可以对该针对容器的rootfs的挂载信息进行修改,如修改该rootfs的目录、该rootfs的目录所挂载的远端文件系统的类型、该rootfs的目录所挂载的远端文件系统名等信息。
例如,用户可以将该rootfs的目录修改为rootfs-A,将该rootfs的目录所挂载的远端文件系统的类型修改为EFS,将该rootfs的目录所挂载的远端文件系统名修改为文件系统A。
预设的针对容器的镜像文件的挂载信息包括预设的该镜像文件的目录、预设的该镜像文件的目录所挂载的远端文件系统的类型、预设的该镜像文件的目录所挂载的远端文件系统名。可选的,该挂载信息中还可包括远端文件系统的入口地址。
例如,用户可以将该镜像文件的目录修改为image-B将该镜像文件的目录所挂载的远端文件系统的类型修改为SFS,将该镜像文件的目录所挂载的远端文件系统名修改为文件系统B。
这样,当后续节点110需要创建容器时会调取该修改后的挂载信息,将容器的文件的目录挂载到所指定的文件系统上。
方式三:直接向节点110下发挂载指令,该挂载指令中携带了容器文件的挂载信息。
用户直接向节点110M、节点110N下发挂载指令,如用户可以直接操作该节点110,通过该节点110M、节点110N外接的输入输出设备键入挂载指令。
挂载指令的格式如下:mount-t远端文件系统的入口地址远端文件系统类型远端文件系统名文件的目录。
例如,用户键入如下三个挂载指令:
挂载命令1、mount-t 10.10.0.1 EFS文件系统A rootfs-A。
挂载命令2、mount-t 10.10.0.2 SFS文件系统B image-B。
挂载命令3、mount-t 10.10.0.3 SFS文件系统C PVC-C。
其中,挂载命令1指示名为rootfs-A的文件夹挂载到名为文件系统A、入口地址为10.10.0.1的独享型远端文件系统。挂载命令2指示名为image-B的文件夹挂载到名为文件系统B、入口地址为10.10.0.2的共享型远端文件系统。挂载命令3指示名为PVC-B的文件夹挂载到名为文件系统C、入口地址为10.10.0.3的共享型远端文件系统。
用户在键入这三个挂载指令后,触发容器的文件挂载流程(也即步骤301~步骤302)。
上述方式仅是举例说明的,在实际应用中,用户在配置容器文件的挂载信息时,可以采用上述方式的任一种;也可以采用上述方式中的多种,例如,用户可以在容器集群管理系统配置容器PVC的挂载信息,并在节点110侧通过修改容器的配置信息配置容器的roofs的挂载信息以及镜像文件的挂载信息。当然,本申请实施例也可以采用除上述三种方式之外的方式配置容器的挂载信息。
下面以节点110M以及节点110N创建容器为例进行说明。
步骤301:节点110M将容器的rootfs的目录挂载到文件系统A,将容器的镜像文件的目录挂载到文件系统B,将容器的PVC的目录挂载到文件系统C。
针对步骤300中提及的方式一,节点110M在接收容器挂载请求后,节点110M(如节点110M中的处理器111)可以自动执行挂载指令,节点110M自动执行的挂载指令即为与前述提及的挂载指令1、挂载指令2、以及挂载指令3类似的卸载指令。
针对步骤300中提及的方式二,节点110M获取用户修改后的容器的文件的挂载信息,节点110M(如节点110M中的处理器111)可以自动执行挂载指令,节点110M自动执行的挂载指令即为与前述提及的挂载指令1、挂载指令2、以及挂载指令3类似的卸载指令。
针对步骤300中提及的方式三,节点110M在检测到用户键入的卸载指令后,节点110M(如节点110M中的处理器111)可以自动执行挂载指令,节点110M自动执行的挂载指令即为前述提及的挂载指令1、挂载指令2、以及挂载指令3。
节点110M通过执行这些挂载指令,使得节点110M与部署远端文件系统的远端存储设备120建立连接(节点110M会与远端存储设备120进行通信,以告知远端存储设备120后续会向远端存储设备120中写入一些数据),建立了容器的文件的目录与远端文件系统之间的关联关系,使得容器的文件的目录下的文件可以写入到与其关联的远端文件系统中。
节点110M通过执行挂载指令1,在节点110M与部署文件系统A的远端存储系统120A之间建立了连接,将容器的rootfs的目录挂载到文件系统A中,建立了容器的rootfs的目录与文件系统A的关联关系。
节点110M通过执行挂载指令2,在节点110M与部署文件系统B的远端存储系统120B之间建立了连接,将容器的镜像文件的目录挂载到文件系统B中,建立了容器的镜像文件的目录与文件系统B的关联关系。
节点110M通过执行挂载指令3,在节点110M与部署文件系统C的远端存储系统120C之间建立了连接,将容器的PVC的目录挂载到文件系统C中,建立了容器的PVC的目录与文件系统C的关联关系。
步骤302:节点110N将容器的rootfs的目录挂载到文件系统A,将容器的镜像文件的目录挂载到文件系统B,将容器的PVC的目录挂载到文件系统C。节点110N执行步骤302的方式与节点110M执行步骤301的方式类似,具体可以参见前述内容,此处不再赘述。
步骤303:节点110M从镜像仓库130获取镜像文件,将镜像文件写入到镜像文件的目录下。
针对步骤300中提及的方式1,节点110M(如节点110M中的处理器111)能够接收k8s发送的镜像拉取请求,节点110M(如节点110M中的处理器111)在接收到该镜像拉取请求后,根据该镜像拉取请求中携带的镜像文件的标识从镜像仓库130中拉取镜像文件;节点110M(如节点110M中的处理器111或节点110M中的加速装置114)将镜像文件写入到镜像文件的目录。
节点110M在将镜像文件写入到镜像文件的目录的过程中实质上节点110M将镜像文件写入到与镜像文件的目录所挂载的文件系统B的过程。
节点110M(如节点110M中的处理器111)中可以部署有文件系统B的客户端,该文件系统B的客户端可以运行在节点110M中的处理器111上,这样,在节点110M中在将镜像文件写入到镜像文件的目录时,该文件系统B客户端可以与远端存储设备120B通信,将该镜像文件传输至远端存储设备120B中,存储在文件系统B中。
为了减少对节点110M的处理器111的占用,节点110M可以将访问远端文件系统的功能卸载到加速装置114中,也即是说,由加速装置114与各个远端存储设备120进行通信,访问远端文件系统。
在步骤303中,当节点110M的处理器111在从镜像仓库130中获取镜像文件后,加速装置114可以将镜像文件写入到镜像文件的目录。加速装置114可以将该镜像文件写入到与镜像文件的目录所挂载的文件系统B中。
在这种将访问远端文件系统的功能卸载到加速装置114的场景中,加速装置114中部署有文件系统B的客户端,该文件系统B的客户端可以运行在加速装置114的DPU1141上,这样,在节点110M中在将镜像文件写入到镜像文件的目录时,该文件系统B的客户端可以与远端存储设备120B通信,将该镜像文件传输至远端存储设备120B中,存储在文件系统B中。
节点110M在从镜像仓库130拉取镜像文件时,可以只获取该镜像文件的增量数据,该增量数据是指当前需要拉取的镜像文件与节点110M已保存的镜像文件之间的差异数据。在本申请实施例由于节点110M的镜像文件的目录与文件系统B挂载,说明节点110M已保存的镜像文件实质上是存储在文件系统B中的。故而,节点110M已保存的镜像文件是指文件系统B中保存的镜像文件。那么,增量数据是指当前需要拉取的镜像文件与文件系统B已保存的镜像文件之间的差异数据。本申请实施例并不限定该增量数据的粒度。由于镜像文件是层级结构,也即镜像文件包括多层,而每一层数据可以划分为多个块数据。该增量数据可以是镜像文件中的一层或多层,也可以是该镜像文件中的一个或多个块数据,多个块数据可以是镜像文件中一层数据中的多个块数据,也可以是镜像文件中不同层数据中的多个块数据。
本申请实施例并不限定节点110M从镜像仓库130只获取该镜像文件的增量数据的方式。例如,节点110M侧可以记录文件系统B中已保存的镜像文件的标识,或者节点110M可以与文件系统B交互获取文件系统B中已保存的镜像文件的标识。其中,从设备角度,文件系统B中已保存的镜像文件是指远端存储设备120B已保存的镜像文件。
节点110M从镜像仓库130拉取镜像文件时,可以向镜像仓库130发送已保存的镜像文件的标识以及当前需要拉取的进行文件的标识。镜像仓库130根据已保存的镜像文件的标识以及当前需要拉取的进行文件的标识确定当前需要拉取的镜像文件的增量数据。镜像仓库130将该增量数据发送给节点110M。
类似的,节点110M将镜像文件写入到镜像文件的目录下,也即节点110M将镜像文件写到文件系统B中,节点110M也可以只将该镜像文件的增量数据保存在文件系统B中。在这种场景下,存在两种可能的情况:
情况一、节点110M从镜像仓库130中拉取了该镜像文件的增量数据。
在这种情况下,节点110M直接将镜像文件的增量数据写入到镜像文件的目录下,也即直接将镜像文件的增量数据保存在文件系统B中。
情况二、节点110M从镜像仓库130中拉取了该镜像文件。
在这种情况下,节点110M从镜像文件中拉取了整个镜像文件。节点110M可以查看文件系统B(如节点110M可以调取与文件系统B关联的镜像文件的目录下的镜像文件),确定文件系统B中已保存的镜像文件与当前拉取的镜像文件之间的差异数据,也即确定镜像文件的增量数据。将镜像文件的增量数据写入到镜像文件的目录下。节点110M也可以直接将镜像文件写入到镜像文件的目录下,也即将镜像文件发送到文件系统B。远端存储设备120B在接收到该镜像文件后,可以确定文件系统B中已保存的镜像文件与当前接收到的镜像文件的差异数据,也即确定镜像文件的增量数据,远端存储设备120B只保存该镜像文件的增量数据。上述节点110M将取该镜像文件的增量数据保存在文件系统B中的方式仅是举例,本申请实施例并不限定节点110M将取该镜像文件的增量数据保存在文件系统B中的方式。
下面以增量数据为块数据为例,介绍一种节点110M从镜像仓库130拉取镜像文件的增量数据,并在文件系统中保存该镜像文件的增量数据的方式,该方式包括如下步骤:
步骤1.节点110M向镜像仓库130发送镜像请求,该镜像请求中携带了需要拉取的镜像文件的标识。
步骤2.镜像仓库130收到镜像请求后,根据该镜像文件的标识确定需要拉取的镜像文件,向节点110M发送镜像文件的摘要信息发送给节点110M。其中,摘要信息用于指示该镜像文件中的内容。该镜像文件中的内容包括但不限于:镜像文件包括的各个层,以及每一层的指纹信息。
每一层的指纹信息可以理解为数据的标识,根据该指纹信息能够确定该层中所包括的数据。在本申请实施例中,每一层的指纹信息可以是以块数据为粒度的,也即该层中的每个块数据对应一个块数据的指纹信息。每一层的指纹信息包括该层中各个块数据的指纹信息。
例如,镜像文件中的一层的数据有1兆字节(MByte,MB),那么首先对它进行划分,划分为1024个大小为1千字节(Kilobyte,kB)的块数据。基于哈希算法,为每一个块数据计算一个指纹信息。这里每层数据的划分方式仅是举例,本申请实施例并不限定块数据的划分方式。这里指纹信息的计算方式也仅是举例,本申请实施例也不限定指纹信息的计算方式。
步骤3.节点110M收到镜像的摘要信息后,将该摘要信息发送到远端存储设备120B。
步骤4.远端存储设备120B收到该摘要信息后,可以根据该摘星信息中的指纹信息确定哪一些指纹信息对应的块数据已存储在文件系统B中,哪一些指纹信息对应的块数据未存储在文件系统B中,这些未存储在文件系统B中的块数据即为镜像文件的增量数据。
步骤5.远端存储设备120B生成增量数据的指示信息,该增量数据的指示信息用于指示该镜像文件的增量数据。
本申请实施例并不限定增量数据的指示信息指示该镜像文件的增量数据的方式,例如,该增量数据的指示信息包括未存储在文件系统B中的块数据的指纹信息。又例如,该增量数据的指示信息指示了该镜像文件中的每一个块数据块是否已保存在远端存储设备120B中。
步骤6.远端存储设备120B将增量数据的指示信息发送给节点110M,然后节点110M将增量数据的指示信息发送给镜像仓库130。
步骤7.镜像仓库130收到增量数据的指示信息后,可以向节点110M发送镜像文件。
这里镜像仓库130发送的镜像文件中已存储在文件系统B中的块数据可以用于该块数据的指纹信息代替,未存储在文件系统B中的块数据即为该块数据本身。
步骤8.节点110M将镜像文件写入到该镜像文件的目录中,也即节点110M将镜像文件发送给远端存储设备120B。
步骤9.远端存储设备120B在接收到该镜像文件后,保存该镜像文件。
在前述说明中,是以k8s通过向节点110M下发镜像拉取请求,以使得节点110M执行步骤303为例进行说明的。在实际应用中,用户也可以直接在节点110M中键入用于指示拉取镜像文件的指令,以使得节点110M能够在用户的触发下执行步骤303。本申请实施例并不限定触发节点110M执行步骤303的方式,凡是能够使得节点110M执行步骤303的方式均适用于本申请实施例。
步骤304:节点110M(如节点110M中的处理器111)基于镜像文件在节点110M上创建容器。
情况一、节点110M在将镜像文件写入到镜像文件的目录下后,k8s可以向节点110M发送容器创建请求,用于请求节点110M创建容器,该容器创建请求中携带有该节点110M中需要部署的pod的数量。节点110M在接收到该容器创建请求后,可以自动执行容器创建指令(如docker run指令)可以将该镜像文件中所需的数据加载到本地,通过运行该镜像文件中的程序、调用镜像文件中的库以及资源、完成镜像文件中配置参数的配置等操作,创建容器。
情况二、节点110M在将镜像文件写入到镜像文件的目录下后,用户可以在节点110M中键入容器创建指令,以直接指示节点110M创建容器,节点110M在检测到容器创建指令后,可以执行该容器创建指令,将该镜像文件中所需的数据加载到本地,通过运行该镜像文件中的程序、调用镜像文件中的库以及资源、完成镜像文件中配置参数的配置等操作,创建容器。
在步骤301中仅是在节点110中仅是实现通用的容器的文件的目录与远端文件系统的挂载,步骤301的容器的文件的目录并非针对某一个具体的容器。在步骤304创建容器的过程中,需要将步骤301中已配置的容器的文件的目录关联到所创建的容器上。使得步骤301中的容器的文件的目录是针对创建的容器的文件的目录。
节点110M在创建容器的过程中为所创建的容器配置该容器的文件的目录。例如,节点110M将卸载指令1中名为rootfs-A容器的rootfs的目录关联为rootfs的文件的目录rootfs-1,节点110M将卸载指令2中名为image-B容器的镜像文件的目录关联为镜像的文件的目录image-1,节点110M将卸载指令3中名为PVC-B容器的镜像文件的目录关联为镜像的文件的目录PVC-1。
在上述两种情况中,将该镜像文件加载到本地的过程可以由节点110M的处理器111执行,也可以由节点110M中的加速装置114执行,以减少对处理器111的占用。在加载镜像文件时,处理器111或加速装置114(如加速装置114中的DPU1141)与远端存储设备120B通信,获取该镜像文件。
通常,为了节约存储空间,镜像仓库130中的镜像文件为压缩后的镜像文件,也就是说,节点110M获取的镜像文件是压缩后的镜像文件,在将镜像文件写入到镜像文件的目录之前,节点110M(如节点110M的处理器111或者加速装置114)将压缩后的镜像文件进行解压,在解压后,再将解压后的获得的镜像文件写入到镜像文件的目录下,也即将解压后获得的镜像文件存储与该镜像文件的目录挂载的远端文件系统中。
为了进一步减少对处理器111或者加速装置114的消耗,解压的操作也可以有远端存储设备120B执行,也就是说,当节点110M中的处理器111或加速装置114在将该压缩后的镜像文件写入到镜像文件的目录所挂载的文件系统B,远端存储设备120B可以对该压缩后的镜像文件进行解压。
这样,当节点110M需要创建容器时,节点110M的处理器111或加速装置114(如加速装置114中的DPU1141)将该解压后的镜像文件中所需的数据加载到本地,基于加载的数据创建容器。
节点110M在创建容器时,节点110M可以基于叠置(overlay)系统创建节点110M上需要部署的容器。
下面先对overlay系统进行说明,overlay系统是一种特殊的文件系统,它是一个多层文件系统,overlay系统的层状结果可以参见图5。图5中右侧部分展示了该overlay系统中的三个层级目录,该三个层级目录分别为挂载点(merged)、读写层(upperdir)和只读层(lowerdir)。
其中,upperdir和lowerdir可以挂载到相同或者不同的文件系统。目录merged中下的数据upperdir和lowerdir两个目录中的数据组合。其中upperdir中的文件或者目录会覆盖lowerdir层中的同名文件或者同名目录。比如在merged目录看到的file2是upperdir目录中的file2,而不是lowerdir中的。
这三个目录整体对外呈现为overlay文件系统,以mount的方式挂载overlay文件系统时,看到的挂载点是merged目录,即upperdir和lowerdir是看不到的。当在挂载点操作数据时,实际是在upperdir以及lowerdir中进行操作数据。有以下几种常见操作:
1、读操作,也即读取数据。例如,读取file1的数据时,会从lowerdir中读取file1。又例如,读取file2时,会从upperdir中读取file1。
2、写操作,也即写入数据。例如,在写file1中写入数据,会先从lowerdir中读取file1,修改file1中的数据,之后,再将修改后的file1保存在upperdir中创建file1。
对于容器,可以将容器所需的文件存放在overlay系统中。例如,可以将镜像文件夹存放在lowerdir中,保证镜像文件不被修改。容器中对镜像的修改和临时文件(也即roofs)的创写都放在upperdir层。在本申请实施例中,lowerdir对应容器的images的目录。也就是说,lowerdir与镜像文件的目录存在关联,又由于镜像文件的目录挂载到了远端文件系统,实质上,lowerdir与远端文件系统之间关联。upperdir对应容器的rootfs的目录。也就是说,upperdir与rootfs的目录存在关联,又由于rootfs的目录挂载到了远端文件系统,实质上,upperdir与远端文件系统之间关联。
步骤305:节点110N获取镜像文件,在节点110N上创建容器。节点110N执行步骤305的方式与节点110M执行步骤304的方式类似。
值得注意的是,由于节点110M将镜像文件写入到与镜像文件的目录所挂载的文件系统B中,由于节点110N中容器的镜像文件的目录也挂载到了该文件系统B中,节点110M将镜像文件将该文件系统B中,也相当于将镜像文件写入到了节点110N中容器的镜像文件的目录下,又由于文件系统B属于共享型远端文件系统,节点110N能够直接从文件系统B将该镜像文件加载到本地,通过运行该镜像文件中的程序、调用镜像文件中的库以及资源、完成镜像文件中配置参数的配置等操作,创建容器。
在本申请实例允许多个节点110将容器的某一种文件的目录挂载到同一个共享型文件系统上。这样,当该多个节点110中的一个节点110上的容器将该文件中的数据写入到该文件的目录下时,该数据会被写入到该共享型文件系统中,该多个节点110中的其余节点110能够获取该共享型文件系统中该文件中的数据。以多个节点110需要部署同一类型容器的节点110均将容器的镜像文件的目录挂载到同一个共享型文件系统上为例,这种情况下,该共享文件系统所在的远端存储设备120为部署同一类型容器的节点110配置同一段用于存储镜像文件的存储空间。也就是说,部署同一类型容器的节点110中的任一节点110获取的镜像文件后写到镜像文件的目录下,该镜像文件均会被写入到该存储空间上。那么部署同一类型容器的节点110中的任一节点110同样能够获取该存储空间中的数据。基于这种原理,对于镜像文件来说,只要部署同一类型容器的节点110中有一个节点110将镜像文件写入到该存储空间,部署同一类型容器的节点110中其余节点110就可以通过查看自身镜像文件的目录中的数据,就可以读取该存储空间中的镜像文件。
该共享文件系统所在的远端存储设备120为部署同一类型容器的节点110配置同一段用于存储镜像文件的存储空间的方式有很多种。例如,k8s在确定了哪些节点110需要部署同一类型的容器时,k8s可以向远端存储设备120发送指示消息,该指示消息告知远端存储设备120需要分配同一段存储镜像文件空间的节点110(该指示消息中可以携带节点110的标识),该远端存储设备120为这些节点110中容器的镜像文件的目录所挂载的共享型文件系统所在的远端存储设备120。后续当节点110通过执行针对镜像文件的挂载命令,与该远端存储设备120进行通信时,节点110可以将自身的节点110标识告知远端存储设备120,这样远端存储设备120可通过获取的各个节点110的标识确定需要分配同一段存储镜像文件空间的节点110,并为其分配同一段存储空间。又例如,当这些节点110通过执行针对镜像文件的挂载命令,与该远端存储设备120进行通信时,这些节点110可以将镜像文件的标识告知远端存储设备120,这样远端存储设备120可通过各个节点110发送的镜像文件的标识确定哪些节点110中容器的镜像文件的目录需要存储相同的镜像文件,这些发送相同镜像文件标识的节点110即为需要分配同一段存储镜像文件空间的节点110。这里仅列举其中两种方式,对于其他能够使得共享文件系统所在的远端存储设备120为部署同一类型容器的节点110配置同一段用于存储容器的文件中数据的存储空间的方式,本申请也同样适用。
至此节点110M以及节点110N中的容器已创建完成,容器在创建完成后,容器运行在其上部署的应用,用户也可以将通过部署在用户侧的客户端,在该容器中进行操作,如用户可以在该容器中查看数据、修改数据、保存数据。这里的客户端可以理解为用于操控容器的客户端软件或者是用于操作容器的客户端设备(也即具备硬件形态的客户端)。
步骤306:节点110M中的容器创建之后,节点110M将容器运行过程中的临时数据、中间数据等数据写入到rootfs的目录下,将容器运行过程产生的需要持久化的数据写入到PCV文件的目录下。
容器在运行过程中,容器部署的应用会进行一些业务,如数据库业务、语音通话业务、视频编解码业务等。应用在进行这些业务的过程中会伴随有一些数据的产生,应用可以根据已有的配置将这些数据中的临时数据、或中间数据等无需长久保存的数据(也即rootfs中的数据)写入到rootfs的目录。将这些数据中一些需要持久化的数据写入到PCV文件的目录下。
节点110M中的处理器111在检测到应用需要将数据写入到rootfs的目录的动作时,将数据写入到与该rootfs的目录所挂载的文件系统A中。节点110M中的处理器111可以将rootfs发送到远端存储设备120A,存储在文件系统A中。节点110M中的处理器111将数据写入到与该rootfs的目录所挂载的文件系统A的方式与节点110M的处理器111将镜像文件写入到与该image的目录所挂载的文件系统A的方式类似,此处不再赘述。
节点110M中的处理器111在检测到应用需要将数据写入到PVC的目录的动作时,将数据写入到与该PVC的目录所挂载的文件系统A中。节点110M中的处理器111可以将数据发送到远端存储设备120A,存储在文件系统A中。节点110M中的处理器111将数据写入到与该rootfs的目录所挂载的文件系统A的方式与节点110M的处理器111将镜像文件写入到与该image的目录所挂载的文件系统A的方式类似,此处不再赘述。
在将访问远端文件系统的功能卸载到加速装置114的场景中,加速装置114可以代替节点110M中的处理器111将数据写入到与该rootfs的目录所挂载的文件系统A中。节点110M中的加速装置114将数据写入到与该rootfs的目录所挂载的文件系统A中方式与节点110M中的处理器111将数据写入到与该rootfs的目录所挂载的文件系统A中的方式类似,区别在于执行主体不同,具体可以参见前述说明,此处不再赘述。
加速装置114可以代替节点110M中的处理器111将数据写入到与该PVC的目录所挂载的文件系统A中。节点110M中的加速装置114将数据写入到与该PVC的目录所挂载的文件系统C中方式与节点110中的处理器111将数据写入到与该PVC的目录所挂载的文件系统C中的方式类似,区别在于执行主体不同,具体可以参见前述说明,此处不再赘述。
相应的,当应用需要调用rootfs的目录下的数据时,也可以由节点110M中的处理器111或者加速装置114从与该rootfs的目录所挂载的文件系统A中获取数据,加载到节点110M本地,以供应用调用,由加速装置114执行该操作适用于将访问远端文件系统的功能卸载到加速装置114的场景中。
当应用需要调用PVC的目录下的数据时,也可以由节点110M中的处理器111或者加速装置114从与该PVC的目录所挂载的文件系统C中获取数据,加载到节点110M本地,以供应用调用,由加速装置114执行该操作适用于将访问远端文件系统的功能卸载到加速装置114的场景中。
容器在运行过程中,用户也可以在容器中执行一些操作,如数据修改操作、数据保存操作中。用户可以根据自身需求将一些数据作为rootfs中的数据保存到rootfs的目录下,或将一些数据作为PVC中的数据保存到PVC的目录下。
节点110M中的处理器111在检测到用户需要将数据写入到PVC的目录的操作时,将数据写入到与该PVC的目录所挂载的文件系统C中。节点110M中的处理器111可以将数据发送到远端存储设备120C,存储在文件系统C中。节点110M中的处理器111将数据写入到与该PVC的目录所挂载的文件系统C的方式与节点110M的处理器111将镜像文件写入到与镜像文件的目录所挂载的文件系统B的方式类似,此处不再赘述。
在将访问远端文件系统的功能卸载到加速装置114的场景中,节点110M中的加速装置114可以代替节点110M中的处理器111将数据写入到与该PVC的目录所挂载的文件系统C中。节点110M中的加速装置114将数据写入到与该PVC的目录所挂载的文件系统C中方式与节点110M中的处理器111将数据写入到与该PVC的目录所挂载的文件系统C中的方式类似,区别在于执行主体不同。
步骤307:节点110N在容器创建之后,将容器运行过程中的临时数据等数据写入到rootfs的目录下,将容器运行过程产生的需要持久化的数据写入到PCV文件的目录下。节点110N执行步骤307的方式与节点110M执行步骤306的方式类似,具体可以参见前述说明,此处不再赘述。
基于与方法实施例同一发明构思,本申请实施例还提供了一种容器创建装置,该容器创建装置用于执行上述如图3所示的方法实施例中节点110N执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图6所示,容器创建装置600包括第一挂载模块601、第一获取模块602以及第一创建模块603。
第一挂载模块601,用于将容器的镜像文件的目录挂载到远端存储设备上的第一文件系统。
第一获取模块602,用于从第一文件系统获取镜像文件。
第一创建模块603,用于基于镜像文件在第一节点上创建容器。
在一种可能的实施方式中,第一挂载模块601可以将容器的根文件的目录挂载到远端存储设备上的第二文件系统;将容器的持续化卷PVC的目录挂载到远端存储设备上的第三文件系统。
基于与方法实施例同一发明构思,本申请实施例还提供了另一种容器创建装置,该容器创建装置用于执行上述如图3所示的方法实施例中节点110M执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图7所示,容器创建装置700包括第二挂载模块701、第二获取模块702,可选的,还包括第二创建模块703。
第二挂载模块701,用于将容器的镜像文件的目录挂载到第一文件系统。
第二获取模块702,用于从镜像仓库中获取的镜像文件,将镜像文件存储第一文件系统。
在一种可能的实施方式中,第二创建模块703可以从第一文件系统获取镜像文件,基于镜像文件在第二节点上创建容器。
在一种可能的实施方式中,第二获取模块702在将镜像文件存储第一文件系统时,将镜像文件中的增量数据存储在第一文件系统中,增量数据为第一文件系统中已存储的其他镜像文件与镜像文件不同的数据。
在一种可能的实施方式中,第二获取模块702将从镜像仓库中获取的镜像文件时,从镜像仓库中获取的镜像文件中的增量数据,增量数据为第一文件系统中已存储的其他镜像文件与镜像文件不同的数据。
在一种可能的实施方式中,第二获取模块702从镜像仓库中获取的镜像文件,将镜像文件存储第一文件系统时,将从镜像仓库中获取的压缩后的镜像文件;对压缩后的镜像文件进行解压,将解压获得的镜像文件存储第一文件系统。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变形在内。
Claims (24)
1.一种容器创建方法,其特征在于,所述方法包括:
第一节点将容器的镜像文件的目录挂载到远端存储设备上的第一文件系统,其中,所述远端存储设备为独立于所述第一节点的存储设备;
所述第一节点从所述第一文件系统获取镜像文件;
所述第一节点基于所述镜像文件在所述第一节点上创建容器。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
第二节点将所述镜像文件的目录挂载到所述第一文件系统;
所述第二节点从镜像仓库中获取所述镜像文件,将所述镜像文件存储在所述第一文件系统。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
所述第二节点从所述第一文件系统获取所述镜像文件,基于所述镜像文件在第二节点上创建所述容器。
4.如权利要求2或3所述的方法,其特征在于,所述第二节点将所述镜像文件存储在所述第一文件系统,包括:所述第二节点将所述镜像文件中的增量数据存储在所述第一文件系统中,所述增量数据为所述第一文件系统中已存储的其他镜像文件与所述镜像文件不同的数据。
5.如权利要求2或3所述的方法,其特征在于,所述第二节点从镜像仓库中获取所述镜像文件,包括:
所述第二节点从所述镜像仓库中获取所述镜像文件中的增量数据,所述增量数据为所述第一文件系统中已存储的其他镜像文件与所述镜像文件不同的数据。
6.如权利要求2~5任一项所述的方法,其特征在于,所述第一节点与所述第二节点位于不同的数据中心。
7.如权利要求2~6任一项所述的方法,其特征在于,所述远端存储设备与所述第一节点位于同一数据中心。
8.如权利要求2~6任一项所述的方法,其特征在于,所述远端存储设备与所述第一节点位于不同的数据中心。
9.如权利要求1~8任一项所述的方法,其特征在于,所述第一节点从所述第一文件系统,获取镜像文件,包括:
所述第一节点中的数据处理单元DPU从所述第一文件系统获取所述镜像文件。
10.如权利要求1~9任一项所述的方法,其特征在于所述,所述第一节点基于所述镜像文件创建容器之前,还包括:
所述第一节点将容器的根文件的目录挂载到第二文件系统,所述第二文件系统所在的设备为独立于所述第一节点的存储设备;
所述第一节点将容器的持续化卷PVC的目录挂载到第三文件系统,所述第三文件系统所在的设备为独立于所述第一节点的存储设备。
11.如权利要求10所述的方法,其特征在于,所述方法还包括:
所述第一节点的DPU访问所述第二文件系统以及所述第三文件系统。
12.一种容器创建系统,其特征在于,所述系统包括第一远端存储设备和第一节点,所述第一远端存储设备为独立于所述第一节点的存储设备;
所述第一远端存储设备,用于部署第一文件系统;
所述第一节点,用于将容器的镜像文件的目录挂载到所述第一文件系统,从所述第一文件系统获取镜像文件,基于所述镜像文件在所述第一节点上创建容器。
13.如权利要求12所述的系统,其特征在于,所述系统还包括第二节点以及镜像仓库;
所述镜像仓库,用于保存所述镜像文件;
所述第二节点,用于将所述镜像文件的目录挂载到所述第一文件系统;从所述镜像仓库中获取所述镜像文件,将所述镜像文件存储在所述第一文件系统。
14.如权利要求13所述的系统,其特征在于,所述第二节点,还用于从所述第一文件系统获取所述镜像文件,基于所述镜像文件在所述第二节点上创建所述容器。
15.如权利要求13或14所述的系统,其特征在于,所述第二节点在将所述镜像文件存储在所述第一文件系统,用于:
将所述镜像文件中的增量数据存储在所述第一文件系统中,所述增量数据为所述第一文件系统中已存储的其他镜像文件与所述镜像文件不同的数据。
16.如权利要求13或14所述的系统,其特征在于,所述第二节点在从所述镜像仓库中获取的所述镜像文件,用于:
从所述镜像仓库中获取所述镜像文件中的增量数据,所述增量数据为所述第一文件系统中已存储的其他镜像文件与所述镜像文件不同的数据。
17.如权利要求13~16任一项所述的系统,其特征在于,所述第一节点与所述第二节点位于不同的数据中心。
18.如权利要求12~17任一项所述的系统,其特征在于,所述第一远端存储设备与所述第一节点位于同一数据中心。
19.如权利要求12~17任一项所述的系统,其特征在于,所述第一远端存储设备与所述第一节点位于不同的数据中心。
20.如权利要求12~19任一项所述的系统,其特征在于,所述第一节点从所述第一文件系统,获取镜像文件,用于:
所述第一节点中的数据处理单元DPU从所述第一文件系统获取所述镜像文件。
21.如权利要求12~20任一项所述的系统,其特征在于所述,所述系统还包括第二远端存储设备以及第三远端存储设备,所述第二远端存储设备以及所述第三远端存储设备为独立于所述第一节点的存储设备;
所述第二远端存储设备,用于部署第二文件系统;
所述第三远端存储设备,用于部署第三文件系统;
所述第一节点还用于:
将容器的根文件的目录挂载到所述第二文件系统;
将容器的持续化卷PVC的目录挂载到远所述第三文件系统。
22.如权利要求21所述的系统,其特征在于,所述第一节点还用于:
所述第一节点的DPU访问所述第二文件系统以及所述第三文件系统。
23.一种容器创建节点,其特征在于,所述节点包括处理器和存储器,所述存储器用于存储计算机程序指令,所述处理器用于执行如权利要求1-11任一项所述的方法。
24.一种计算机存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1-11任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211205094.7A CN117827363A (zh) | 2022-09-29 | 2022-09-29 | 一种容器创建方法、系统及节点 |
PCT/CN2023/116187 WO2024066904A1 (zh) | 2022-09-29 | 2023-08-31 | 一种容器创建方法、系统及节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211205094.7A CN117827363A (zh) | 2022-09-29 | 2022-09-29 | 一种容器创建方法、系统及节点 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117827363A true CN117827363A (zh) | 2024-04-05 |
Family
ID=90476052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211205094.7A Pending CN117827363A (zh) | 2022-09-29 | 2022-09-29 | 一种容器创建方法、系统及节点 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117827363A (zh) |
WO (1) | WO2024066904A1 (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704162B (zh) * | 2019-09-27 | 2022-09-20 | 北京百度网讯科技有限公司 | 物理机共享容器镜像的方法、装置、设备及存储介质 |
CN113391875A (zh) * | 2020-03-13 | 2021-09-14 | 华为技术有限公司 | 容器部署方法与装置 |
-
2022
- 2022-09-29 CN CN202211205094.7A patent/CN117827363A/zh active Pending
-
2023
- 2023-08-31 WO PCT/CN2023/116187 patent/WO2024066904A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024066904A1 (zh) | 2024-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809726B2 (en) | Distributed storage method and device | |
US11086826B2 (en) | Virtualized server systems and methods including domain joining techniques | |
CN109491776B (zh) | 任务编排方法和系统 | |
US11093148B1 (en) | Accelerated volumes | |
CN111930473B (zh) | 在容器云上部署图像识别服务的方法与设备 | |
CN110096220B (zh) | 一种分布式存储系统、数据处理方法和存储节点 | |
WO2016148670A1 (en) | Deduplication and garbage collection across logical databases | |
WO2019153880A1 (zh) | 集群中镜像文件下载的方法、节点、查询服务器 | |
CN113535068A (zh) | 数据读取方法和系统 | |
JP2766424B2 (ja) | 論理ボリューム装置 | |
CN106790403A (zh) | 实现移动云计算中间平台的方法及实现分布式的方法 | |
US20190121899A1 (en) | Apparatus and method for managing integrated storage | |
US20180322675A1 (en) | Image Processing Method and Computing Device | |
CN105022779A (zh) | 一种利用Filesystem API实现HDFS文件存取方法 | |
CN116708583A (zh) | 业务执行方法、存储介质、设备及分布式系统 | |
US10929342B2 (en) | Techniques for limiting the maximum storage consumed by a file system without shrinking an underlying volume | |
CN117827363A (zh) | 一种容器创建方法、系统及节点 | |
CN116594551A (zh) | 一种数据存储方法及装置 | |
CN115037757A (zh) | 一种多集群服务管理系统 | |
CN115827745A (zh) | 内存数据库集群的实现方法、装置及内存数据库集群 | |
JP2022178635A (ja) | 情報処理システム、情報処理装置とその制御方法及びプログラム | |
JP2010237742A (ja) | 仮想マシンサーバ、仮想マシン制御方法及び仮想マシン制御プログラム | |
US11789825B2 (en) | Hashing information of an input/output (I/O) request against a plurality of gateway nodes | |
US12038872B2 (en) | Apparatus and method for managing in-memory container storage | |
CN114911421B (zh) | 基于csi插件的数据存储方法、系统、装置及存储介质 |
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 |