发布信息

一种Kubernetes控制面组件的性能评估方法和系统与流程 专利技术说明

作者:admin      2022-11-30 07:33:31     886



计算;推算;计数设备的制造及其应用技术一种kubernetes控制面组件的性能评估方法和系统技术领域1.本技术涉及云原生技术领域,特别涉及一种kubernetes控制面组件的性能评估方法、系统、计算机可读存储介质和电子设备。背景技术:2.kubernetes系统是google开源的一个容器编排引擎,支持容器自动化部署、大规模可伸缩、应用容器化管理。kubernetes的系统架构包括多个控制面组件,比如api-server组件、controller-manager组件、scheduler组件、etcd组件等。通常情况下,kubernetes系统内置的控制面组件能够满足大多数业务需求,当存在kubernetes系统内置的控制面组件不能满足的特殊业务需求时,也可以通过引入新的自定义资源以及新的控制面组件(比如自定义控制器)对kubernetes系统进行扩展,以满足特殊业务需求。3.然而,引入新的控制面组件可能会对目标kubernetes集群的整体运行状态造成影响,因此,在引入新的控制面组件之前,需要对该新的控制面组件可能会对目标kubernetes集群造成的影响进行评估。4.相关技术中,通过在测试环境中部署新的控制面组件,来对该新的控制面组件对目标kubernetes集群造成的影响进行评估,其中,测试环境是独立于目标kubernetes集群的另一kubernetes集群。通过在测试环境执行与新的控制面组件相关的各种操作,并对测试环境的运行状态进行监测,以确定新的控制面组件是否对目标kubernetes集群的正常运行造成影响。5.但是,随着云计算技术的不断发展,企业使用的kubernetes集群规模也在不断扩大,搭建与目标kubernetes集群相同规模的测试环境来对新的控制面组件的性能进行评估的成本过高。6.因此,需要提供一种针对上述现有技术不足的改进技术方案。技术实现要素:7.本技术的目的在于提供一种kubernetes控制面组件的性能评估方法、系统、计算机可读存储介质和电子设备,以解决或缓解上述现有技术中存在的问题。8.为了实现上述目的,本技术提供如下技术方案:9.本技术提供了一种kubernetes控制面组件的性能评估方法,包括:10.在目标kubernetes集群中创建第一沙箱,并在所述第一沙箱中运行所述目标kubernetes集群对应的虚拟kubernetes集群;11.对所述目标kubernetes集群的资源变化事件进行监听;12.响应于监听到所述目标kubernetes集群发生新增第一控制面组件的事件,将所述第一控制面组件对所述目标kubernetes集群的连接请求指向所述第一沙箱中的虚拟kubernetes集群,以评估所述第一控制面组件的性能。13.上述技术方案中,所述目标kubernetes集群包括注入资源定义文件;server组件的审计日志,以实现对所述第二控制面组件的回归测试。34.本技术实施例还提供一种kubernetes控制面组件的性能评估系统,包括:35.创建单元,配置为在目标kubernetes集群中创建第一沙箱,并在所述第一沙箱中运行所述目标kubernetes集群对应的虚拟kubernetes集群;36.监听单元,配置为对所述目标kubernetes集群的资源变化事件进行监听;37.评估单元,配置为响应于监听到所述目标kubernetes集群发生新增第一控制面组件的事件,将所述第一控制面组件对所述目标kubernetes集群的连接请求指向所述第一沙箱中的虚拟kubernetes集群,以评估所述第一控制面组件的性能。38.本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序为如上任一所述的kubernetes控制面组件的性能评估方法。39.本技术实施例还提供一种电子设备,包括:存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时实现如上任一所述的kubernetes控制面组件的性能评估方法。40.有益效果:41.本技术提供的技术方案中,在目标kubernetes集群中创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群;对目标kubernetes集群的资源变化事件进行监听;当监听到目标kubernetes集群发生新增第一控制面组件的事件,将第一控制面组件对目标kubernetes集群的连接请求指向第一沙箱中的虚拟kubernetes集群,以评估第一控制面组件的性能。在目标kubernetes集群创建第一沙箱,并在第一沙箱中运行虚拟kubernetes集群,作为测试环境,无需在目标kubernetes集群之外搭建独立的测试环境,仅需占用目标kubernetes集群中极少的硬件资源,即可实现对新增的第一控制面组件进行性能评估,减少了评估第一控制面组件性能所需的硬件资源,大大降低了开发和测试成本。此外,通过将第一沙箱部署在目标kubernetes集群中,使得目标kubernetes集群的运行状态信息能够快速、便捷、安全地同步至虚拟kubernetes集群,提高了对新增的第一控制面组件进行性能评估的效率,保障了评估过程的安全性。附图说明42.构成本技术的一部分的说明书附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。其中:43.图1为根据本技术的一些实施例提供的kubernetes控制面组件的性能评估方法的流程示意图;44.图2为根据本技术的一些实施例提供的第一沙箱对第一控制面组件进行性能评估的逻辑示意图;45.图3为根据本技术的一些实施例提供的第一沙箱与第二沙箱实现回归测试的逻辑示意图;46.图4为根据本技术的一些实施例提供的kubernetes控制面组件的性能评估系统的结构示意图;47.图5为根据本技术的一些实施例提供的电子设备的结构示意图;48.图6为根据本技术的一些实施例提供的电子设备的硬件结构图。具体实施方式49.下面将参考附图并结合实施例来详细说明本技术。各个示例通过本技术的解释的方式提供而非限制本技术。实际上,本领域的技术人员将清楚,在不脱离本技术的范围或精神的情况下,可在本技术中进行修改和变型。例如,示为或描述为一个实施例的一部分的特征可用于另一个实施例,以产生又一个实施例。因此,所期望的是,本技术包含归入所附权利要求及其等同物的范围内的此类修改和变型。50.在以下描述中,所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。51.除另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开实施例的目的,不是旨在限制本公开。52.为了便于理解本技术的技术方案,下面对相关技术进行详细说明。53.kubernetes是一个轻便的和可扩展的开源容器编排引擎,用于管理容器化的云原生应用和服务,kubernetes系统能够将物理机或者虚拟机对应的节点(node)纳入同一个集群进行管理,我们将部署有kubernetes系统的集群称作kubernetes集群。54.需要说明的是,kubernetes集群包括控制节点和工作节点,其中,控制节点上部署有多个kubernetes的控制面组件,用于自动实现kubernetes系统的资源管理、容器组调度、弹性伸缩、安全控制、系统监控和纠错等管理功能,这些控制面组件可以包括etcd组件、api-server组件、controller-manager组件、scheduler组件等。55.其中,etcd组件用于保存整个集群的运行状态;api-server组件用于提供资源操作的唯一入口,并提供认证、授权、访问控制、api注册和发现等机制;scheduler组件负责资源的调度,按照预定的调度策略将容器组调度到相应的节点上。56.controller-manager组件是kubernetes系统中各种控制器(controller)的管理者,而controller负责维护kubernetes集群的状态。57.应当了解,在kubernetes系统中,集群的状态指的是在资源定义文件中指定的kubernetes资源对象的期望状态,该期望状态由各种controller负责维护。具体来说,一个controller负责至少一种类型的kubernetes资源的控制流程,以确保其当前状态接近于期望状态。58.controller-manager组件负责管理kubernetes系统中的多种controller,比如replication controller、node controller、resourcequota controller、namespace controller、serviceaccount controller、token controller、service controller及endpoint controller等,每一种controller对应管理至少一种资源的状态。59.通常情况下,上述kubernetes系统内置的控制面组件能够满足大多数业务需求。此外,为了满足特殊业务需求,kubernetes系统也提供一种扩展机制,使得当出现特殊业务需求而现有的控制面组件不能满足该业务需求时,管理员能够通过引入新的自定义资源以及新的控制面组件(比如自定义controller)实现对kubernetes系统的扩展,以对特殊业务需求进行适配。manager组件、scheduler组件、etcd组件等控制面组件,所有节点中都部署有kubelet组件、kube-proxy组件、container runtime组件等节点组件,随着集群规模的扩大,工作节点的数量不断增加,而控制节点的数量保持固定。也就是说,控制面组件的数量并不会随着集群规模的扩大而增加。69.基于前述说明可知,api-server组件是kubernetes集群资源操作的唯一入口,因此,新的控制面组件部署到控制节点之后,该新的控制面组件需要通过api-server组件这个资源操作的唯一入口与其他控制面组件进行交互,因此,若要对新的控制面组件进行性能评估,关键在于保持测试环境的所有控制面组件的运行状态与目标kubernetes集群的控制面组件运行状态一致,并在测试环境中引入新的控制面组件后,监测其他控制面组件的运行状态是否受到影响。70.为此,本技术提供一种kubernetes控制面组件的性能评估方法、系统、计算机可读存储介质和电子设备,通过在目标kubernetes集群中创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群,作为目标kubernetes集群的测试环境;对目标kubernetes集群的资源变化事件进行监听,当监听到目标kubernetes集群发生新增第一控制面组件(即新的控制面组件)的事件时,将第一控制面组件对目标kubernetes集群的连接请求指向第一沙箱中的虚拟kubernetes集群,从而将第一控制面组件纳入到虚拟kubernetes集群之中,然后对虚拟kubernetes集群的运行状态进行监测,即可对引入第一控制面组件后目标kubernetes集群的整体运行状态进行评估。由于测试环境运行在第一沙箱中,而第一沙箱所占用的资源极少,从而减少了对新增的第一控制面组件进行性能评估所需的资源,降低了应用开发成本。71.示例性方法72.本技术实施例提供一种kubernetes控制面组件的性能评估方法,如图1-3所示,该方法包括:73.步骤s101、在目标kubernetes集群中创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群。74.需要说明的是,沙箱(sandbox,又叫沙盘、沙盒)是一个与目标kubernetes集群环境相互隔离的、特殊的执行环境,应用开发人员可以在不影响目标kubernetes集群的情况下,在沙箱中对新的控制面组件进行性能评估。通过创建沙箱作为测试环境,使得在其内部运行的控制面组件并不会对目标kubernetes集群产生影响,并且在沙箱环境中运行的各种控制面组件,所产生的变化可以在完成对新的控制面组件的影响评估后删除,使得对新的控制面组件的影响评估更加便捷、高效。75.本技术实施例中,第一沙箱中的虚拟kubernetes集群用于模拟目标kubernetes集群的运行环境,也就是说,通过确保虚拟kubernetes集群的运行状态与目标kubernetes集群一致,包括虚拟kubernetes集群中部署的控制面组件类型、控制面组件的各项配置以及所管理的节点规模与目标kubernetes集群均相同,以在虚拟kubernetes集群中实现对新增的控制面组件的性能评估。76.本技术实施例中,通过在目标kubernetes集群中创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群,作为测试环境,无需在目标kubernetes集群之外搭建独立的测试环境,只需要占用目标kubernetes集群中很少的硬件资源即可实现对新增的kubernetes控制面组件进行测试和性能评估,节省了测试所需的硬件资源,降低了开发成本。此外,由于第一沙箱部署在目标kubernetes集群中,使得目标kubernetes集群的运行状态信息能够快速、便捷、安全地同步至虚拟kubernetes集群中,不仅减少了应用开发人员部署测试环境的工作量,并且提高了评估过程的安全性。77.为了创建第一沙箱,在一些实施例中,目标kubernetes集群包括注入资源定义文件(注入crd);注入资源定义文件用于定义注入资源对象,注入资源对象用于定义第一沙箱和指定注入第一沙箱的目标控制面组件;其中,目标控制面组件为目标kubernetes集群中的至少一个控制面组件;对应地,在目标kubernetes集群中创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群,具体为:根据注入资源对象创建容器组,并将容器组作为第一沙箱;在第一沙箱注入目标控制面组件的副本,并将目标kubernetes集群中etcd存储的所有数据同步至第一沙箱,以在第一沙箱中同步运行目标控制面组件。78.需要说明的是,在kubernetes系统中,所有的内容都抽象为资源,kubernetes提供了很多默认资源类型,比如容器组、部署(deployment)、服务(service)、存储卷(volume)等,这些默认资源类型能够满足大多数业务需求,但是,在一些特殊业务需求场景下,现有资源类型可能无法满足需求,此时,可以通过新增自定义资源(custom resource)的方式以满足特殊业务需求。79.本技术实施例中,注入资源属于kubernetes的自定义资源,注入资源对应的持久化实体(即资源实例)称为注入资源对象,注入资源对象用于定义第一沙箱和指定注入第一沙箱的目标控制面组件,也就是说,kubernetes通过注入资源对象来表示第一沙箱的期望状态,基于注入资源对象,能够在目标kubernetes集群中创建第一沙箱,并在第一沙箱中注入指定的目标控制面组件。80.其中,目标控制面组件为目标kubernetes集群中的至少一个控制面组件。这里,目标控制面组件可以是目标kubernetes集群中全部控制面组件组成的集合,也可以是目标kubernetes集群中部分控制面组件组成的子集。81.当目标控制面组件包含目标kubernetes集群中的全部控制面组件时,通过将目标kubernetes集群所有控制面组件的运行状态同步至第一沙箱,即可在第一沙箱中复制出与目标kubernetes集群完全相同的测试环境,此时,在测试环境中运行新的控制面组件并监测测试环境的运行状态,就可以确定引入新的控制面组件是否会对目标kubernetes集群的整体运行状态产生影响。82.当目标控制面组件包含目标kubernetes集群的部分控制面组件时,通过在第一沙箱中注入所指定的部分控制面组件的副本,并将目标kubernetes集群指定的控制面组件的运行状态同步至第一沙箱,以构建出一个包含目标kubernetes集群部分控制面组件的测试环境。此时,在第一沙箱中运行新的控制面组件并监测测试环境的运行状态,就可以确定新的控制面组件与目标控制面组件之间的相互关系,针对性分析新的控制面组件对目标控制面组件的运行状态所产生的影响。83.需要说明的是,注入资源对象是由注入资源定义文件定义的,注入资源定义文件是一种自定义资源的定义文件(custom resource definition,简称crd),具体可以是yaml或json格式文件。kubernetes系统根据注入资源定义文件,创建注入资源对象,即可根据注入资源对象的内容创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群。84.比如,在一个注入crd的示例中,该示例涉及的注入crd如下:85.当目标kubernetes集群包括注入资源定义文件时,在目标kubernetes集群中创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群,具体为:根据注入资源对象创建容器组,并将容器组作为第一沙箱;在第一沙箱注入目标控制面组件的副本,并将目标kubernetes集群中etcd存储的所有数据同步至第一沙箱,以在第一沙箱中同步运行目标控制面组件。86.实际应用中,在注入资源定义文件(yaml或json文件)存储到目标kubernetes集群后,kubernetes根据注入资源定义文件的内容创建注入资源对象,并根据注入资源对象创建容器组,将该容器组作为第一沙箱。87.然后根据注入资源所指定注入第一沙箱的目标控制面组件,在第一沙箱注入目标控制面组件的副本,并将目标kubernetes集群中etcd存储的所有数据同步至第一沙箱。88.基于前述说明可知,etcd组件中保存着整个集群的运行状态,通过将目标kubernetes集群中etcd存储的所有数据同步至第一沙箱,就可以将目标kubernetes集群的运行状态复制至第一沙箱中,即在第一沙箱中的目标控制面组件的运行状态与其在目标kubernetes集群中对应的控制面组件运行状态一致,以实现在第一沙箱中同步运行目标控制面组件,构建出目标kubernetes集群对应的虚拟kubernetes集群,作为目标kubernetes集群的测试环境。89.需要特别说明的是,本技术实施例中,可以将单个容器组作为第一沙箱,占用的硬件资源极少,也就是说,只需要启动单个容器组,即可在该容器组中运行目标kubernetes集群对应的虚拟kubernetes集群,从而构建出目标kubernetes集群的测试环境,节约了应用开发成本。90.应当理解,为了提高虚拟kubernetes集群运行效率,在一些具体应用中,也可以在目标kubernetes集群中创建多个容器组,将多个容器组作为第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群。91.此外,将第一沙箱定义为一种自定义资源对象,并在第一沙箱运行目标kubernetes集群的测试环境,使得kubernetes能够像管理原生资源对象一样对第一沙箱进行管理,降低了测试的复杂度。92.为创建第一沙箱,除了引入注入资源定义文件之外,目标kubernetes集群还包括沙箱资源定义文件(沙箱crd),沙箱资源定义文件用于定义沙箱资源对象,沙箱资源对象用于定义第一沙箱的数据同步模式;对应地,该方法还包括:根据沙箱资源对象将目标kubernetes集群中etcd存储的所有数据周期性同步至第一沙箱。93.如前所述,为了使得第一沙箱中的虚拟kubernetes集群运行状态与目标kubernetes集群保持一致,需要按照一定的数据同步模式将目标kubernetes集群中etcd存储的所有数据同步至地第一沙箱的虚拟kubernetes集群中。因此,目标kubernetes集群对资源类型进行自定义扩展,通过新增沙箱资源,并在沙箱资源中指定第一沙箱的数据同步模式,实现第一沙箱中的虚拟kubernetes集群运行状态与目标kubernetes集群的同步。94.具体实施时,目标kubernetes集群包括沙箱资源定义文件,用于定义沙箱资源对象,具体可以是yaml或json格式文件。沙箱资源对象是沙箱资源的持久化实例,其能够定义第一沙箱的数据同步模式。95.其中,数据同步模式指的是一种同步策略,该同步策略用于指定向第一沙箱同步目标kubernetes集群的内容以及同步周期。实际应用中,同步的内容以及同步周期可以根据业务需求确定,比如定期同步目标kubernetes集群中etcd存储的全部数据,又比如,定期同步目标kubernetes集群中etcd存储的部分数据,又比如,一次性同步目标kubernetes集群中etcd存储的全部数据,或者,不同步任何数据,本技术实施例对此不做限定。96.实际应用中,除了数据同步模式,沙箱资源还可以通过插件的方式进行扩展,比如为了进一步保证测试过程不泄露目标kubernetes集群的敏感信息,采用插件方式扩展沙箱资源,使其能够对待同步数据进行预处理操作,这些预处理操作可以包括:对etcd存储的数据先进行脱敏处理,再同步到第一沙箱中的虚拟kubernetes集群,或者,为满足特定的测试目标对etcd存储的数据进行特定处理等。97.比如,在一沙箱资源的示例中,该示例涉及的沙箱crd如下:[0098][0099]基于沙箱资源定义文件,目标kubernetes集群创建沙箱资源对象,并根据沙箱资源对象将目标kubernetes集群中etcd存储的所有数据周期性同步至第一沙箱,使得第一沙箱中的虚拟kubernetes集群运行状态与目标kubernetes集群保持一致,从而保证第一控制面组件性能评估结果的正确性。[0100]在引入注入资源和沙箱资源之后,目标kubernetes集群需要对其进行管理。kubernetes集群管理可以分为两种风格,一种是指令式管理,通过命令行(比如kubectl命令行工具),将操作参数或者标记传入kubernetes系统,以快速更新集群状态。[0101]另一种是声明式管理,声明式管理资源的方式通过资源定义文件描述某个资源对象的期望状态,使得kubernetes集群能够通过不停修正该资源对象的当前状态,使其符合资源定义文件描述的期望状态。[0102]基于前述说明可知,在kubernetes系统中资源对象的期望状态由各种controller具体负责维护。实际中,每个controller通过api-server组件提供的list-watch接口实时监控集群中特定资源的状态变化,当发生各种故障导致某个资源对象的状态变化时,对应的controller会尝试将其状态调整为期望的状态。[0103]本技术实施例中,通过在目标kubernetes集群中引入自定义controller——沙箱控制器实现对注入资源和沙箱资源的管理。因此,在创建第一沙箱之前,还包括:在目标kubernetes集群部署沙箱控制器,以对注入资源和沙箱资源进行管理。[0104]其中,沙箱控制器可以部署在目标kubernetes集群的第一沙箱所在容器组之外的某个容器组中,也可以部署在第一沙箱所在容器组的某个容器中。[0105]部署沙箱控制器之后,沙箱控制器通过目标kubernetes集群的api-server组件对注入crd和沙箱crd进行访问,然后根据注入crd的内容在目标kubernetes集群中创建容器组并将该容器组作为第一沙箱,接着在第一沙箱中注入与目标kubernetes集群运行状态相同的目标控制面组件的副本(比如api-server、controller-manager、scheduler、etcd等),即可在第一沙箱中对目标kubernetes集群的控制节点进行模拟。[0106]在第一沙箱中模拟出目标kubernetes集群的控制节点之后,为了模拟目标kubernetes集群的工作节点,在一些实施例中,第一沙箱中还部署有虚拟节点控制应用;虚拟节点控制应用用于在第一沙箱中模拟目标kubernetes集群的工作节点。[0107]具体实施时,虚拟节点控制应用容器化部署在第一沙箱中。应当理解,当第一沙箱对应多个容器组时,虚拟节点控制应用可以与虚拟kubernetes集群的控制面组件部署在相同的容器组中,也可以与虚拟kubernetes集群的控制面组件位于不同的容器组中。类似地,当第一沙箱为单个容器组时,虚拟节点控制应用可以与虚拟kubernetes集群的控制面组件部署在相同的容器中,也可以与虚拟kubernetes集群的控制面组件位于不同的容器中。本技术实施例对此不作限定。[0108]其中,虚拟节点控制应用用于在第一沙箱中模拟目标kubernetes集群的工作节点。[0109]需要说明的是,在kubernetes集群中,kubelet组件用于向kubernetes集群注册节点自身的信息,定期向kubernetes集群汇报节点资源的使用情况,以实现将该节点纳入集群进行管理。每个节点上只会启动一个kubelet组件,也就是说,当有新的kubelet组件在kubernetes集群的控制面组件中注册了新的节点信息,相关控制面组件就会以为kubernetes集群真实存在新的节点,并对其进行管理。[0110]基于此,虚拟节点控制应用通过向第一沙箱中的虚拟kubernetes集群发送虚拟注册信息和虚拟心跳信息包,并根据虚拟kubernetes集群中控制面组件下发的任务,调整虚拟心跳信息包的内容,使得虚拟kubernetes集群的相关控制面组件误以为存在真实的工作节点,从而可以在虚拟kubernetes集群模拟出目标kubernetes集群中任意多个工作节点的运行状态,即虚拟节点控制应用能够在第一沙箱中模拟任意规模的目标kubernetes集群的工作节点。[0111]由于虚拟节点控制应用采用发送虚拟节点注册信息和虚拟心跳数据包的方式实现工作节点模拟,生成虚拟节点注册信息和虚拟心跳数据包所占用的资源几乎可以忽略不计,因此不会随着模拟节点数量的增大而增加对硬件资源的占用,从而在进行测试时可以不断增加模拟节点的数量,而无需担心出现硬件资源瓶颈。[0112]步骤s102、对目标kubernetes集群的资源变化事件进行监听。[0113]本技术实施例中,沙箱控制器可以通过api-server组件提供的list-watch接口实时对目标kubernetes集群的资源变化事件进行监听,以实时捕捉新增第一控制面组件的事件,并进行响应。[0114]步骤s103、响应于监听到目标kubernetes集群发生新增第一控制面组件的事件,将第一控制面组件对目标kubernetes集群的连接请求指向第一沙箱中的虚拟kubernetes集群,以评估第一控制面组件的性能。[0115]对于目标kubernetes集群中新增的第一控制面组件,其需要通过向目标kubernetes集群发送连接请求实现与其他控制面组件的交互。为了评估第一控制面组件是否会对目标kubernetes集群的正常运行产生影响,可以先借助第一沙箱中的虚拟kubernetes集群对其进行性能评估。[0116]因此,当监听到目标kubernetes集群发生新增第一控制面组件的事件,目标kubernetes集群中的沙箱控制器将第一控制面组件对目标kubernetes集群的连接请求指向第一沙箱中的虚拟kubernetes集群,使其通过与虚拟kubernetes集群中的其他控制面组件进行交互,以实现性能评估的目的。[0117]第一沙箱中的虚拟kubernetes集群接收到第一控制面组件的连接请求后,将其纳入虚拟kubernetes集群之中,此时,通过对虚拟kubernetes集群的运行状态进行监测,即可评估新增第一控制面组件对目标kubernetes集群的运行状态的影响,即评估第一控制面组件的性能。[0118]为了改变第一控制面组的连接请求的指向,在一些实施例中,响应于监听到目标kubernetes集群发生新增第一控制面组件的事件,将第一控制面组件对目标kubernetes集群的连接请求指向第一沙箱中的虚拟kubernetes集群,具体为:响应于监听到目标kubernetes集群发生新增第一控制面组件的事件,调用网络钩子对第一控制面组件的部署过程进行拦截;将第一控制面组件的配置信息中连接请求的指向对象由目标kubernetes集群修改为第一沙箱中的虚拟kubernetes集群。[0119]需要说明的是,在kubernetes系统中,网络钩子(mutatingadmissionwebhook)是一种可扩展的、插件形式的准入控制器(admission controller),该插件可配置到api-server组件中,用于根据预设规则拦截发向api-server组件的请求。具体来说,mutatingadmissionwebhook插件可以获取所有感兴趣的admissionwebhooks,进而监听api-server组件的请求,在请求相关的资源对象被持久化到etcd前,根据规则将请求拦截,并通过向webhookserver发送准入请求来实现对资源的更改。[0120]具体到本应用场景,第一控制面组件被目标kubernetes集群抽象为资源,因此,第一控制面组件的配置信息实际为资源定义文件,通常为yaml或者json格式。沙箱控制器对目标kubernetes集群中新增yaml文件进行监听,在监听到第一控制面组件对应的yaml文件存入目标kubernetes集群后,沙箱控制器调用mutatingadmissionwebhook插件对第一控制面组件的部署过程进行拦截,并通过向webhookserver发送准入请求来修改第一控制面组件的yaml文件的相关配置信息,即,将第一控制组件的yaml文件中连接请求的指向对象由目标kubernetes集群修改为第一沙箱中的虚拟kubernetes集群,从而将第一控制组件纳入到虚拟kubernetes集群之中,此时,运行第一控制面组件,只需要对虚拟kubernetes集群的运行状态进行监测,即可实现对引入第一控制面的性能进行评估。[0121]应当理解,在修改第一控制面组件的yaml文件的相关配置信息之后,目标kubernetes集群的相关控制面组件将根据修改后的配置信息继续完成第一控制面组件的部署过程,即将第一控制面组件部署在某个容器组之中,实现第一控制面组件的容器化部署。[0122]在完成部署之后,第一控制面组件将向第一沙箱中虚拟kubernetes集群的api-server组件发起连接请求,并通过该连接请求与虚拟kubernetes集群进行交互,达到将第一控制面组件作为新的控制面组件引入到虚拟kubernetes集群中的效果,以评估第一控制面组件的性能。[0123]需要特别说明的是,当完成第一控制面组件的性能评估之后,还可以再将第一控制面组件的yaml文件中相关配置信息修改为初始状态,即可使第一控制面组件向目标kubernetes集群的api-server组件发起连接请求,完成第一控制面组件在目标kubernetes集群的部署,如此,节约了第一控制面组件在目标kubernetes集群部署的时间,提高了工作效率。[0124]具体实施时,为了能够将第一控制面组件的yaml文件修改为初始状态,在mutatingadmissionwebhook插件修改第一控制面组件的配置信息之前,可以将第一控制面组件的初始状态进行保存,例如,可以将初始状态保存到yaml文件的某个字段中,或者,将初始状态保存到外部数据中。[0125]将第一控制面组件作为新的控制面组件引入到虚拟kubernetes集群之后,在一些实施例中,评估第一控制面组件的性能,包括:运行第一控制面组件,以对第一沙箱中的虚拟kubernetes集群进行操作;根据第一沙箱记录的虚拟kubernetes集群的api-server组件的审计(auditing)日志,评估第一控制面组件的性能。[0126]通过运行第一控制面组件,执行第一控制面组件自身设计的功能,以对第一沙箱中的虚拟kubernetes集群进行操作,并监测第一控制面组件在执行功能的过程中对虚拟kubernetes集群整体运行状态产生的影响,以实现对第一控制面组件的性能评估。由于虚拟kubernetes集群的环境与目标kubernetes集群一致,第一控制面组件在虚拟kubernetes集群的性能与其在目标kubernetes集群的性能基本相同,故该方法能够在确保目标kubernetes集群正常运行的情况下,评估引入第一控制面组件对目标kubernetes集群产生的影响。[0127]为了客观记录和持续监测虚拟kubernetes集群的运行状态,第一沙箱中还记录有虚拟kubernetes集群的api-server组件的审计日志。[0128]其中,审计日志能够提供与安全相关的、按时间顺序排列的记录,这些记录包括每一个发送给api-server的请求在不同的执行阶段的信息。应当理解,kubernetes系统按照审计策略采集审计日志,审计策略是一种信息记录的规则,比如应记录哪些事件以及应包含哪些数据等。[0129]在完成审计日志记录之后,可以通过设置日志接收方将审计日志导出,以方便进行审计日志的分析。比如,可以将审计日志导出到外部系统,或者,将审计日志以回调函数的形式发送给http api。[0130]其中,审计策略的配置功能是以插件的形式对沙箱资源进行扩展实现的,在配置审计策略之后,还可以指定审计日志的接收方。也就是说,在沙箱crd设置相应的字段,用于指定记录第一控制面组件在运行过程中产生的相关数据的记录方式,并指定相关数据的接收方,实现按规则采集审计日志,并将审计日志导出至接收方。[0131]基于对审计日志的分析,即可对新增第一控制面组件是否会对目标kubernetes集群的正常运行造成影响进行评估。[0132]在完成对第一控制面组件的性能评估之后,只需将第一沙箱所包括的容器组删除,即可释放第一沙箱占用的硬件资源,实现资源的快速回收,并且不会影响目标kubernetes集群的正常运行。[0133]在一些实施例中,也可以将第一控制面组件视作第一沙箱的组成部分,即将多个容器组作为第一沙箱,在第一沙箱中的某个容器组中运行第一控制面组件。当完成第一控制面组件的性能评估之后,将第一沙箱所包括的容器组(包含第一控制面组件所在的容器组)全部删除,并在需要将第一控制面组件部署在目标kubernetes集群中时创建新的容器组进行部署。[0134]需要说明的是,本技术实施例提供的方法还可以用于对控制面组件进行回归测试,参见图3,当该方法应用于控制面组件回归测试时,还包括:在目标kubernetes集群中创建第二沙箱,并在第二沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群;响应于监听到目标kubernetes集群发生新增第二控制面组件的事件,将第二控制面组件对目标kubernetes集群的连接请求指向第二沙箱中的虚拟kubernetes集群;其中,第二控制面组件为第一控制面组件的新版本;运行第一控制面组件和第二控制面组件,以分别对第一沙箱和第二沙箱中的虚拟kubernetes集群进行相同的操作;根据第一沙箱和第二沙箱分别记录的虚拟kubernetes集群的api-server组件的审计日志,以实现对第二控制面组件的回归测试。[0135]其中,回归测试是指控制面组件的迭代更新测试,即修改了控制面组件的旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。因此,在回归测试的场景下,控制面组件有多个版本,其中任意2个可以分别称为第一控制面组件和第二控制面组件,其中,第二控制面组件是第一控制面组件进行修改后得到的新版本。[0136]为了实现回归测试,除了在目标kubernetes集群中部署第一控制面组件以外,还需要在目标kubernetes集群中部署第二控制面组件。具体地,沙箱控制器监听到目标kubernetes集群发生新增第二控制面组件的事件时,在目标kubernetes集群中创建第二沙箱,并在第二沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群。具体来说,沙箱控制器对目标kubernetes集群新增yaml文件进行监听,当监听到第二控制面组件的yaml文件存入目标kubernetes集群后,根据注入crd和沙箱crd的内容,在目标kubernetes集群中创建第二沙箱,并在第二沙箱沙箱中注入目标控制面组件的副本以及虚拟节点控制应用,以构建与目标kubernetes集群相同的测试环境。也就是说,目标kubernetes集群同时运行着两套沙箱,分别为第一沙箱和第二沙箱,并且,两套沙箱的虚拟kubernetes集群配置相同。[0137]在创建第二沙箱之后,沙箱控制器还将第二控制面组件对目标kubernetes集群的连接请求指向第二沙箱中的虚拟kubernetes集群,从而将第二控制面组件纳入到第二沙箱中的虚拟kubernetes集群进行管理。[0138]具体地,当监听到目标kubernetes集群发生新增第二控制面组件的事件时,沙箱控制器调用mutatingadmissionwebhook插件对第二控制面组件的部署过程进行拦截,通过修改第二控制面组件的资源定义文件(yaml文件)中相关的配置信息,将第二控制面组件对目标kubernetes集群的连接请求指向第二沙箱中的虚拟kubernetes集群。[0139]基于修改后的配置信息,目标kubernetes集群的相关控制面组件继续将第二控制面组件部署到某个容器组中。[0140]在将第二控制面组件部署到某个容器组之后,第一控制面组件和第二控制面组件分别向各自对应的沙箱中的虚拟kubernetes集群的api-server组件发起连接请求,从而将第一控制面组件和第二控制面组件分别纳入两个虚拟kubernetes集群进行管理。[0141]具体进行回归测试时,运行第一控制面组件和第二控制面组件,使第一控制面组件和第二控制面组件分别向第一沙箱和第二沙箱发送连接请求,以分别对第一沙箱和第二沙箱中的虚拟kubernetes集群进行相同的操作,并分别监测第一沙箱和第二沙箱中虚拟kubernetes集群的api-server组件的审计日志,以记录测试过程的信息。然后,对比第一沙箱和第二沙箱中记录的审计日志,即可完成对新版本的第二控制面组件的回归测试。[0142]在一些实施例中,对目标kubernetes集群的控制面组件进行性能评估可以按照如下步骤进行:[0143]步骤一、沙箱控制器根据注入crd的内容在目标kubernetes集群中创建容器组并将该容器组作为第一沙箱,在第一沙箱中注入目标控制面组件的副本和虚拟节点控制应用;[0144]步骤二、沙箱控制器对目标kubernetes集群中新增的yaml文件进行监听;[0145]步骤三、在监听到第一控制面组件的yaml文件存入目标kubernetes集群后,沙箱控制器调用mutatingadmissionwebhook插件对第一控制面组件的部署过程进行拦截,修改第一控制面组件的yaml文件中的相关配置信息,将第一控制面组件对目标kubernetes集群发送的连接请求的指向对象修改为第一沙箱中的虚拟kubernetes集群;[0146]步骤四、第一控制面组件向第一沙箱中的虚拟kubernetes集群的api-server组件发起连接请求,成为虚拟kubernetes集群中的控制面组件;[0147]步骤五、第一沙箱对部署其中的控制面组件的运行状态进行监测,并上报给指定的接收方;[0148]步骤六、通过对上报的监测数据进行分析,评估该第一控制面组件是否会对目标kubernetes集群的正常运行造成影响。[0149]综上所述,本技术实施例中,在目标kubernetes集群中创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群;对目标kubernetes集群的资源变化事件进行监听;当监听到目标kubernetes集群发生新增第一控制面组件的事件,将第一控制面组件对目标kubernetes集群的连接请求指向第一沙箱中的虚拟kubernetes集群,以评估第一控制面组件的性能。在目标kubernetes集群创建第一沙箱,并在第一沙箱中运行虚拟kubernetes集群,作为测试环境,无需在目标kubernetes集群之外搭建独立的测试环境,仅需占用目标kubernetes集群中极少的硬件资源,即可实现对新增的第一控制面组件进行性能评估,减少了评估第一控制面组件性能所需的硬件资源,大大降低了开发和测试成本。此外,通过将第一沙箱部署在目标kubernetes集群中,使得目标kubernetes集群的运行状态信息能够快速、便捷、安全地同步至虚拟kubernetes集群,提高了对新增的第一控制面组件进行性能评估的效率,保障了评估过程的安全性。[0150]示例性系统[0151]本技术实施例提供一种kubernetes控制面组件的性能评估系统,如图4所示,该系统包括:创建单元401、监听单元402、评估单元403。其中:[0152]创建单元401,配置为在目标kubernetes集群中创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群。[0153]监听单元402,配置为对目标kubernetes集群的资源变化事件进行监听。[0154]评估单元403,配置为响应于监听到目标kubernetes集群发生新增第一控制面组件的事件,将第一控制面组件对目标kubernetes集群的连接请求指向第一沙箱中的虚拟kubernetes集群,以评估第一控制面组件的性能。[0155]本技术实施例所提供的kubernetes控制面组件的性能评估系统能够实现上述任一实施例提供的kubernetes控制面组件的性能评估方法的流程、步骤,并达到相同的技术效果,在此不再一一赘述。[0156]示例性设备[0157]图5为根据本技术的一些实施例提供的电子设备的结构示意图;如图5所示,该电子设备包括:[0158]一个或多个处理器501;[0159]计算机可读介质,可以配置为存储一个或多个程序502,一个或多个处理器501执行一个或多个程序502时,实现如下步骤:在目标kubernetes集群中创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群;对目标kubernetes集群的资源变化事件进行监听;响应于监听到目标kubernetes集群发生新增第一控制面组件的事件,将第一控制面组件对目标kubernetes集群的连接请求指向第一沙箱中的虚拟kubernetes集群,以评估第一控制面组件的性能。[0160]图6为根据本技术的一些实施例提供的电子设备的硬件结构;如图6所示,该电子设备的硬件结构可以包括:处理器601、通信接口602、计算机可读介质603和通信总线604。[0161]其中,处理器601、通信接口602、计算机可读存储介质603通过通信总线604完成相互间的通信。[0162]可选地,通信接口602可以为通信模块的接口,如gsm模块的接口。[0163]其中,处理器601具体可以配置为:在目标kubernetes集群中创建第一沙箱,并在第一沙箱中运行目标kubernetes集群对应的虚拟kubernetes集群;对目标kubernetes集群的资源变化事件进行监听;响应于监听到目标kubernetes集群发生新增第一控制面组件的事件,将第一控制面组件对目标kubernetes集群的连接请求指向第一沙箱中的虚拟kubernetes集群,以评估第一控制面组件的性能。[0164]处理器601可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等,还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。[0165]本技术实施例的电子设备以多种形式存在,包括但不限于:[0166](1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如:iphone)、多媒体手机、功能性手机,以及低端手机等。[0167](2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。[0168](3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如:ipod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。[0169](4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。[0170](5)其他具有数据交互功能的电子装置。[0171]需要指出,根据实施的需要,可将本技术实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可以将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本技术实施例的目的。[0172]上述根据本技术实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如cd rom、ram、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器存储介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如asic或fpga)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,ram、rom、闪存等),当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的kubernetes控制面组件的性能评估方法。此外,当通用计算机访问用于实现在此示出的方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的方法的专用计算机。[0173]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和涉及约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的范围。[0174]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。[0175]以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元提示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。[0176]以上所述仅为本技术的优选实施例,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部