基于安全的容器调度的制作方法

文档序号:15115585发布日期:2018-08-07 20:00阅读:183来源:国知局

为了解决日益增加的对软件应用程序的可移植性需求,软件容器应运而生。容器将应用程序及其所有相关性和函数库捆绑成隔离的、资源受控并且易于部署(deploy)的构造块(buildingblock),构造块可在任意计算环境中运行于任意操作系统上。容器可在物理机或虚拟机上以私有云、公共云或混合云的形式部署,从而利于大型应用程序的工作负载管理。多个容器可在单机上运行并且共享操作系统内核,同时保持诸如存储器、cpu和硬盘的处理器和资源彼此隔离。这使得容器的部署变得有效、快捷和轻量。

存在若干可用的普及化容器开发和管理系统,诸如docker、rocket和kubernetes。这些系统包括用于创建并且运行容器映像的工具,容器映像是构成容器内运行的应用程序的文件。图像文件包含运行单个容器的所有需求以及描绘与该容器相关联的信息和属性的元数据。

系统管理员可以利用容器协调引擎来管理并部署针对服务器或服务器簇的容器分配和部署。诸如kubernetes和dockerswarm的容器协调引擎提供了基本调度功能,主要集中于cpu、内存和存储需求。容器的管理和调度不佳可能会导致无法充分利用潜在资源,并且导致工作负载与资源之间的比例失当。

附图说明

通过结合以下连同附图的详细说明,将更充分地理解本申请。贯穿全文,附图中相同的附图标记指代相同部件,并且其中:

图1图示根据各种示例的使用基于安全的容器调度系统的环境的示意图;

图2是可包含在图1的环境中的一种示例性的基于安全的容器调度系统的框图;

图3是可包含在图1的环境中的另一种示例性的基于安全的容器调度系统的框图;

图4是图3的基于安全的容器调度系统的示例性操作的流程图;

图5是可在图3的基于安全的容器调度系统中实现的一种发现引擎的示例操作的流程图;

图6是可在图3的基于安全的容器调度系统中实现的转换引擎、容器调度器以及资源跟踪器的示例操作的流程图;以及

图7是可包含在图1的环境中的一种示例性的基于安全的容器调度系统的另一框图。

具体实施方式

公开了一种用于将软件容器调度给节点的基于安全的容器调度系统。基于安全的容器调度系统使容器调度自动化,同时还将容器的工作负载的安全需求考虑在内。每个容器被分配给一节点,该节点具有与该容器的工作负载的安全需求相匹配的安全属性,从而确保了自动预先集成安全性并且在整个容器开发与部署过程中维持该安全性。维持安全性对于许多容器工作负载是至关重要的,比如处理敏感数据的那些工作负载或者在多用户云环境中部署的那些工作负载。

如本文大体描述的,节点指的是网络上的计算装置,要么是虚拟机,要么是物理机,诸如个人电脑、手机、打印机或服务器等。与节点相关联的安全属性可包括,例如,是否激活了安全启动或者联邦信息处理标准(fips)模式、该节点是否具有可信平台模块(tpm)硬件、该节点是否具有包含热安全修复(hotsecurityfixes)的特定固件版本或者可能与节点相关联的任意其他安全属性。每个节点可具有与其相关联的元数据,元数据可采用指定与该节点有关的不同属性(例如,安全属性)的标签或注释的形式。同样,容器映像可具有指定与该容器映像相关联的不同需求和属性的元数据。一种与容器映像相关联的示例安全属性可以是:要求该容器映像在具有安全套接层(ssl)的特定版本x的节点上运行。

在各种示例中,基于安全的容器调度系统采用发现引擎和转换引擎实现。发现引擎自动发现节点及其节点安全属性。转换引擎使得容器映像的元数据中被识别出的容器安全属性能够被转换为模板的节点选择器,或者能够被当做容器创建中使用的命令行接口(cli)或者应用程序接口(api)中的参数。在上述ssl的实施例中,可将指定了“ssl_version=x”的节点选择器添加到容器创建模板中,或者使其当做容器创建cli/api中的参数。容器调度器扫描与节点相关联的元数据,比如作为节点簇一部分的节点,从而选择这样的节点:其元数据中列出的节点安全属性与容器的创建模板或cli/api中的节点选择器相匹配。然后,将该容器分配给选定的节点,以确保在其整个部署过程中维持其安全需求。

应意识到,在以下描述中陈述了若干特定细节以提供对各示例的全面理解。然而,应了解到,示例可在不受限于这些特定细节的情况下实现。在其他情况下,为了避免不必要地模糊各实施例的说明,并未详细描述公知的方法和结构。而且,各示例可彼此结合使用。

现在参照图1,描述了根据各种示例的使用基于安全的容器调度系统的环境的示意图。基于安全的容器调度系统100使得容器105能够在节点簇110中的选定节点上运行,并且同时在其整个部署中维持其安全需求。如本文大体描述的,容器指的是图像的运行实例,其可包括应用程序、其关联性、函数库、文件系统、参数以及运行其所需的所有文件。容器映像可具有相关联的元数据,元数据指定用于运行该容器的不同属性和需求。例如,容器105具有容器映像115,容器映像115具有相关联的容器映像元数据120,容器映像元数据120包括容器映像安全属性125。容器映像安全属性125可采用指明用于运行容器105的安全需求的标签或注释的形式。容器映像多个安全属性以及其他属性可包括在容器映像的元数据120中。

节点簇110可包括多个节点110a-f,多个节点110a-f可以是经由网络连接的虚拟机、或物理机。簇110中的每个节点110a-f还可具有相关联的元数据,诸如与节点110c相关联的元数据130。元数据130可包括指明与节点110c相关联的属性的标签或注释,例如,节点安全属性135。

基于安全的容器调度系统100确保容器105被分配给簇110中具有与容器映像安全属性125相匹配的节点安全属性135的节点(例如,节点110c)。管理员140可指定容器映像元数据120中的容器映像安全属性125。然后,基于安全的容器调度系统100自动化使容器105在簇110中的节点中平稳且安全运行所需的所有操作。这些操作可包括簇110中节点的发现、节点安全属性的发现、将节点元数据中其发现到的安全属性作为节点的标签、从容器映像安全属性125生成节点选择器以及调度具有与发现到的安全属性相匹配的节点选择器的容器105。

现在将注意力转向图2,其示出可包含在图1的环境中的一种示例性的基于安全的容器调度系统的框图。基于安全的容器调度系统200具有处理器205以及存储器资源集合210。如本文大体描述的,存储器资源可包括任意数量的、能够存储可由处理器运行的指令的易失性或非易失性存储器部件。应意识到,存储器资源210可集成在单个装置上,或者可跨多个装置分布。进一步,存储器资源210可完全或部分地与其对应的处理器205集成在同一装置(例如,服务器)中,或者存储器资源210可与其对应的处理器205分离但可访问该对应的处理器。

存储器资源210存储基于安全的容器调度系统200的发现引擎215和转换引擎220。应意识到,可对存储器资源210添加其他引擎,以用于额外的或者可替代的功能。引擎210和引擎215中的每一个引擎以及添加到存储器资源210的任意其他引擎可以是硬件(例如,处理器及其电路)和软件(例如,机器或处理器可执行指令、命令或代码,代码诸如固件、编程或目标代码)的任意组合,以实现相应引擎功能。硬件和软件的这种组合可以通过多种不同方式实施。

发现引擎215具有发现与指定范围相关联的节点的指令。例如,该范围可包括与给定网络交换机相连接的所有节点、连接至vlan的所有节点、连接至机架(rack)的所有节点、指定的ip范围内的所有节点、节点簇中的所有节点、或者具有相同特性的逻辑组中的所有节点(例如,指定的硬件或服务器模型的所有节点)。发现引擎215可利用不同指令、根据节点的范围发现节点。例如,发现引擎215可利用链路层发现协议(lldp)来发现连接至交换机的节点、可利用具有地址过滤器的简单服务发现协议(ssdp)或ilo联邦来发现指定的ip范围内的节点、或者利用具有硬件属性过滤器的ssdp或ilo联邦来发现具有指定的硬件特性的节点逻辑组中的节点。

一旦搜寻到与指定范围相关联的节点,发现引擎215就转而继续发现与该节点相关联的节点安全属性,并且为该节点创建对应的安全属性标签。安全属性的发现可通过例如驻留在处理器205和存储器资源210所在服务器内的基板管理控制器(bmc)带外接口来执行。在各种示例中,可对此安全属性发现使用红鲑鱼(redfish)api或带内os命令。例如,redfish可用于发现:是否为节点激活了安全启动或fips模式、该节点是否具有tpm硬件、该节点是否具有包含热安全修复的特定固件版本等。os命令可用于发现该节点的os和ssl/tls版本。应意识到,使用这些或其他发现命令或协议,可为节点发现到任意数量的安全属性。

一旦发现到节点的安全属性,该发现引擎215就为该节点创建对应的安全属性标签,并且将其添加到与该节点相关联的元数据(例如,与图1中节点110c相关联的元数据130)中。例如,如果发现引擎215发现到节点具有tpm并且激活了安全启动,该发现引擎215就在该节点的元数据中插入标签或注释以反映该节点的tpm和安全启动的存在。发现引擎215可为节点簇中的每个节点执行此操作,例如图1中簇110中的节点110a-f,使得簇中的每个节点都以其元数据中的安全属性作为标签。

通过使所有节点都以其安全属性作为标签,确保了容器在其整个部署过程中安全地运行,这成为了使用该基于安全的容器调度系统200将该容器分配给正确节点的关键。这是通过首先使管理员(例如,图1所示管理员140)在容器的图像元数据中为该容器指定期望的安全需求而实现的,例如,图1所示与容器映像115相关联的元数据120。管理员140可在创建容器映像或者在创建容器创建模板时进行这一操作。当管理员140发送请求以在簇110中部署容器105时,该基于安全的容器调度系统200触发其转换引擎220,从而由该容器的图像元数据中指定的容器安全属性生成一个或多个节点选择器。然后,转换引擎220将节点选择器与容器关联,比如,通过将节点选择器插入容器创建模板中或者将其当做容器创建cli/api中的参数。如本文大体描述的,节点选择器是一种标签,其指明了节点托管容器所需的特定需求或属性(例如,安全属性)。例如,节点选择器可指定:该容器的运行需要安全启动。该节点选择器可为添加至容器的创建模板的、“secure_boot=yes”形式的标签。

现在参照图3,应意识到,比如系统300的基于安全的容器调度系统可与容器协调引擎335协作,例如,“dockerswarm、kubernetes、“亚马逊ec2容器服务”(amazonec2containerservice)、“天蓝容器服务”(azurecontainerservice)或者任意其他用于将容器部署给节点或节点簇的系统。此容器协调引擎使得管理员能够基于指定需求调度簇中的容器并且管理它们。在各种示例中,基于安全的容器调度系统300使得容器协调引擎335中的容器调度器340能够将具有其相关联的元数据中限定的安全属性的容器调度给与那些属性相匹配的节点。

基于安全的容器调度系统300保证了节点以其发现到的节点安全属性作为标签,并且保证了当创建容器时、该容器的图像元数据中指定的容器安全属性可被添加到该容器创建模板中的节点选择器捕获。发现引擎315还可自动将发现到的节点安全属性记录到与容器调度器340相关联的容器资源数据库中。在各种示例中,可实施容器调度器插件325以使其与容器协调引擎335中的容器调度器340协作,从而确保支持多个安全属性。资源跟踪引擎330还可用于为节点跟踪安全资源的可用性。资源跟踪引擎330可在整个容器部署过程中保存可用安全资源列表。在将容器置于节点上之前,调度器插件325核查该节点是否具有可用安全资源。在创建容器之后,调度器插件325将该安全资源分配给该容器,并且从该可用安全资源列表中移除该已分配的安全资源。

应意识到,基于安全的容器调度系统300可与容器协调引擎335结合,或者其可以是用于预分配(provision)并且管理节点簇的管理服务器中的单独系统。在各种示例中,基于安全的容器调度系统300还可在虚拟机中实施,作为其自身的容器,或者集成在任意其他机构中以确保将容器分配给具有相匹配的安全属性的节点。还应意识到,图2中的基于安全的容器调度系统200可包括图3中基于安全的容器调度系统300的一个或多个结构或功能方面。

现在参照图4详细描述基于安全的容器调度系统300的操作。首先,通过发现引擎315发现节点(400)。该节点可为预分配给管理员的、托管容器的节点簇的一部分。对于簇中的每个已发现到的节点,发现引擎315生成命令以发现与该已发现到的节点相关联的节点安全属性(405)。接下来,转换引擎320从与容器映像相关联的元数据中指定的容器安全属性生成节点选择器(410)。当部署簇中运行的容器时,管理员使用该节点选择器以将该节点选择器插入容器创建模板中或者将其当做容器创建cli/api中的参数。然后,调度该容器以将其部署至节点簇中的选定节点(415)。该选定节点是具有节点安全属性的节点,该节点安全属性匹配于与该容器相关联的节点选择器。可通过如上文中参照图3所述的调度器插件325和容器协调引擎335中的容器调度器340执行调度。

现在参照图5,描绘了可在图3所示的基于安全的容器调度系统中实施的一种发现引擎的示例性操作的流程图。发现引擎315首先发现节点簇中的节点(500)。可以通过多种方式完成发现操作,包括使用lldp、ssdp或ilo联邦等。接下来,发现引擎315生成命令以发现与该节点相关联的节点安全属性(505)。节点安全属性指定了包含在节点中的安全特征,比如是否激活了安全启动、该节点是否具有tpm硬件、该节点是否具有包含热安全修复的特定固件版本等。一旦已发现到簇中节点的所有安全属性,发现引擎315就创建与安全属性对应的标签(510)并且将其插入与该节点相关联的元数据中(515)。发现引擎315还可将该节点安全属性记录到与容器调度器340相关联的容器资源数据库中。

现在将注意力转向图6,其示出可在图3所示的基于安全的容器调度系统中实施的转换引擎、容器调度器以及资源跟踪器的示例性操作的流程图。如上所述,当容器创建请求到达基于安全的容器调度系统300时,如上所述,转换引擎320从容器的图像元数据中指定的容器安全属性生成节点选择器(600)。然后,通过将该节点选择器添加到容器创建模板中或者将该节点选择器当做容器创建cli/api中的参数,转换引擎320将该节点选择器与该容器关联(605)。

一旦将节点选择器嵌入容器创建模板或cli/api中,容器调度器插件325和容器调度器340就准备将该容器分配给节点。容器调度是通过首先针对与节点选择器相匹配的安全属性扫描节点元数据而执行的(610)。然后,选定具有与节点选择器相匹配的安全属性的节点以托管该容器(615)。如果需要将特定的安全资源分配给容器,则基于安全的容器调度系统300通过在整个容器部署过程中监控安全资源的可用性而保持对安全资源的跟踪(620)。此监控是通过资源跟踪引擎330执行的,其可保存所有可用安全属性的列表。在将容器置于节点上之前,调度器插件325核查该选定的节点是否仍具有可用安全资源。当已在节点上创建容器之后,该调度器插件325将该安全资源分配给该容器,并从可用安全资源的列表中移除已分配的安全资源。

现在将注意力转向图7,其示出可包含在图1所示环境中的一种示例性的基于安全的容器调度系统的另一框图。基于安全的容器调度系统700包括处理器705和存储可由处理器705运行的指令715-730的有形非瞬态计算机可读介质710。计算机可读介质710可包括:诸如随机存取存储器(ram)的易失性和/或非易失性存储器、诸如硬盘和/或磁带存储器的磁存储器、固态驱动器(ssd)、闪存、相变存储器、记忆性存储器等。

指令715包括:发现指定范围内容器节点的指令。容器节点可为簇中的用于托管多个容器的虚拟或物理节点。一旦已发现到簇中的所有节点,则指令720为发现到的每个节点发现节点安全属性。节点安全属性可包括节点的任意与安全相关的属性,比如tpm、安全启动、ssl/tls版本、fips激活以及具有热安全修复的os和固件版本等。通过指令725将发现到的节点安全属性作为标签插入节点元数据中。最后,指令730从与容器相关联的容器安全属性生成节点选择器。将该节点选择器嵌入容器创建模板中或者将其当做容器的cli/api中的参数,从而可将该容器分配给具有相匹配的安全属性的节点。由此使得能够自动预先集成安全性并且在整个容器开发与部署过程中维持该安全性。

应意识到,所公开的实施例的前述说明用于使本领域普通技术人员能够使用本公开。对于本领域普通技术人员而言,这些实施例的各种修改是显而易见的,并且可在不脱离本公开的实质和范围的前提下将本文限定的一般原理应用于其他实施例。因此,本公开并非旨在受限于本文示出的实施例,而是应遵循与本文公开的原理和新颖性一致的最大范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1