CN114385310B - 一种公共云容器实例创建方法及装置 - Google Patents
一种公共云容器实例创建方法及装置 Download PDFInfo
- Publication number
- CN114385310B CN114385310B CN202111463335.3A CN202111463335A CN114385310B CN 114385310 B CN114385310 B CN 114385310B CN 202111463335 A CN202111463335 A CN 202111463335A CN 114385310 B CN114385310 B CN 114385310B
- Authority
- CN
- China
- Prior art keywords
- container
- virtual machine
- component
- management
- container instance
- 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
- 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
-
- 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/45575—Starting, stopping, suspending or resuming 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/45587—Isolation or security of 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/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本说明书一个或多个实施例中提供一种公共云容器实例创建方法及装置,该方法应用于计算节点,计算节点上的容器实例和容器实例管理组件分别被配置在了容器虚拟机和管理虚拟机内,计算节点中还有容器生产代理组件和创建请求代理组件。容器实例的创建过程包括:创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令;容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令;容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。
Description
技术领域
本说明书一个或多个实施例涉及计算机应用技术领域,尤其涉及一种公共云容器实例创建方法及装置。
背景技术
容器技术是一种操作系统层虚拟化技术,利用容器技术可以在一台物理主机上虚拟出多个独立的、互不干扰的容器,每个容器都为运行在该容器内的应用提供了独立的应用运行环境。随着云计算服务的发展,有些提供云计算服务的云平台提供了公共云场景下的容器服务,用户可以在云平台创建并使用容器实例。
容器实例创建过程中,需要容器实例管理组件的参与,比如kublet、containerd等,容器实例管理组件在接收到容器生产指令后负责生产容器,此外,容器实例管理组件还负责维持容器运行时的环境。
云平台上的容器实例一般创建在虚拟机中,一些情况下,考虑到容器实例管理组件在容器实例内部会占用虚拟机的资源,使得容器实例可用资源减少。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种公共云容器实例创建方法及装置。
根据本说明书一个或多个实施例的第一方面,提出了一种公共云容器实例创建方法,应用于计算节点,所述计算节点用于承载容器实例,计算节点配置有管理虚拟机和容器虚拟机;所述计算节点还配置有以下组件:容器实例管理组件,容器生产代理组件和创建请求代理组件;其中,容器实例管理组件配置于管理虚拟机内;
所述方法包括:
创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令;
容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令;
容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。
根据本说明书一个或多个实施例的第二方面,提出了一种计算节点,所述计算节点用于承载容器实例;所述计算节点用于承载容器实例,计算节点配置有管理虚拟机和容器虚拟机;所述计算节点还配置有以下组件:容器实例管理组件,容器生产代理组件和创建请求代理组件;其中,容器实例管理组件配置于管理虚拟机内;
所述计算节点中各个组件执行以下方法,实现公共云容器实例的创建:
创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令;
容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令;
容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。
根据本说明书实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述的公共云容器实例创建方法。
根据本说明书实施例的第四方面,提供一种计算机程序,所述计算机程序被运行时实现上述的公共云容器实例创建方法。
根据本说明书一个或多个实施例的第五方面,提出了一种容器服务系统,所述容器服务系统至少包括管理虚拟机和容器虚拟机;所述容器服务系统还配置有以下组件:容器实例管理组件,容器生产代理组件和创建请求代理组件;其中,容器实例管理组件配置于管理虚拟机内;
所述容器服务系统各个部分执行以下方法,实现公共云容器实例的创建:
创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令;
容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令;
容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。
本说明书一个或多个实施例中提供一种公共云容器实例创建方法,该方法应用于计算节点,计算节点上的容器实例和容器实例管理组件分别被配置在了容器虚拟机和管理虚拟机内,计算节点中还有容器生产代理组件和创建请求代理组件。容器实例的创建过程包括:创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机发送容器实例创建指令,以使得管理虚拟机内的容器实例管理组件接收到容器实例创建指令;容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令;容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。通过不将容器实例管理组件安装在容器虚拟机中,使得容器虚拟机内的资源不会被容器实例管理组件抢占,此外,将容器实例管理组件安装在独立于容器虚拟机的管理虚拟机中,通过虚拟机的隔离功能,使得容器实例管理组件被攻击后,也不会影响宿主机(即计算节点)的安全,通过管理虚拟机构建了一个安全边界。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本说明书根据一实施例示出的一种计算节点的结构示意图。
图2是本说明书根据一实施例示出的另一种计算节点的结构示意图。
图3是本说明书根据一示例性实施例示出的一种公共云容器实例创建方法的流程图。
图4是本说明书根据一实施例示出的又一种计算节点的结构示意图。
图5是本说明书根据一具体实施例示出的一种计算节点的结构示意图。
图6是本说明书根据一示例性实施例示出的一种计算节点的硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
公共云一般指的是在网络上为用户提供云计算服务的云平台。云平台会为用户提供各种各样的云计算服务,比如容器服务。通过使用容器服务,云平台用户可以在云平台上创建并使用容器实例。
对于公共云场景下通过容器服务所创建的容器实例而言,由于公共云会为多个用户提供容器服务,而一个计算节点(节点)上会创建多个容器实例,那么一个计算节点上可能会有不同用户的容器实例,这就使得不同的容器实例之间需要通过隔离措施隔离起来,以防不同的容器实例之间互相影响。而常用的手段便是将容器实例创建在虚拟机中,每个虚拟机中只承载一个容器实例,而虚拟机具有隔离功能,这样,不同的容器实例便通过不同的虚拟机隔离起来。
而对于容器实例来说,一个容器实例也就是一个pod,一个pod中会包括多个容器(container)。容器的生产一般需要容器实例管理组件的参与。容器实例管理组件一般包括如kublet等的负责管理运行中的pod的组件,和如containerd等的容器运行时。而由于容器实例管理组件一般不能控制虚拟机启动,而在创建容器实例时,需要先启动一个用于承载容器实例的虚拟机,因此,为了能完成虚拟机的启动进而完成创建容器实例的过程,容器实例管理组件一般也被安装在虚拟机内部。
而容器实例的计费规则一般是按照容器实例所使用的资源大小来计费,也就是说按照容器实例所在的虚拟机的可用资源大小来计费。用户在创建容器实例前,需要先购买固定的规格的可用资源,作为容器实例的可用资源。那么每个虚拟机的可用资源是有限的,而在虚拟机内运行的容器实例管理组件会抢占虚拟机资源,使得每个容器实例可用资源变少。这就产生了将容器实例管理组件安装在虚拟机外(安装在宿主机上)的需求。
相关技术中,容器实例管理组件无法安装在虚拟机外的原因,是因为容器实例管理组件无法控制虚拟机的启动,而随着技术的方法,相关技术中出现了一种专门为容器开发的轻量级的虚拟机,比如runV,这种虚拟机可以被容器实例组件控制启动(这种虚拟机后文称之为容器虚拟机)。基于容器虚拟机,无需将容器实例管理组件安装在容器虚拟机中也能正常生产容器,使用容器虚拟机将可以使得容器虚拟机的可用资源不会被挤占。
这种情况下(将容器实例管理组件不安装在容器虚拟机内,而安装在宿主机上),实现了一种多租架构,即一个容器实例管理组件来管理计算节点上的所有容器实例。这种情况下,容器实例的创建过程一般是,容器服务的管控服务器在接收到用户的容器实例创建请求的情况下,将容器实例创建请求转发给某个计算节点上的创建请求代理组件,创建请求代理组件接收到容器实例创建请求后,向容器实例管理组件发送容器实例创建指令,容器实例管理组件控制容器虚拟机启动,并在启动的容器虚拟机中创建容器实例。
而进一步地,考虑到容器实例管理组件一般都是一些开源组件,如果这些开源组件本身是不可靠的,那么这些开源组件将容易受到攻击,进而影响整个计算节点的安全。而又考虑到容器实例管理组件一般都会存在一些安全漏洞,比如kublet具有一些开放端口,而这些开放端口可能会泄露敏感信息,攻击者就可能会通过这些敏感信息进行攻击。那么如果直接将开源组件安装在计算节点中而不加任何防护措施,将会由于开源组件的安全漏洞而导致计算节点受到安全威胁(也就是说攻击容易扩散到宿主机)。
为了解决上述问题,考虑到虚拟机具有隔离功能,可以将容器实例管理组件安装在单独的虚拟机(为了将该单独的虚拟机与容器虚拟机区分开,将该虚拟机称之为管理虚拟机)中。也就是说,如图1所示的结构,容器实例管理组件和容器实例分别在不同的虚拟机中。其中,虽然图1中只示出了3个容器虚拟机,这并不代表一个计算节点中只会有3个容器虚拟机(一个容器虚拟机对应于一个容器实例)。
在图1的结构下,由于容器实例被放置在了管理虚拟机内,无法直接与计算节点上的其他组件进行通信,那么就产生了一个问题,即虚拟机内的容器实例管理组件如何和其他组件通信的问题。
首先,对于容器实例组件和创建请求代理组件之间的通信来说,考虑到宿主机和容器实例组件所在的管理虚拟机是两个逻辑意义上的设备,可以通过设备与设备之间通信的方式来进行通信,比如通过通信协议进行通信等。以IP协议为例而言,宿主机和管理虚拟机一般都可以设置IP地址,那么可以分别给管理虚拟机和计算节点(宿主机)设置不同的局域网IP地址,以使得两者之间可以通过IP协议进行通信。
其次,对于容器实例管理组件和容器虚拟机而言,考虑到容器虚拟机一般是一种轻量级虚拟机,无法设置IP地址,无法通过IP协议或其他通信协议进行通信;而且在容器虚拟机未启动前,容器虚拟机不存在,也不可能通过通信协议进行通信。考虑到可以在计算节点内设置一个可以转发容器实例管理指令的组件,来将容器实例管理组件的指令转发出去(该组件后文称之为容器生产代理组件)。这样解决了容器实例管理组件的通信问题。
基于上述分析,本说明书提供一种公共云容器实例创建方法,该方法应用于计算节点,计算节点上的容器实例和容器实例管理组件分别被配置在了容器虚拟机和管理虚拟机内,计算节点中还有容器生产代理组件和创建请求代理组件。容器实例的创建过程包括:创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机发送容器实例创建指令,以使得管理虚拟机内的容器实例管理组件接收到容器实例创建指令;容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令;容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。通过不将容器实例管理组件安装在容器虚拟机中,使得容器虚拟机内的资源不会被容器实例管理组件抢占,此外,将容器实例管理组件安装在独立于容器虚拟机的管理虚拟机中,通过虚拟机的隔离功能,使得容器实例管理组件被攻击后,也不会影响宿主机(即计算节点)的安全,通过管理虚拟机构建了一个安全边界。同时,通过将容器实例管理组件安装在管理虚拟机内,打破了原有的一个容器实例管理组件对应于一个容器实例的结构,实现多租结构,即一个容器实例管理组件管理为计算节点上的所有容器实例提供服务的结构。
接下来将对本说明书提供的一种公共云容器实例创建方法进行详细说明。
首先需要说明的是,本说明书提供的公共云容器实例创建方法,应用于计算节点。所述计算节点用于承载容器实例,所述计算节点配置有管理虚拟机和容器虚拟机;所述计算节点还配置有以下组件:容器实例管理组件,容器生产代理组件和创建请求代理组件;其中,容器实例管理组件配置于管理虚拟机内。容器实例和容器实例管理组件分别被配置在了不同的虚拟机内,所述容器生产代理组件用于容器虚拟机和管理虚拟机之间通信,创建请求代理组件用于代理管控服务器,向容器实例管理组件下发容器实例创建指令。上述的计算节点的一种整体的结构如图2所示,需要说明的是,虽然图2中示出了两个容器虚拟机,但是这并不代表对本说明书中计算节点可以承载的容器实例的数量的限定。
其中,计算节点是云平台中用于承载容器实例的服务器,其在整个系统内,作为生产容器的节点。相对应的,管控服务器相当于master节点,负责管理多个计算节点,接收并处理用户发送的请求等。
对公共云容器实例创建方法所应用的计算节点的结构进行整体说明后,接下来将详细描述公共云容器实例创建方法的具体步骤。如图3所示,本说明书提供的公共云容器实例创建方法包括以下步骤:
步骤301,创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令。
首先,先对步骤301中出现的名词进行解释。有些情况下创建请求代理组件对接容器服务的管控服务器,用于接收容器实例创建请求。当然创建请求代理组件也可以直接对接用户设备,直接接收用户设备发送的容器实例创建请求。
对于容器实例创建请求和容器实例创建指令的不同之处来说,有的情况下,容器实例创建请求无法直接被容器实例管理组件解析,创建请求代理组件负责将容器实例创建请求转换为容器实例管理组件可以解析的容器实例创建指令,并将容器实例创建指令发送给管理虚拟机。此外,如果容器实例创建请求可以被容器实例管理组件解析,创建请求代理组件可以将容器实例创建请求直接转发给管理虚拟机,这种情况下,步骤301中的容器实例创建指令和容器实例创建请求的内容是相同的。
其中,对于容器实例创建请求和容器实例创建指令的内容而言,两者中都包括有用户标识,容器实例的创建配置(比如容器虚拟机对应的沙箱配置,CPU及内存大小等)。有些情况下,创建请求代理组件会根据容器实例创建指令,获取容器虚拟机的网卡和磁盘(以使得容器虚拟机具有网络通信和存储功能),这种情况下,容器实例创建指令相比于容器实例创建请求会多:用于标记获取的网卡和磁盘的内容,以使得容器实例管理组件可以找到获取的网卡和磁盘,并基于获取的网卡和磁盘,启动容器虚拟机。
此外,还需要对步骤301解决的一个问题——创建请求代理组件和容器实例管理组件如何通信的问题进行说明。创建请求代理组件和容器实例管理组件并不在一个逻辑设备内,创建请求代理组件无法直接和容器实例管理组件通信,因此创建请求代理组件如果想要向容器实例管理组件发送消息,需要通过容器实例管理组件所在的管理虚拟机发送,也就是和通过逻辑设备之间交互的方法,来使得管理虚拟机内的容器实例管理组件,可以和宿主机内的创建请求代理组件完成通信。
具体的通信方法,比如可以是通过特定的通信协议进行通信等。比如通过IP协议进行通信,也就是说,管理虚拟机和宿主机(计算节点)预先配置有不同的局域网IP地址,然后通过发送报文的方式进行通信。具体而言,所述管理虚拟机和计算节点预先配置有IP地址;步骤301具体包括:所述创建请求代理组件根据接收的容器实例创建请求,通过IP协议的传输方式,向管理虚拟机发送容器实例创建指令。
通过上述方式,实现了在两个不同逻辑设备内的创建请求代理组件和容器实例管理组件的通信。
步骤303,容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令。
步骤305,容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。
接下来将对步骤303和步骤305进行统一说明。
首先,先对步骤303和步骤305中出现的具体名词进行解释。其中,生产指令用于控制容器虚拟机启动,并使得容器虚拟机内的容器生产代理组件生产容器。生产指令包括容器虚拟机启动所必须的沙箱配置,以及资源配置等(比如CPU及内存大小等)。
容器生产代理组件指的是可以根据生产指令生产容器的组件,如果容器实例管理组件和容器实例在同一个逻辑设备内,由于容器实例管理组件可以直接生产容器,则不需要容器生产代理组件,而由于容器实例和容器实例管理组件并不在同一个逻辑设备内,容器实例管理组件无法控制容器虚拟机内生产容器,因此需要容器生产代理组件来帮助生产容器。容器生产代理组件由于只是代理生产容器这一个流程,相较于功能更多的容器实例管理组件,容器生产代理组件所占用的资源(内存及CPU)更少,可以使得容器实例可以使用容器虚拟机内更多的资源。
此外,还需要对步骤303和步骤305所解决的问题进行说明,步骤303所解决的问题是如何使得管理虚拟机内的容器实例管理组件控制容器虚拟机启动,以及如何使得管理虚拟机内的容器实例管理组件完成后续和容器实例的通信。
第一,对于容器虚拟机的启动而言,如上所述,由于容器虚拟机在未启动前是无法通过通信协议与之通信的,因此需要通过容器生产代理组件,来将管理虚拟机内的容器实例管理组件的生产指令转发出去,从而通过快照功能,控制容器虚拟机快速启动。
对于容器生产代理组件转发生产指令的方法而言,可以是容器实例管理组件通过的管理虚拟机的预定端口将生产指令发送出去,容器生产代理组件负责监听该预定端口,从而接收到管理虚拟机内的容器实例管理组件所发送的生产指令。换言之,所述容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令,包括:容器实例管理组件接收容器实例创建指令,通过管理虚拟机的预定端口发送生产指令;容器生产代理组件根据监听管理虚拟机的预定端口,接收管理虚拟机预定端口发出的生产指令。当然也可以通过其他的虚拟机和宿主机的组件的通信方法实现,本说明书在此不做限定。
第二,对于容器实例管理组件和容器实例的通信而言。在容器虚拟机启动后,如果容器虚拟机可以设置IP地址,可以通过IP协议进行通信。但是有些情况下,由于容器虚拟机是专门为容器开发的轻量级虚拟机,导致容器虚拟机一般不能设置IP地址,这种情况下,可以通过其他的通信方法进行通信。
比如可以通过如容器生产代理组件或其他组件来转发容器实例管理组件发送的消息。具体而言,容器虚拟机在启动时,会在宿主机内暴露一个域套接字(unix domainsocket),容器生产代理组件通过套接字,将生产指令发送给容器虚拟机,从而使得容器虚拟机内的容器生产代理组件可以接收到生产指令。换言之,所述调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,包括:容器生产代理组件通过域套接字通信的方式,将生产指令转发给容器虚拟机,以调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器。
此外,还可以通过vsock的方式来使得管理虚拟机和容器虚拟机进行通信。所述管理虚拟机预先设置有vsock标识;所述方法还包括:容器实例管理组件调用资源分配组件,为启动的容器虚拟机分配vsock标识;所述调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,包括:容器实例管理组件通过vsock,调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器。
换言之,给管理虚拟机和容器虚拟机配置了vsock标识,从而使得两者至今可以进行通信。此外,除了生产容器时,容器虚拟机需要和管理虚拟机进行通信外,容器生产完成后,管理虚拟机内的容器实例管理组件仍然可以通过vsock向容器虚拟机内的运维代理组件发送消息,从而实现容器实例管理组件对于容器实例的管理。
在对步骤301-步骤305进行描述后,还需要对计算节点和容器虚拟机的网卡和磁盘获取方法进行说明。
对于计算节点而言,有些计算节点会包括两个层面,分别是资源管理层和软件层,其中,资源管理层用于管理计算节点的硬件资源,软件层用于处理容器实例创建逻辑。这种情况下,计算节点内各个组件的分布如图4所示,需要说明的是,虽然图2中示出了两个容器虚拟机,但是这并不代表对本说明书中计算节点可以承载的容器实例的数量的限定。其中,所述创建请求代理组件位于资源管理层,所述容器实例管理组件、所述容器虚拟机、所述管理虚拟机及所述容器生产代理组件位于软件层。此外,在存在资源分配组件的情况下,资源分配组件也位于软件层。
在应用于上述计算节点的情况下,如果创建请求代理组件和容器实例管理组件通信是通过IP协议进行通信,这种情况下,计算节点的资源管理层和软件层属于两个逻辑设备,那么资源管理层和软件层都有各自的IP地址。
对于容器虚拟机的网卡和磁盘获取方法而言,由于计算节点往往不具备和外网通信的能力,也没有足够的存储空间,因此,容器虚拟机的网卡和磁盘需要通过其他云服务实现。比如通过专有网络(Virtual Private Cloud,VPC)为容器虚拟机提供网卡,通过云存储服务为容器虚拟机提供磁盘。云存储服务可以是任何可以提供云存储空间的服务,本说明书在此不做限制。
具体而言,上述方法还包括:创建请求代理组件接受管控服务器的调用,控制网卡获取组件和云存储获取组件分别从VPC服务器和云存储服务器获取网卡和云存储空间;容器虚拟机在启动过程中,将创建请求代理组件获取的网卡和云存储空间作为容器虚拟机的网卡和存储。其中,控制网卡获取组件和云存储获取组件获取网卡和云存储空间的也可以是资源管理层的其他组件,本说明书在此不做限定。
此外,在该方法应用于包括两个层面的计算节点中的情况下,获取网卡和磁盘的过程具体而言:创建请求代理组件接受管控服务器的调用,控制网卡获取组件和云存储获取组件分别从VPC服务器和云存储服务器获取网卡和云存储空间。由于网卡获取组件和云存储获取组件为资源管理层的组件,获取的网卡和云存储空间也并不能直接被软件层使用,需要由创建请求代理组件将获取的网卡和云存储以文件的形式映射到软件层。
通过上述方法,在将保证了容器实例可使用更多虚拟机的资源的同时,也为容器实例管理组件构建了安全边界,使得开源组件被攻击的情况下,也不会威胁宿主机(计算节点)的安全。
接下来将通过一具体实施例来对本说明书所描述的云平台容器实例创建方法来进行说明。
如图5所示,图5示出了具体实施例中计算节点的结构,以及该方法涉及的其他设备和计算节点之间的通信关系,需要说明的是,虽然图5中只示出了1个容器虚拟机,但是这并不代表对本说明书中计算节点可以承载的容器实例的数量的限定。图中部分组件为前文中解释过的组件,对于这些组件的功能不再赘述。
下面将对前文未解释过的组件进行说明,网卡存储准备组件负责接收管控服务器的调用,调用网卡获取组件和云存储获取组件来获取网卡和磁盘。设备模拟组件负责生产iohub实例,以使得iohub实例将获取的网卡和磁盘以bdf文件的形式映射到软件层。数据转发组件和容器生产代理组件的功能类似,均作为了管理虚拟机和容器虚拟机之间通信的桥梁,两者之间的区别在于,容器生产代理组件负责转发控制指令,数据转发组件负责转发数据层面的信息,两者分开来是为了使得控制面和数据面解耦,防止一方出现问题影响另一方,容器生产代理组件主要用于传输指令,数据转发组件主要用于传输日志和容器实例的当前状态等信息。
此外,除了图中示出的组件外,管理虚拟机内部的容器实例代理组件由两部分组成,分别是kublet,和容器运行时containerd,容器虚拟机内部还包括负责将指令翻译为容器虚拟机内的容器生产组件可以执行的命令的翻译组件,翻译组件和容器生产组件共同合作生产容器。
在对图5的各个名词的含义进行说明后,下面将详细叙述容器实例的生产过程。
首先,用户设备向管控服务器提交容器实例创建请求后,管控服务器调用网卡存储准备组件,进而网卡存储准备组件调用网卡获取组件和云存储获取组件分别从VPC服务器和云存储服务器获取网卡和磁盘。管控服务器调用创建请求代理组件,使得创建请求代理组件调用设备模拟组件生产资源管理层上的iohub实例,以使得iohub实例将获取的网卡和磁盘以bdf文几件的形式映射到软件层中。创建请求代理组件在接收到容器实例创建请求后,通过IP协议,向管理虚拟机发送容器实例创建指令,管理虚拟机中的kublet在接收到容器实例创建指令后,会将沙箱(sandbox)的配置发送给容器运行时,容器运行时会通过管理虚拟机的预定端口发送生产指令,监听管理虚拟机的预定端口的容器生产代理组件在接收到生产指令后,控制容器虚拟机启动,然后调用容器生产组件在容器虚拟机内生产容器。此外,kublet还会调用资源分配组件为每个容器虚拟机分配vsock标识,以使得启动后的容器虚拟机可以与管理虚拟机通过vsock标识实现通信。
此外,管理虚拟机的网卡是通过资源管理层的设备模拟进行网卡模拟,将资源管理层的网卡直通到软件层。对于管理虚拟机的磁盘而言,其系统盘采用直接准备好的qcow2文件经过iohub实例模拟云盘,直通到软件层中,这样做的目的是,由于系统盘归资源管理层管理,软件层无法直接使用,需要将其映射到软件层才能使得软件层可以使用,因此通过映射的方式使得软件层侧的管理虚拟机可以使用相应的系统盘。
这样就完成了公共云容器实例的创建。
与前述方法的实施例相对应,本说明书还提供了一种计算节点,所述计算节点用于承载容器实例;计算节点配置有管理虚拟机和容器虚拟机;所述计算节点还配置有以下组件:容器实例管理组件,容器生产代理组件和创建请求代理组件;其中,容器实例管理组件配置于管理虚拟机内。
所述计算节点中各个组件执行以下方法,实现公共云容器实例的创建:
创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令。
容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令。
容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。
此外,上述虚拟机和组件除了被配置在一个计算节点内,上述容器实例创建的过程也可以由多个机器的组件完成(比如上述过程由计算节点和计算节点上插的扩展卡上的组件完成)。具体而言,本说明书还提供一种容器服务系统,所述容器服务系统至少包括管理虚拟机和容器虚拟机;所述容器服务系统还配置有以下组件:容器实例管理组件,容器生产代理组件和创建请求代理组件;其中,容器实例管理组件配置于管理虚拟机内。
所述容器服务系统各个部分执行以下方法,实现公共云容器实例的创建:
创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令。
容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令。
容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。
上述计算节点或容器服务系统中各个组件的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
如图6所示,图6示出了上述计算节点一种硬件结构图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的公共云容器实例创建方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
此外,本说明书还提供了一种计算机程序,该程序被运行时实现上述的公共云容器实例创建方法。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
Claims (11)
1.一种公共云容器实例创建方法,应用于计算节点,所述计算节点用于承载容器实例,所述计算节点配置有管理虚拟机和容器虚拟机;所述计算节点还配置有以下组件:容器实例管理组件,容器生产代理组件和创建请求代理组件;其中,容器实例管理组件配置于管理虚拟机内;
所述方法包括:
创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令;
容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令;
容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。
2.根据权利要求1所述的方法,所述管理虚拟机和计算节点预先配置有IP地址;
所述创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令,包括:
所述创建请求代理组件根据接收的容器实例创建请求,通过IP协议的传输方式,向管理虚拟机的容器实例管理组件发送容器实例创建指令。
3.根据权利要求1所述的方法,所述容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令,包括:
容器实例管理组件接收容器实例创建指令,通过管理虚拟机的预定端口发送生产指令;
容器生产代理组件根据监听管理虚拟机的预定端口,接收管理虚拟机预定端口发出的生产指令。
4.根据权利要求1所述的方法,所述调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,包括:
容器生产代理组件通过域套接字通信的方式,将生产指令转发给容器虚拟机,以调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器。
5.根据权利要求1所述的方法,所述管理虚拟机预先设置有vsock标识;
所述方法还包括:
容器实例管理组件调用资源分配组件,为启动的容器虚拟机分配vsock标识;
所述调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,包括:
容器实例管理组件通过vsock,调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器。
6.根据权利要求1所述的方法,所述计算节点包括资源管理层和软件层,其中,资源管理层用于管理计算节点的硬件资源,软件层用于处理容器实例创建逻辑;所述创建请求代理组件位于资源管理层,所述容器实例管理组件、所述容器虚拟机、所述管理虚拟机及所述容器生产代理组件位于软件层。
7.根据权利要求1所述的方法,还包括:
创建请求代理组件接受管控服务器的调用,控制网卡获取组件和云存储获取组件分别从专有网络VPC服务器和云存储服务器获取网卡和云存储空间;
容器虚拟机在启动过程中,将创建请求代理组件获取的网卡和云存储空间作为容器虚拟机的网卡和存储。
8.一种计算节点,所述计算节点用于承载容器实例;所述计算节点用于承载容器实例,计算节点配置有管理虚拟机和容器虚拟机;所述计算节点还配置有以下组件:容器实例管理组件,容器生产代理组件和创建请求代理组件;其中,容器实例管理组件配置于管理虚拟机内;
所述计算节点中各个组件执行以下方法,实现公共云容器实例的创建:
创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令;
容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令;
容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。
9.一种容器服务系统,所述容器服务系统至少包括管理虚拟机和容器虚拟机;所述容器服务系统还配置有以下组件:容器实例管理组件,容器生产代理组件和创建请求代理组件;其中,容器实例管理组件配置于管理虚拟机内;
所述容器服务系统各个部分执行以下方法,实现公共云容器实例的创建:
创建请求代理组件根据接收的容器实例创建请求,向管理虚拟机的容器实例管理组件发送容器实例创建指令;
容器实例管理组件接收到容器实例创建指令,通过管理虚拟机向容器生产代理组件发送生产指令;
容器生产代理组件根据生产指令,触发容器虚拟机启动,并调用容器虚拟机内的容器生产代理组件在容器虚拟机内生产容器,以创建容器实例。
10.一种计算机可读存储介质,所述可读存储介质上存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1-7中任一项所述的方法。
11.一种计算机程序产品,所述计算机程序产品被运行时实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111463335.3A CN114385310B (zh) | 2021-12-02 | 2021-12-02 | 一种公共云容器实例创建方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111463335.3A CN114385310B (zh) | 2021-12-02 | 2021-12-02 | 一种公共云容器实例创建方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114385310A CN114385310A (zh) | 2022-04-22 |
CN114385310B true CN114385310B (zh) | 2024-11-19 |
Family
ID=81196809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111463335.3A Active CN114385310B (zh) | 2021-12-02 | 2021-12-02 | 一种公共云容器实例创建方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385310B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108089912A (zh) * | 2017-12-19 | 2018-05-29 | 深信服科技股份有限公司 | 一种虚拟机与容器超融合系统构建方法及装置 |
CN113301004A (zh) * | 2020-06-17 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、通信方法和单网卡虚拟机 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10719369B1 (en) * | 2017-06-01 | 2020-07-21 | Amazon Technologies, Inc. | Network interfaces for containers running on a virtual machine instance in a distributed computing environment |
US11171834B1 (en) * | 2018-11-16 | 2021-11-09 | Juniper Networks, Inc. | Distributed virtualized computing infrastructure management |
-
2021
- 2021-12-02 CN CN202111463335.3A patent/CN114385310B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108089912A (zh) * | 2017-12-19 | 2018-05-29 | 深信服科技股份有限公司 | 一种虚拟机与容器超融合系统构建方法及装置 |
CN113301004A (zh) * | 2020-06-17 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、通信方法和单网卡虚拟机 |
Also Published As
Publication number | Publication date |
---|---|
CN114385310A (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114422350B (zh) | 一种公共云容器实例创建方法 | |
US9910765B2 (en) | Providing testing environments for software applications using virtualization and a native hardware layer | |
CN113301116B (zh) | 微服务应用跨网络通信方法、装置、系统及设备 | |
CN109547509B (zh) | 一种跨平台部署的方法和系统 | |
US11290561B2 (en) | Methods and systems for managing applications of a multi-access edge computing environment | |
CN110995561B (zh) | 基于容器技术的虚拟网络数据通信交互方法与系统 | |
CN109743205B (zh) | 一种云平台os网络管理方法、装置及服务器 | |
CN103685608A (zh) | 一种自动配置安全虚拟机ip地址的方法及装置 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
US20230021723A1 (en) | Automated migration of monolithic applications to container platforms | |
US20200162286A1 (en) | Address system | |
CN113612643B (zh) | 云手机的网络配置方法、装置、设备以及存储介质 | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
CN112698930B (zh) | 一种获取服务器标识的方法、装置、设备及介质 | |
CN112416522B (zh) | 一种虚拟机控制方法及其装置 | |
CN114938394A (zh) | 跨集群网络控制方法、装置、设备及存储介质 | |
CN115086166A (zh) | 计算系统、容器网络配置方法及存储介质 | |
CN114385310B (zh) | 一种公共云容器实例创建方法及装置 | |
US12254339B2 (en) | Methods for application deployment across multiple computing domains and devices thereof | |
CN112087311B (zh) | 一种虚拟网络功能vnf部署方法及装置 | |
CN113342457A (zh) | 基于Eureka服务注册与发现的Kubernetes调度方法 | |
CN114942822A (zh) | 扁平网络构建方法、装置、电子设备及存储介质 | |
CN110719303B (zh) | 一种容器化nrf的方法及系统 | |
CN114924831A (zh) | 一种终端模拟的方法和装置 | |
CN117203613A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |