CN117112124A - Kubernetes对象的参数校验方法、服务器及终端 - Google Patents

Kubernetes对象的参数校验方法、服务器及终端 Download PDF

Info

Publication number
CN117112124A
CN117112124A CN202310746991.7A CN202310746991A CN117112124A CN 117112124 A CN117112124 A CN 117112124A CN 202310746991 A CN202310746991 A CN 202310746991A CN 117112124 A CN117112124 A CN 117112124A
Authority
CN
China
Prior art keywords
parameter
kubernetes
terminal
server
prompt information
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
Application number
CN202310746991.7A
Other languages
English (en)
Inventor
李红雨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202310746991.7A priority Critical patent/CN117112124A/zh
Publication of CN117112124A publication Critical patent/CN117112124A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开了一种Kubernetes对象的参数校验方法、服务器及终端,方法包括:终端显示编辑软件的界面;终端基于对界面触发的输入操作,获得第一Kubernetes对象的参数;终端向服务器发送第一Kubernetes对象的参数;服务器对第一Kubernetes对象的参数进行校验;响应于校验出第一Kubernetes对象的参数存在错误,服务器向终端发送提示信息,提示信息指示错误或者修复错误的方式;终端在界面中显示提示信息。本申请实施例能够提醒用户参数配置错误的风险,降低参数配置错误的概率。

Description

Kubernetes对象的参数校验方法、服务器及终端
技术领域
本申请涉及服务器技术领域,具体涉及一种Kubernetes对象的参数校验方法、服务器及终端。
背景技术
随着面向云化应用的开发越来越广泛,应用软件的构成变得越来越复杂。基于此,Kubernetes提供了一个方便有效的容器编排平台,通过Kubernetes可以自动地在计算系统调度容器,实现了容器资源的自动分配,提高了计算系统的资源利用率。
在使用Kubernetes时,用户需要编辑配置文件,向Kubernetes提交配置文件。配置文件中包含Kubernetes对象的参数。Kubernetes的控制器基于配置文件中的参数配置Kubernetes对象,基于配置的Kubernetes对象调度容器。
然而,目前在编辑配置文件时,参数配置错误的概率较高。
发明内容
本申请实施例提供了一种Kubernetes对象的参数校验方法、服务器及终端,能够降低参数配置错误的概率。技术方案如下。
第一方面,提供了一种Kubernetes对象的参数校验方法,所述方法包括:终端显示编辑软件的界面;所述终端基于对所述界面触发的输入操作,获得第一Kubernetes对象的参数;所述终端向服务器发送所述第一Kubernetes对象的参数;所述服务器对所述第一Kubernetes对象的参数进行校验;响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,所述提示信息指示所述错误或者修复所述错误的方式;所述终端在所述界面中显示所述提示信息。
通过在编辑软件编辑Kubernetes对象参数的过程中,针对Kubernetes对象的参数进行错误校验,在校验不通过的情况下输出提示信息,从而能够通过提示信息提醒用户参数配置错误的风险,因此降低参数配置错误的概率。
在一种可能的实现中,所述第一Kubernetes对象的参数包括所述第一Kubernetes对象的调度策略,所述提示信息包括第一提示信息,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括:响应于Kubernetes集群中节点设备不满足所述调度策略,所述服务器向所述终端发送所述第一提示信息,所述第一提示信息指示调度策略存在错误或者修复调度策略的方式。
通过上述实现方式,由于对调度策略可行性校验,在校验发现调度策略不可行的情况下进行提示,从而降低由于调度策略有矛盾,例如Kubernetes对象的调度需求与服务器的参数有矛盾,导致调度策略执行失败的风险。
在一种可能的实现中,所述第一Kubernetes对象的参数包括节点选择参数,所述节点选择参数包括第一标签或者第一节点名称中至少一项,所述响应于Kubernetes集群中节点设备不满足所述调度策略,所述服务器向所述终端发送所述第一提示信息,包括:响应于Kubernetes集群中节点设备的第二标签与所述第一标签不匹配,所述服务器向所述终端发送所述第一提示信息,所述第一提示信息指示所述第一标签存在错误或者所述第一提示信息包括所述第二标签;
通过上述实现方式,由于基于节点选择参数包括的标签与Kubernetes集群中节点设备的标签不匹配输出提示信息,从而降低由于Kubernetes集群中不存在标签指定的设备导致Pod不能调度并将处于挂起(Pending)状态的风险。
在一种可能的实现中,响应于Kubernetes集群中节点设备的名称与所述第一节点名称不匹配,所述服务器向所述终端发送所述第一提示信息,所述第一提示信息指示所述第一节点名称存在错误或者所述第一提示信息包括Kubernetes集群中节点设备的名称;
通过上述实现方式,由于基于Kubernetes对象的节点选择参数包括的节点名称与Kubernetes集群中节点设备的名称不匹配输出提示信息,从而降低由于Kubernetes集群中不存在节点选择参数包括的节点名称所指定的设备导致Pod不能调度并将处于挂起状态的风险。
在一种可能的实现中,响应于Kubernetes集群中所述第一节点名称对应的节点设备上可用的资源量小于资源量阈值,所述服务器向所述终端发送所述第一提示信息,所述第一提示信息指示所述第一节点名称对应的节点设备上可用的资源量小于资源量阈值或者所述第一提示信息包括Kubernetes集群中可用的资源量大于资源量阈值的节点设备的名称。
由于基于节点设备上可用的资源量小于资源量阈值输出提示信息,从而降低由于节点设备不能满足运行Kubernetes对象最少需要的资源数量这种资源不足的情况导致调度可行性的风险。
在一种可能的实现中,所述第一Kubernetes对象的参数包括为所述第一Kubernetes对象分配的资源量,所述提示信息包括第二提示信息,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括:响应于为所述第一Kubernetes对象分配的资源量大于第一资源量阈值,所述服务器向所述终端发送第二提示信息,所述第二提示信息用于指示资源量大于所述第一资源量阈值,或者所述第二提示信息包括所述第一资源量阈值,或者所述第二提示信息包括小于所述第一资源量阈值的第一参考资源量。
通过提示第一资源量阈值或者第一参考资源量,从而引导用户将配置的资源量下调至资源量阈值内,降低配置资源分配策略的复杂度,也降低配置的资源量超限的风险。
响应于为所述第一Kubernetes对象分配的资源量小于第二资源量阈值,所述服务器向所述终端发送第三提示信息,所述第三提示信息用于指示资源量小于所述第二资源量阈值,或者所述第三提示信息包括所述第二资源量阈值,或者所述第三提示信息包括大于所述第二资源量阈值的第二参考资源量。
通过提示第二资源量阈值或者第二参考资源量,从而引导用户将配置的资源量上调至资源量阈值内,降低配置资源分配策略的复杂度,也降低配置的资源量超限的风险。
在一种可能的实现中,所述第一Kubernetes对象的参数用于指示建立所述第一Kubernetes对象与第二Kubernetes对象之间的绑定关系,所述提示信息包括第三提示信息,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括:响应于校验出所述绑定关系存在错误,所述服务器向所述终端发送第三提示信息,所述第三提示信息指示所述绑定关系存在错误或者修复所述绑定关系的方式。
通过在确定绑定关系存在错误的情况输出提示信息,从而降低配置的绑定关系错误带来的风险。
在一种可能的实现中,所述响应于校验出所述绑定关系存在错误,所述服务器向所述终端发送第三提示信息,包括:响应于Kubernetes对象列表中不存在所述第二Kubernetes对象的标识,所述服务器向所述终端发送所述第三提示信息,所述Kubernetes对象列表包括已经创建的Kubernetes对象的标识,所述第三提示信息指示所述第二Kubernetes对象不存在,或者所述第三提示信息包括所述Kubernetes对象列表中Kubernetes对象的标识。
通过校验第二Kubernetes对象是否已经创建,从而降低由于无法与并不存在的Kubernetes对象建立绑定关系导致配置失败的概率。从而降低为第一Kubernetes对象绑定的第二Kubernetes对象并不存在引起建立绑定关系失败的风险。
在一种可能的实现中,所述响应于校验出所述绑定关系存在错误,所述服务器向所述终端发送第三提示信息,包括:响应于所述第二Kubernetes对象的类型与所述第一Kubernetes对象依赖的对象类型不匹配,所述服务器向所述终端发送所述第三提示信息,所述第三提示信息指示所述第二Kubernetes对象的类型与所述第一Kubernetes对象依赖的对象类型不匹配,或者所述第三提示信息包括所述第一Kubernetes对象依赖的对象类型。
通过校验第二Kubernetes对象的类型是否已经匹配,从而降低由于与并类型不匹配的Kubernetes对象建立绑定关系导致数据来源错误的概率。从而降低数据来源错误引起配置失败的风险。
在一种可能的实现中,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括:响应于校验出所述第一Kubernetes对象的参数的值类型存在错误,所述服务器向所述终端发送第四提示信息,所述第四提示信息指示所述第一Kubernetes对象的参数的值类型存在错误,或者所述第四提示信息包括预期的值类型。
通过针对Kubernetes对象参数值的类型存在的错误进行提示,从而降低参数值的类型错误的风险;通过输出Kubernetes对象的预期的值类型,便于用户参考预期的值类型修改参数值类型,从而降低修复参数值类型的复杂度。
在一种可能的实现中,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括:响应于校验出所述第一Kubernetes对象的参数的层级存在错误,所述服务器向所述终端发送第五提示信息,所述第五提示信息指示所述第一Kubernetes对象的参数的层级存在错误,或者所述第五提示信息包括预期的层级。
通过针对Kubernetes对象参数的层级存在的错误进行提示,从而降低参数层级错误的风险;通过输出Kubernetes对象的预期的层级,便于用户参考预期的层级修改参数层级,从而降低修复参数层级的复杂度。
在一种可能的实现中,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括:响应于校验出所述第一Kubernetes对象的参数的标识的拼写存在错误,所述服务器向所述终端发送第六提示信息,所述第六提示信息指示所述第一Kubernetes对象的参数的标识的拼写存在错误,或者所述第六提示信息包括预期的参数标识。
通过针对Kubernetes对象参数的标识的拼写存在错误进行提示,从而降低参数标识拼写错误的风险;通过输出Kubernetes对象的预期的参数标识,便于用户参考预期的参数标识修改参数标识,从而降低修复参数标识拼写的复杂度。
在一种可能的实现中,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括:响应于校验出所述第一Kubernetes对象的参数的值超过阈值范围,所述服务器向所述终端发送第七提示信息,所述第七提示信息指示所述值超过阈值范围,或者所述第七提示信息包括所述阈值范围,或者所述第七提示信息包括所述阈值范围内的默认值。
通过针对Kubernetes对象的参数的值超过阈值范围进行提示,从而降低为Kubernetes对象配置的参数的值超过阈值范围的错误(超限错误)的风险;通过输出Kubernetes对象的参数的阈值范围,便于用户参考阈值范围修改参数的值,从而降低修复超限错误的复杂度。
在一种可能的实现中,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括:响应于校验出所述第一Kubernetes对象的参数的值不属于选项集合,所述服务器向所述终端发送第八提示信息,所述第八提示信息指示所述值不属于选项集合,或者所述第八提示信息包括所述选项集合。
通过在Kubernetes对象的参数的值不属于选项集合的情况下进行提示,从而降低为Kubernetes对象配置的参数的值不属于特定的选项集合引起的错误(非可选值错误)的风险;通过输出Kubernetes对象的参数的选项集合,便于用户参考选项集合修改参数的值,从而降低修复非可选值错误的复杂度。
在一种可能的实现中,所述第一Kubernetes对象的参数包括第一标识和第一值,所述第一标识用于标识所述第一Kubernetes对象的参数,所述第一值为所述第一Kubernetes对象的参数的取值,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括以下至少一项:
所述服务器基于所述第一标识查找第一对应关系,获得预期的值类型,所述第一对应关系包括所述第一标识以及所述预期的值类型;响应于所述第一值的类型与所述预期的值类型不匹配,所述服务器向所述终端发送所述第四提示信息;或者,
所述服务器基于所述第一标识之前缩进的数量或者所述第一标识之前字符数量获得所述参数的第一层级;所述服务器基于所述第一标识查找第二对应关系,获得预期的层级,所述第二对应关系包括所述第一标识以及所述预期的层级;响应于所述第一层级与所预期的层级不同,所述服务器向所述终端发送所述第五提示信息;或者,
由于利用参数标识以及所述预期的值类型进行校验,可以跟随Kubernetes的升级演进更新和维护对应关系从而对校验功能升级,因此提高了灵活性和可扩展性,也降低了升级和维护的成本。
在一种可能的实现中,所述服务器基于所述第一标识,在参数标识库进行查询;响应于所述参数标识库中每个参数标识与所述第一标识不一致,所述服务器向所述终端发送第六提示信息,所述第六提示信息包括所述参数标识库中与所述第一标识满足模糊匹配条件的第二标识。
由于基于参数标识库中每个参数标识与所述第一标识不一致输出提示信息,从而提示参数标识拼写错误的情况,从而降低参数标识拼写错误导致参数配置失败的风险。
在一种可能的实现中,所述方法还包括:终端响应于对所述界面触发的确认指令,向服务器发送第一配置文件;所述服务器对所述第一配置文件进行校验;响应于校验出所述第一配置文件指示删除Kubernetes对象的操作,所述服务器向所述终端发送第八提示信息,所述第八提示信息指示删除Kubernetes对象造成的风险;所述终端在所述界面中显示所述第八提示信息。
通过进行对象删除校验,从而能够在校验发现用户指示删除Kubernetes对象的情况下,提前输出提示信息,实现资源删除预警,降低资源被误删除引起的风险。
在一种可能的实现中,所述方法还包括:终端响应于对所述界面触发的确认指令,向服务器发送第一配置文件;所述服务器对所述第一配置文件进行校验;响应于校验出所述第一配置文件指示无效操作,所述服务器向所述终端发送第九提示信息,所述第九提示信息指示所述无效操作;所述终端在所述界面中显示所述第九提示信息。
由于对无效操作进行校验,在校验不通过的情况下输出提示信息,从而降无效操作引起的风险。
第二方面,提供了一种Kubernetes对象的参数校验方法,所述方法包括:服务器接收来自终端的所述第一Kubernetes对象的参数;所述服务器对所述第一Kubernetes对象的参数进行校验;响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,所述提示信息指示所述错误或者修复所述错误的方式。
第三方面,提供了一种Kubernetes对象的参数校验方法,所述方法包括:终端显示编辑软件的界面;所述终端基于对所述界面触发的输入操作,获得第一Kubernetes对象的参数;所述终端向服务器发送所述第一Kubernetes对象的参数;所述终端接收来自服务器的提示信息,所述提示信息指示所述第一Kubernetes对象的参数存在错误或者修复所述错误的方式;所述终端在所述界面中显示所述提示信息。
在一种可能的实现中,所述终端在所述界面中显示所述提示信息,包括以下至少一项:所述终端在所述界面上显示错误标记,所述错误标记指示所述第一Kubernetes对象的参数存在错误;或者,所述终端对所述第一Kubernetes对象的参数进行突出显示;或者,所述终端在所述界面上显示悬浮窗,所述悬浮窗包括所述错误的类型、存在错误的参数的位置信息、修复所述错误的方式以及确认修复控件中至少一项,所述确认修复控件用于触发按照修复所述错误的方式更新所述第一Kubernetes对象的参数的指令。
在一种可能的实现中,所述方法包括:所述终端响应于修复指令,按照所述修复所述错误的方式对所述第一Kubernetes对象的参数进行更新。
第四方面,提供了一种服务器,所述服务器包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机程序指令;所述至少一个处理器执行所述计算机程序指令,以使得所述服务器执行上述第二方面所述的方法。
第五方面,提供了一种终端,包括显示器、处理器和存储器,所述存储器中存储有计算机程序指令,所述显示器用于显示界面,所述处理器执行所述计算机程序指令,以使得所述终端执行上述第三方面所述的方法。
第六方面,提供了一种计算设备集群,计算设备集群包括多个计算设备,每个计算设备包括处理器和存储器;所述多个计算设备的处理器用于执行所述多个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如第二方面所述的方法。
第七方面,提供了一种Kubernetes对象的参数校验装置,所述装置包括:
接收模块,用于接收来自终端的所述第一Kubernetes对象的参数;校验模块,用于对所述第一Kubernetes对象的参数进行校验;发送模块,用于响应于校验模块校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,所述提示信息指示所述错误或者修复所述错误的方式。
模块作为软件功能单元的一种举例,校验模块可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,校验模块可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,校验模块可以包括至少一个计算设备,如服务器等。或者,校验模块也可以是利用专用集成电路(application-specific integratedcircuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
校验模块包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。校验模块包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,校验模块包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
第八方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令在计算机上运行时,使得计算机执行上述第二方面或第二方面任一种可选方式所提供的方法。
第九方面,提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序指令,当所述计算机程序指令被计算机加载并运行时,使得所述计算机执行上述第二方面或第二方面任一种可选方式所提供的方法。
第十方面,提供了一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第二方面及其第二方面任意可能的实现方式中的方法。
第十一方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令在计算机上运行时,使得计算机执行上述第三方面或第三方面任一种可选方式所提供的方法。
第十二方面,提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序指令,当所述计算机程序指令被计算机加载并运行时,使得所述计算机执行上述第三方面或第三方面任一种可选方式所提供的方法。
第十三方面,提供了一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第三方面及其第三方面任意可能的实现方式中的方法。
附图说明
图1为本申请实施例提供的一种参数校验系统的架构的示意图;
图2A是本申请实施例提供的一种Kubernetes对象的参数配置方法的流程图;
图2B是本申请实施例提供的另一种Kubernetes对象的参数配置方法的流程图;
图3A是本申请实施例提供的一种Kubernetes对象的参数校验方法的界面示意图;
图3B是本申请实施例提供的一种Kubernetes对象的参数校验方法的界面示意图;
图3C是本申请实施例提供的一种Kubernetes对象的参数校验方法的界面示意图;
图3D是本申请实施例提供的一种Kubernetes对象的参数校验方法的界面示意图;
图4为本实施例提供的一种基于Angular的软件系统架构图;
图5为本实施例提供的一种实时参数错误校验方法的流程图;
图6为本实施例提供的一种异步接口校验方法的流程图;
图7是本实施例提供的一种参数配置计算预警方法的流程图;
图8为本实施例提供的一种修复参数配置方法的流程图;
图9是本申请实施例提供的一种Kubernetes对象的参数校验装置的结构示意图;
图10是本申请实施例提供的一种计算设备的结构示意图;
图11是本申请实施例提供的一种计算设备集群的架构示意图;
图12是本申请实施例提供的一种计算设备集群的架构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。
下面对本申请的一些实施例涉及的一些术语概念做解释说明。
(1)Kubernetes
Kubernetes也称K8s或kube,是一个开源的容器调度平台,用于自动对容器化的应用程序进行部署、扩展和管理。
(2)Kubernetes对象
Kubernetes对象是指Kubernetes中用于对应用程序进行部署、运行或者管理的资源。Kubernetes对象也可以称为Kubernetes对象。Kubernetes对象例如为无状态应用(deployment)、有状态应用(stateful set)、容器组(pod)、配置映射(config map)、安全密钥(secret)、服务(service)、副本集合(replica set)、命名空间(namespace)、卷(volume)、守护进程副本集合(daemon set)、作业(job)或者定时任务(cron job)。其中,pod是Kubernetes的最小计算单元,pod代表一个或多个相关容器和它们所共享的存储资源和网络资源。config map是一个键值对(key-value)的集合,config map(用于存储非敏感性配置数据,如应用程序的环境变量、命令行参数、配置文件等数据。secret用于存储和管理敏感性配置数据。service为一组pod提供单个稳定的网络入口。deployment用于管理pod副本集,以实现应用程序的水平伸缩、回滚和更新等。replica set用于保持有指定数量的副本运行,并在副本数不足时自动创建新的副本。namespace用于将Kubernetes集群划分为多个虚拟集群,用于隔离一组资源,可以分别进行管理和授权。volume为提供给容器或者pod的持久化存储资源。stateful set用于使得一个或多个有状态的pod以固定顺序运行,并且具有唯一标识和网络名称。daemon set在每个节点上运行一个或多个pod,用于执行一些特定的系统任务,如日志采集、监控、数据采集等。job和cron job用于执行一次性或定时任务,例如数据备份或定期清除过期数据。除了以上列举的资源类型,Kubernetes对象还可以为应用程序接口(Application Programming Interface,API)。例如,Kubernetes对象为horizontal pod autoscaler(水平Pod自动伸缩)、vertical pod autoscaler(垂直Pod自动伸缩)、pod disruption budget(垂直Pod自动伸缩)、network policy(网络策略)等,用于实现自动缩放、网络安全、负载均衡等更高级的功能。
(3)Kubernetes对象的参数
Kubernetes对象的通用参数包括Kubernetes对象的标识(例如Kubernetes对象的名称等元数据)以及Kubernetes对象的类型(如容器、容器组、无状态应用或副本集)。对于pod这种资源而言,与pod调度有关的参数包括Kubernetes对象的规格(例如资源的请求量以及资源的阈值)、pod的运行时间参数、为pod指定的节点设备、pod的亲和性以及pod的反亲和性中至少一项。
下面对本申请实施例的应用场景举例说明。
本申请实施例可以应用在基于Kubernetes对应用程序进行部署、运行或者管理的场景。由于Kubernetes对象的类型众多,每种Kubernetes对象可配置的参数的类型也很多,通常需要配置大量的参数。如果用户输入了不可行的参数,例如参数的标识的拼写出现错误,又如参数的值的类型出现错误,再如配置的资源量超过阈值,再如参数导致错误调度,由于在编辑过程中,编辑软件没有校验和错误提示的功能,编辑软件无法提示用户参数配置错误,导致参数配置错误的概率较高,进而导致Kubernetes对象部署难度较高。
基于此,本申请的一种可能实现方式中,通过在编辑软件编辑Kubernetes对象配置文件的过程中,针对Kubernetes对象的参数进行错误校验,在校验不通过的情况下输出提示信息,从而能够通过提示信息提醒用户参数配置错误的风险,降低参数配置错误的概率,进而降低Kubernetes对象部署难度,也减少了后续维护及排查错误的时间及维护成本。校验和输出提示信息的整体流程可参考图2A或图2B实施例的描述。
如果需要,本申请实施例可选择支持校验参数的标识的拼写是否存在错误的功能,在标题“校验功能一”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持校验参数值类型是否存在错误的功能,在标题“校验功能二”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持校验参数的层级是否错误的功能,在标题“校验功能三”之后将对可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持校验参数的值是否为错误赋值的功能,在标题“校验功能四”之后将对可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持校验资源分配可行性的功能,在标题“校验功能五”之后将对可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持校验调度策略可行性的功能,在标题“校验功能六”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持校验是否删除了Kubernetes对象的功能,在标题“校验功能七”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持校验是否执行无效操作的功能,在标题“校验功能八”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持校验是否执行错误绑定的功能,在标题“校验功能九”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持校验数据来源是否错误功能,在标题“校验功能十”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持提示参数标识拼写错误的功能,在标题“提示功能一”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持提示参数值类型存在错误的功能,在标题“提示功能二”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持提示参数的层级存在错误的功能,在标题“提示功能三”之后将对可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持提示参数的值被错误赋值的功能,在标题“提示功能四”之后将对可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持提示参数的绑定关系存在错误的功能,在标题“提示功能五”之后将对可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持提示参数的数据来源存在错误的功能,在标题“提示功能六”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持提示资源分配不可行的功能,在标题“提示功能七”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持提示调度策略不可行的功能,在标题“提示功能八”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持修复参数标识拼写错误的功能,在标题“修复功能一”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持修复参数值类型错误的功能,在标题“修复功能二”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持修复参数的层级的错误的功能,在标题“修复功能三”之后将对可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持修复参数的错误赋值的功能,在标题“修复功能四”之后将对可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持修复参数的绑定关系错误的功能,在标题修复功能五”之后将对可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持修复资源分配错误的功能,在标题“修复功能六”之后将对该可选功能的实现方式进行描述。
如果需要,本申请实施例可选择支持修复调度策略错误的功能,在标题“修复功能七”之后将对该可选功能的实现方式进行描述。
下面对应用场景关联的硬件系统架构举例说明。
附图1为本申请实施例提供的一种参数校验系统100的架构的示意图,系统100包括终端120以及服务器系统140。终端120与服务器系统140通过通信网络160连接。
终端(terminal)是指支持人机交互功能、拥有接入网络的能力、通常搭载有操作系统的设备。终端120的类型包括但不限于手机、平板电脑、笔记本电脑、台式电脑、汽车、车载终端、可穿戴设备、掌上游戏主机等。终端120也可以称为用户设备(user equipment,UE)、智能终端、移动终端用户装备(user device)或终端设备(terminal equipment)。终端120运行有用于实现编辑配置文件的应用程序,终端120通过编辑软件1201与服务器系统140交互,从而访问服务器系统140提供的对配置文件中的参数进行错误校验的服务。
服务器系统140用于运行对参数进行错误校验以及输出提示信息的服务,服务器系统140允许终端通过网络访问服务。服务器系统140可以是一个独立服务器,也可以是包含多个服务器的集群或者分布式系统,也可以是云计算平台或者虚拟化中心。服务器系统140包括的服务器可以是物理服务器,也可以是虚拟机、容器或者基于网络功能虚拟化(network functions virtualization,NFV)实现的虚拟化设备。服务器系统140包括的服务器可以是物理服务器,也可以是虚拟机、容器等虚拟化设备。
通信网络160用于支持终端120与服务器系统140进行数据通信连接。通信网络160通常支持标准通信技术和/或协议。通信网络160通常为互联网,也可以是局域网(localarea network,LAN)、城域网(metropolitan area network,MAN)、广域网(wide areanetwork,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。通信网络160包括一个或多个网络设备,如交换机、路由器等。
终端120包括处理器、存储器、网络接口和显示器。显示器例如是屏幕。终端120可以通过处理器运行编辑软件1201。终端120可以通过显示器显示编辑软件1201的界面,界面包括编辑区域,编辑区域用于编辑配置文件。用户可以通过对界面中的控件触发操作,对配置文件进行编辑。终端120可以通过网络接口,将配置文件发送给服务器系统140。终端120可以通过存储器保存用于编辑软件1201的程序代码。
编辑软件1201例如可以是全球信息网(world wide web,Web)应用程序,编辑软件1201又如可以是应用客户端,再如编辑软件1201可以是集成于第三方应用中的应用程序接口(API),再如编辑软件1201可以是第三方应用中集成的插件,再如编辑软件1201可以是第三方应用中集成的软件开发工具包(software development kit,SDK)。Web应用程序是通过Web浏览器访问的应用程序。应用客户端可以是独立的软件客户端,也可以是小程序。小程序是指依赖于父应用程序运行的子应用程序。
在执行参数校验的流程中,可选地,服务器系统140承担主要的数据处理任务,终端120承担次要数据处理任务;或者,服务器系统140承担次要数据处理任务,终端120承担主要数据处理任务;或者,终端120和服务器系统140之间协同承担数据处理任务。
服务器系统140可以包括多个服务器。例如,服务器系统140中包括前端服务器140-a和后端服务器140-b。
前端服务器是指靠近终端120一端的服务器。前端服务器用于管理系统100的前端资源,例如HTML页面、JavaScript源码或者TS源码、层叠样式表(Cascading Style Sheets,CSS),前端服务器用于为用户提供网站前端界面和交互功能。后端服务器140-b用于处理业务逻辑和数据库操作。后端服务器接收前端服务器提交过来的数据请求,处理这些请求后返回相应的结果给前端服务器。
前端服务器和后端服务器可以分设于不同物理服务器上,前端服务器140-a与后端服务器140-b通过网络以及HTTP协议通信。前端服务器和后端服务器也可以集成在同一台物理服务器上。
可选地,系统100还包括存储系统180。存储系统180用于保存服务器系统140在参数校验时所需的数据,例如Kubernetes对象的参数标识、Kubernetes对象的参数的默认值、Kubernetes对象的参数层级、Kubernetes对象的参数默认值、Kubernetes的参数值类型、Kubernetes中资源的配置量参数、Kubernetes对象的参数的阈值范围以及不同Kubernetes对象之间的绑定关系中至少一项。存储系统180包括一个或多个存储设备。存储系统180可以位于服务器系统140的外部,通过通信网络或总线与服务器系统140交换数据。例如,存储系统180为外置的硬盘阵列、存储服务器、云存储系统等。或者,存储系统180也可以位于服务器系统140的内部,通过总线与服务器系统140交换数据。
可选地,服务器系统140与容器调度系统190通过网络连接。容器调度系统190用于承担容器调度的功能。服务器系统140可以通过网络与容器调度系统190交互,例如,服务器系统140可以将YAML文件发送给容器调度系统190,容器调度系统190基于接收到的YAML文件调度容器。本申请实施例以容器部署系统为Kubernetes为例说明,Kubernetes也可以替代为Docker Swarm、Mesos或者其他类型的支持基于YAML文件部署资源的容器调度系统。
下面对本申请实施例的方法流程举例说明。
附图2A是本申请实施例提供的一种Kubernetes对象的参数配置方法的流程图。附图2A示出的方法200的执行主体包括多种情况。
在一种可能实现方式中,方法200的执行主体为终端。例如,由终端通过运行浏览器软件或者业务客户端软件执行方法200。例如,结合图1所示应用场景来看,可以由终端120在运行编辑软件1201(编辑软件1201是浏览器软件或者业务客户端软件的具体示例)的过程中,通过输入设备(例如鼠标、键盘或触摸屏幕)执行附图2A中S210,由终端120通过处理器运行编辑软件1201实现附图2A中S240,由终端120通过输出设备(如显示器或麦克风)执行附图2A中S250。
在另一种可能的实现中,方法200的执行主体为单个服务器或者多个服务器组成的集群或者分布式系统。例如,由服务器系统140中服务器140-a或者服务器140-b中至少一项通过网络接口接收终端120发送的参数,从而执行附图2A中S210。由服务器系统140中服务器140-a或者服务器140-b中至少一项执行附图2A中S240,由服务器系统140中服务器140-a或者服务器140-b中至少一项通过网络接口向终端120发送错误提示信息,从而执行附图2A中S250。
在再一种可能的实现中,附图2A示出的方法200由终端和服务器交互执行。例如,请参考附图2B,附图2B示出了终端和服务器交互执行方法200的流程示意图。下面侧重以终端和服务器交互为例描述说明方法流程。以下描述的由服务器执行的步骤也可以替换为由终端执行或终端和服务器协同执行,由终端执行的步骤也可以替换为由服务器执行或终端和服务器协同执行。
S210、终端获取Kubernetes对象的参数。
在获取参数的一种可能的实现中,终端显示编辑软件的界面,界面包括输入控件。输入控件用于输入Kubernetes对象的参数。终端可以通过输入设备(如鼠标、键盘、触摸屏)等检测对输入控件的操作,响应于对输入控件触发的操作,获取Kubernetes对象的参数。
获得的Kubernetes对象的参数可以是参数的标识,也可以是参数的值,也可以是参数的标识和该参数的值的组合。
在获取参数的标识的一种可能的实现中,终端响应于检测到冒号输入事件,获取冒号之前、上一个换行符之后的字符串,作为当前输入的参数的标识。
在获取参数的值的一种可能的实现中,终端响应于检测到换行符输入事件,获取冒号之后、当前输入的换行符之前的字符串,作为当前输入的参数的值。
在获取参数一种可能的实现中,终端响应于检测到换行符输入事件,获取当前换行符与上一个换行符之间的字符串,作为当前输入的参数的标识和参数的值。
由于Kubernetes中配置文件通常是YAML格式的文件,而YAML格式的文件通常采用冒号作为参数的标识与参数的值之间的分隔符,采用换行符作为一个参数与下一个参数之间的分隔符,输入一次冒号表示执行了输入参数标识的行为,输入换行符表示当前的参数输入结束,因此能够基于冒号输入事件快速定位到参数的标识,基于换行符输入事件快速定位到参数的值,从而提高参数的获取速度。
S220,终端向服务器发送Kubernetes对象的参数。
在发送Kubernetes对象的参数的一种可能的实现中,终端响应于获取到用户输入的一个参数,向服务器发送获取的参数。通过这种方式,能够随着用户的参数输入操作,将用户输入的参数实时发送给服务器,以便服务器实时地针对用户本次输入的参数进行校验,而不必等到整个配置文件编辑完成再针对文件中的参数进行校验,因此支持实时参数错误校验的功能,有助于提高错误提示的速度。
在发送Kubernetes对象的参数的另一种可能的实现中,终端响应于提交指令,获取配置文件。终端向服务器发送配置文件。提交指令指示将配置文件提交至Kubernetes集群。配置文件包括一个或多个Kubernetes对象的一个或多个参数。编辑软件的界面可以包括确定控件,提交指令通过对确定控件的点击操作触发。通过这种方式,由于在有些场景下,判断一个参数是否错误需要参考其他参数的取值,因此通过将整个配置文件发送给服务器,便于服务器联合更多参数进行错误校验,从而适配更多的场景。
S230,服务器接收来自终端的Kubernetes对象的参数。
S240、服务器对Kubernetes对象的参数进行错误校验。
例如,服务器接收一个参数,基于该参数的标识或者该参数的值中至少一项,校验该参数是否错误。又如,服务器接收一个配置文件,从配置文件中获得多个相关的参数,基于多个参数中每个参数的标识以及每个参数的值,校验多个参数中是否存在错误的参数。
S250、在校验不通过(例如参数存在错误)的情况下,服务器获取提示信息,服务器向终端发送提示信息。
提示信息例如是错误提示信息。错误提示信息用于提示用户错误校验不通过的参数。错误提示信息可以是提示信息,也可以是告警信息。举例来说,错误提示信息包括错误校验不通过的参数的标识、错误校验不通过的参数的值、错误校验不通过的参数的位置信息以及问题描述信息中至少一项。参数的位置信息用于指示参数在配置文件中的位置,以便用户快速定位到发生错误的参数。例如,参数的位置信息为参数在配置文件中的行号。问题描述信息用于指示错误的类型。例如,问题描述信息包括拼写错误描述信息、层级错误描述信息、值类型错误描述信息、取值非可选值描述信息、绑定错误的描述信息、数据来源错误的描述信息、资源分配错误的描述信息、调度策略错误的描述信息中至少一项。服务器通过向终端发送错误提示信息,以便终端将错误提示信息展示给用户,便于用户及时了解参数配置错误的风险,从而降低参数配置错误的概率。
提示信息又如是修复提示信息。修复提示信息用于提示用户针对错误校验不通过的参数的修复方式。例如,修复提示信息包括参数的参考标识、参数的参考值、参数的参考值类型、参数的阈值、参数的参考层级、参数的参考绑定关系等。参考标识、参考值、参考值类型、阈值、参考层级、参考绑定关系等可以基于服务器保存的库获得,也可以基于Kubernetes的默认值获得,也可以基于用户的历史配置行为获得。服务器通过向终端发送修复提示信息,以便终端将修复提示信息展示给用户,便于用户参考修复提示信息修复参数配置过程中出现的错误,从而提高参数配置的成功率,降低参数配置的难度。
S260、终端显示提示信息。
在显示提示信息的一种可能实现中,终端在编辑软件的主界面中,显示独立于主界面的子界面,子界面包括错误提示信息。子界面例如是悬浮窗、弹窗、对话框或者其他窗口形式的界面。通过采用悬浮窗等方式显示提示信息,从而避免提示信息占用主界面本身的空间,从而降低错误提示对用户基于主界面输入参数的影响。
在显示提示信息的一种可能的实现中,终端在错误校验不通过的参数的周围,显示错误标记。错误标记例如为线条、符号或者图标等形式,从而直观地体现出参数存在错误。例如,终端在错误参数的下方显示下划线,下划线的像素长度与错误参数的像素长度相同,下划线的颜色与编辑软件的主界面的背景颜色以及配置文件中其他内容的颜色不同。例如,终端在校验不通过的参数下方显示红色线条。通过限定错误标记的颜色和位置,使得错误校验不通过的参数的样式与其他参数的样式区别更加清晰明显,并且几乎不占用编辑软件的主界面本身的视野空间。
在显示提示信息的再一种可能的实现中,终端在编辑软件的界面中对校验不通过的参数进行突出显示。例如,终端以明亮的颜色(如黄色、橙色)对校验不通过的参数进行显示,或者通过对校验不通过的参数进行加粗或者加下划线等方式进行标识,或者将校验不通过的参数的文字颜色改为与其他参数不同的颜色,使得校验不通过的参数与配置文件中其他内容区别开来。
本实施例提供的方法,通过在编辑软件编辑Kubernetes对象配置文件的过程中,针对Kubernetes对象的参数进行错误校验,在校验不通过的情况下输出提示信息,从而能够通过提示信息提醒用户参数配置错误的风险,降低参数配置错误的概率。
下面结合一些校验功能,对S240的一些实现方式细化描述。
校验功能一、错误拼写校验
在错误拼写校验的一种可能的实现方式中,终端向服务器发送Kubernetes对象的参数的标识。服务器接收来自终端的参数的标识。服务器基于参数的标识,在参数标识库中查询与参数的标识一致的参数标识。如果在参数标识库中没有查询到与参数的标识一致的参数标识,服务器确定错误拼写校验不通过。
作为错误拼写校验的一种匹配条件,例如通过终端输入的参数标识为第一参数标识,参数标识库中保存的参数标识为第二参数标识,若第一参数标识和第二参数标识不同,例如,第一参数标识相较于第二参数标识而言多了字符或者少了字符,又如,第一参数标识中字符的排列顺序与第二参数标识中字符的排列顺序不同,又如,第一参数标识中字母的大小写与第二参数标识中字母的大小写不同,服务器确定针对第一参数标识错误拼写校验不通过。
作为一个校验错误拼写的具体示例,请参考附图3A,终端显示编辑软件的界面300,界面300中包括输入框310,输入框310用于编辑配置文件。用户在输入框310中输入参数311,参数311的标识为kinds,参数311的值为StatefulSet。参数311的含义是类型。参数311的拼写正确的标识为字符串“kind”。用户输入的参数311的标识为字符串“kinds”。服务器获取用户输入的“kinds”,对kinds与参数标识库中的每个参数标识进行匹配。参数标识库中保存了拼写正确的参数311的标识(kind)。由于“kinds”相较于“kind”多了一个字符“s”,因此服务器确定kinds与参数标识库中的kind不匹配,则对参数311拼写校验不通过。
校验功能二、参数值类型错误校验
值类型错误是指为资源配置的参数的值的类型不符合特定类型引起的错误。在Kubernetes的场景下,类型错误例如是针对Kubernetes对象配置的参数的值的类型不符合Kubernetes定义的正确类型。下面结合Kubernetes场景涉及的参数,对参数值类型举例说明。
整型(Int):表示整数数字。例如,pod副本数、节点资源数量、容器端口号等参数的值的正确类型为整型。
字符串(string):表示文本字符串。例如,名称、标签、注释等参数的值的正确类型为字符串。
布尔型(boolean):只有两个值(true或false)。
数组(Array):表示一个包含多个值的有序列表,例如,容器端口列表、环境变量列表、容器命令或参数列表等参数的值的正确类型为数组。
对象(Object):表示Kubernetes中的某些特殊对象,例如:Service、Deployment、pod等参数的值的正确类型为对象。对象类型的参数中可以包括一个或多个映射类型的值。
映射(Map):表示一组键值对映射,例如,标签选择器、pod注释等参数的值的正确类型为映射。
在校验参数值类型错误的一种可能实现方式中,终端向服务器发送参数的标识以及参数的值。服务器接收来自终端的参数的标识以及参数的值。服务器基于参数的标识查找参数的标识与参数值类型之间的对应关系,得到参数的标识对应的参数值类型。服务器对接收到的参数的值与查找到的参数值类型进行匹配。如果接收到的参数的值与查找到的参数值类型匹配,例如接收到的参数的值的类型与查找到的参数值类型相同,服务器对参数值类型校验通过。如果从终端接收到的参数的值与查找到的参数值类型不匹配,例如接收到的参数的值的类型与查找到的参数值类型不同,则服务器对参数值类型校验不通过。
作为一个校验值类型错误的具体示例,请参考图3A,用户在输入框310中输入参数313,参数313的标识为replicas,参数313的值为errorRS,参数313的含义为pod副本数。服务器以replicas为索引,查找参数的标识与参数值类型之间的对应关系,得到replicas对应的参数值类型为整型。服务器对errorRS与整型进行匹配。由于errorRS的类型是字符串而不是整形,因此服务器确定errorRS与整型不匹配,则针对参数313值类型校验不通过。
校验功能三、错误层级校验
在错误层级校验的一种可能实现方式中,服务器确定参数在配置文件中所处的层级,并基于参数的标识查找参数的标识与参数的层级之间的对应关系,得到参数的标识对应的层级;服务器对参数在配置文件中所处的层级与查找到的参数的层级进行对比,如果参数在配置文件中所处的层级与查找到的参数的层级不同,则对参数的层级校验不通过,确定参数发生层级错误。
作为一个错误层级校验的具体示例,请参考附图3A,附图3A示出了参数312,参数312的标识为name,参数312的值为example,配置文件中参数name与参数metadata的缩进量相同,因此服务器确定参数name与参数metadata在配置文件中处于同一层级,而库(参数的标识与参数的层级之间的对应关系)中参数name是参数metadata的子参数,或者说参数name与参数metadata的层级不一致,则服务器对参数312层级校验不通过,确定参数发生层级错误。
校验功能四、错误赋值校验
错误赋值包括超限错误以及非可选值错误。超限错误是针对参数的值为数值的场景下,为Kubernetes对象配置的参数的值超过阈值范围的错误。非可选值错误是针对参数的值为选项的场景下,为Kubernetes对象配置的参数的值不属于特定的选项集合引起的错误。
例如,在Kubernetes的场景下,超限错误是针对Kubernetes对象配置的参数的值达到或者超过Kubernetes默认的阈值范围,调度器基于参数调度Kubernetes对象时,引起调度失败或者资源竞争的风险。例如,如果将优先级的值配置地超过设定的优先级范围,或者将时间限制的值配置为小于设定的时间阈值,很可能出现pod刚进入运行状态就被调度器删除,或者高优先级的pod驱逐低优先级的pod导致pod之间资源竞争的风险。
在校验超限错误的一种可能实现方式中,当用户输入一个参数的标识以及该参数的值后,服务器基于参数的标识查找到该参数的值的阈值范围,对用户输入的参数的值与查找到值的阈值范围进行比对。如果用户输入的参数的值超过查找到的阈值范围,则服务器对参数值超限校验不通过,确定参数值发生超限错误。
可选地,服务器针对运行时间参数校验超限错误。运行时间参数是指用于控制Kubernetes对象运行前或者运行中的时间长度的参数。例如,运行时间参数包括最长活动时间(active deadline seconds)和优雅终止时间(termination grace periodseconds)。termination grace period seconds用于指示容器终止前的等待时间,当pod进入终止(terminating)状态时,容器调度系统中的调度器会向pod中的所有容器发送信号,并等待容器清理工作并停止服务。如果等待时长超过active deadline seconds这一参数的值容器仍未停止,调度器会强制终止容器并删除pod。active deadline seconds用于指示运行pod正常运行的时间,如果设置了active deadline seconds这一参数,当pod运行的时间超过了active deadline seconds这一参数的值时,Kubernetes的调度器会删除pod。
在针对运行时间参数校验超限错误的一种可能实现方式中,服务器获取为Kubernetes对象配置的终止优雅时长(termination grace period seconds);服务器对终止优雅时长的值与第一时长阈值进行比较;如果终止优雅时长的值小于第一时长阈值,则服务器运行时间参数校验不通过。通过这种方式,从而降低由于终止优雅时长的值过小导致Kubernetes对象在停止运行前来不及删除资源进而导致资源占用的开销的风险,或者降低由于终止优雅时长的值过大导致Kubernetes对象在很长时间内不删除占用的资源的风险。
作为一个校验运行时间参数存在超限错误的具体示例,请参考附图3A、附图3A示出了参数314,参数314的标识为termination grace period seconds,参数314的值为0,含义是将终止优雅时长的值配置为0。服务器基于termination grace period seconds查找termination grace period seconds的阈值;服务器对0与termination grace periodseconds的阈值进行比较。服务器响应于确定0小于termination grace period seconds的阈值,则服务器针对参数314超限错误校验不通过。
在校验运行时间参数的另一种可能实现方式中,服务器获取为Kubernetes对象配置的最长活动时间;服务器对最长活动时间的值与第二时长阈值进行比较;响应于最长活动时间的值小于第二时长阈值,服务器对资源分配可行性校验不通过。通过这种方式,从而降低由于最长活动时间的值过小,导致Kubernetes对象刚进入运行状态就被容器调度系统的控制器删除的风险。
可选地,针对镜像拉取策略校验非可选值错误,Kubernetes中定义的镜像拉取策略的值的选项包括Always、Never、if not present和OnFailure,Always表示每次都尝试拉取镜像,如果不存在本地镜像或远程镜像,就会尝试拉取最新的远程镜像。Never表示不尝试拉取镜像,只使用本地镜像。IfNotPresent表示只有当本地不存在该镜像时才会尝试拉取远程镜像。OnFailure表示仅当之前使用的镜像出现错误或者拉取失败时才会尝试拉取新的镜像。
在针对镜像拉取策略校验是否存在非可选值错误的一种可能实现方式中,服务器获取为镜像拉取策略的值;服务器对镜像拉取策略的值与Always、Never、IfNotPresent和OnFailure进行比对。如果镜像拉取策略的值与Always、Never、IfNotPresent和OnFailure均不同,则对镜像拉取策略校验不通过,确定存在非可选值错误。
校验功能五、资源分配可行性校验
在一种可能的实现中,计算设备校验针对为Kubernetes对象分配的资源量是否可行,是否可能由于配置的资源量过少导致Kubernetes对象无法正常运行,或者是否由于为Kubernetes对象配置的资源量过多导致资源浪费或者无法满足资源分配需求。
作为资源分配可行性校验的一种可能实现方式,终端向服务器发送的Kubernetes对象的参数包括为Kubernetes对象分配的资源量;服务器对分配的资源量与资源量阈值进行比较;如果分配的资源量不在资源量阈值指示的范围内,则服务器对资源分配可行性校验不通过。例如,服务器对分配的资源量与资源量阈值进行比较;如果分配的资源量大于资源量阈值,则服务器对资源分配可行性校验不通过。
资源量阈值的确定方式包括很多种实现方式。例如,资源量阈值基于Kubernetes集群中节点设备剩余的资源量确定,又如资源量阈值基于Kubernetes集群中节点设备的运行状态确定,再如资源量阈值基于Kubernetes集群中节点设备的负载确定。又如,作为一种获取资源量阈值的可能实现方式,服务器基于资源的类型以及资源的标识查找资源的类型、资源的标识与资源量阈值之间的对应关系,获得与资源的类型以及资源的标识对应的资源量阈值。资源的类型例如是kind参数。资源的标识例如是资源的元数据(metadata)以及资源的名称(name)。通过这种方式,支持针对不同类型的资源使用不同的资源量阈值进行校验,从而进一步提高准确性。
例如,响应于为所述第一Kubernetes对象分配的资源量大于第一资源量阈值,所述服务器向所述终端发送第二提示信息,所述第二提示信息用于指示资源量大于所述第一资源量阈值,或者所述第二提示信息包括所述第一资源量阈值,或者所述第二提示信息包括小于所述第一资源量阈值的第一参考资源量;响应于为所述第一Kubernetes对象分配的资源量小于第二资源量阈值,所述服务器向所述终端发送第三提示信息,所述第三提示信息用于指示资源量小于所述第二资源量阈值,或者所述第三提示信息包括所述第二资源量阈值,或者所述第三提示信息包括大于所述第二资源量阈值的第二参考资源量。
作为一个资源分配可行性校验的具体示例,请参考附图3A、附图3A示出资源的配置量参数317,资源的配置量参数317的标识包括storage(存储空间),资源的配置量参数317的值为100G。服务器在进行校验的过程中,获取kind参数的值、metadata参数的值以及storage,基于kind参数的值是PVC(图中未示出),确定待分配的资源的类型是PVC,基于metadata参数的值是www,确定待分配的资源的名称是www,基于www和PVC查找资源的类型、资源的标识与资源量阈值之间的对应关系,获得与www和PVC对应的资源量阈值,例如20G,服务器使用100G与查找到的资源量阈值20G进行比较,服务器确定100G大于资源量阈值20G,这种情况下很可能无法满足分配100G的存储空间的需求,存在资源分配错误的风险,因此针对参数317校验不通过。
校验功能六、调度策略可行性校验
调度策略用于指示将特定的Kubernetes对象调度至Kubernetes集群中特定的节点设备。例如,调度策略包括节点设备的节点名称或者节点设备的标签中至少一项。通过对调度策略可行性校验,从而降低由于调度策略有矛盾,例如Kubernetes对象的调度需求与服务器的参数有矛盾,导致调度策略执行失败的风险。
校验调度可行性的实现方式包括下述实现方式一至实现方式四中任意一项及其组合。
校验调度可行性的实现方式一、对Kubernetes对象的节点选择参数包括的节点名称与服务器的名称进行匹配。
节点选择参数用于指定为Kubernetes对象调度的节点设备。节点名称为指定Kubernetes对象所需调度的节点设备的名称。例如,Kubernetes对象为pod,节点选择参数为node selector参数。node selector参数用于指定Kubernetes集群中运行pod的节点。node selector参数包括node name。服务器对pod的配置文件中node selector参数中的node name与Kubernetes集群中每个节点设备的node name进行匹配,如果node selector参数中的node name与Kubernetes集群中每个节点设备的node name不同,表明Kubernetes集群中不存在node selector参数中的node name所指定的设备,这种情况下存在Pod不能调度并将处于挂起(Pending)状态的风险,服务器对调度策略校验不通过。
下面结合一个基于节点选择参数包括的节点名称进行调度可行性校验的具体示例说明。例如,配置文件包括如下内容。
在上述配置文件中,node selector参数用于指定运行pod的设备,其中kubernetes.io/hostname键的值设置为要调度pod的节点名称,如字符串“my-node-name”。服务器基于字符串“my-node-name”与每个设备的名称进行匹配,判断每个设备的名称均不是字符串“my-node-name”,或者说Kubernetes集群中并不存在名称为“my-node-name”的服务器,因此对Kubernetes对象调度可行性校验不通过。
校验调度可行性的实现方式二、基于Kubernetes集群中节点设备具有的资源量与Kubernetes对象的资源量阈值进行匹配。
Kubernetes对象的资源量阈值用于控制Kubernetes对象使用的资源的量。在一种可能的实现中,资源量阈值包括资源量上限阈值或者资源量下限阈值中至少一项。
资源量上限阈值也可以称为资源量阈值上边界或者资源量阈值最大值。资源量上限阈值用于指示最多能为Kubernetes对象分配多少资源。在一种可能的实现中,资源量上限阈值基于Kubernetes对象的资源规格(spec)参数中的限制(limits)参数确定。limits参数用于指示允许Kubernetes对象使用的资源量的最大值。
资源量下限阈值也可以称为资源量阈值下边界或者资源量阈值最小值。资源量下限阈值用于指示最少要为Kubernetes对象分配多少资源。在一种可能的实现中,资源量下限阈值基于Kubernetes对象的资源规格(spec)参数中的请求(requests)参数确定。
结合资源量上限阈值或者资源量下限阈值,在校验调度可行性的一种可能实现方式中,服务器获得Kubernetes对象的资源量上限阈值或者资源量下限阈值,并基于Kubernetes集群中节点设备的运行状态,获得Kubernetes集群中节点设备可用的资源量;服务器Kubernetes集群中节点设备上可用的资源量与Kubernetes对象对应的资源量上限阈值进行比较,并Kubernetes集群中节点设备可用的资源量与Kubernetes对象对应的资源量下限阈值进行比较;如果Kubernetes集群中节点设备上可用的资源量小于Kubernetes对象对应的资源量下限阈值,则服务器对该Kubernetes对象资源分配可行性校验不通过。如果Kubernetes集群中节点设备上可用的资源量大于Kubernetes对象对应的资源量上限阈值,则服务器对该Kubernetes对象资源分配可行性校验通过。
例如,资源量上限阈值为limits参数的值,资源量下限阈值为requests参数的值,服务器可以对requests参数的值与Kubernetes集群中节点设备可用的资源量进行对比,并对limits参数的值与Kubernetes集群中节点设备可用的资源量进行对比,如果节点设备上可用的资源量小于requests参数的值,表示节点设备不能满足pod启动时最少的资源数量,则服务器对pod的调度可行性校验不通过。如果节点设备上可用的资源量大于limits参数的值的值,表示节点设备能满足pod启动时最多允许使用的资源数量,则服务器对pod的调度可行性校验通过。
下面结合一个基于Kubernetes对象的资源量阈值进行调度可行性校验的具体示例说明。例如,配置文件包括如下内容。
在上述配置文件中,定义了一个名为my-pod的Pod,其中包含了一个名为my-container的容器。requests字段指定了该容器对CPU和内存的请求量。其中,cpu的值为3,代表该容器最少需要占用3个CPU;memory的值为1G。服务器基于3个CPU与Kubernetes集群中每个节点设备可用的CPU数量进行匹配,如果Kubernetes集群中每个节点设备可用的CPU数量均小于3,则服务器对Kubernetes对象调度可行性校验不通过。
校验调度可行性的实现方式三、基于Kubernetes对象的亲和性参数进行校验。
亲和性参数用于指示Kubernetes对象与节点设备之间的亲和性关系或者反亲和性关系,或者用于指示不同Kubernetes对象之间的亲和性关系或者反亲和性关系。例如,亲和性参数包括节点亲和性(node affinity)参数、pod亲和性(pod affinity)参数、pod反亲和性(pod anti affinity)参数以及节点反亲和性(node anti affinity)参数。节点亲和性参数包括Kubernetes对象所需调度到的节点设备的标识,节点反亲和性参数包括禁止Kubernetes对象调度到的节点设备的标识。
在一种可能的实现中,服务器从Kubernetes对象的亲和性参数中获得目标节点标识,目标节点标识用于指示与Kubernetes对象存在亲和性关系的节点设备;服务器使用目标节点标识与Kubernetes集群中每个节点设备每个节点设备的标识进行匹配。如果Kubernetes集群中不存在与目标节点标识匹配的节点设备,这种情况下相当于Kubernetes集群中每个节点设备都不满足Kubernetes对象的亲和性规则,则服务器对Kubernetes对象调度可行性校验不通过。
下面结合一个基于节点选择参数包括的节点标识进行调度可行性校验的具体示例说明。例如,配置文件包括如下内容。
在上述配置文件中,Pod使用node affinity requiredDuringSchedulingIgnoredDuringExecution,表示pod只能被调度到标记size=large的节点设备上。如果Kubernetes集群中没有节点设备具有size=large这个标记,则对Pod调度可行性校验不通过。
在一种可能的实现中,服务器对Kubernetes对象的节点选择参数包括的节点标识与Kubernetes对象的节点反亲和性参数包括的节点标识进行匹配。如果节点选择参数包括的节点标识与Kubernetes对象的节点反亲和性参数包括的节点标识匹配,例如节点选择参数包括的节点标识与Kubernetes对象的节点反亲和性参数包括的节点标识相同,这种情况下相当于节点选择参数与节点反亲和性参数这两种参数的要求相互矛盾,因此服务器对Kubernetes对象调度可行性校验不通过。
下面结合一个基于节点选择参数包括的节点标识以及节点反亲和性参数包括的节点标识进行调度可行性校验的具体示例说明。例如,配置文件中node selector中包括参数nodename:node1,该参数的含义是要求将Pod调度到node1上,而nodeAntiAffinity包括参数key:nodename,该参数的含义是不允许将Pod调度到具有nodename:node1标签的节点上。服务器确定node selector中的节点标识与nodeAntiAffinity中的节点标识匹配,即nodename:node1与nodeAntiAffinity中指定的key相同,对Kubernetes对象调度可行性校验不通过。
校验调度可行性的实现方式四、基于Kubernetes对象的节点选择参数包括的配置条件进行校验。
例如,服务器判断节点设备是否满足节点选择参数包括的配置条件,如果计算设备不满足节点选择参数包括的配置条件,则对调度策略调度可行性校验不通过。配置条件例如包括操作系统、存储资源类型或者网络资源中至少一项。
下面结合一个基于Kubernetes对象的节点选择参数包括的配置条件进行调度可行性校验的具体示例说明。例如,配置文件包括如下内容。
在上述配置文件中,要求Pod部署到Ubuntu系统上且有SSD挂载的节点上。如果Kubernetes集群中只有一个节点,但这个节点没有安装Ubuntu系统或者没有挂载SSD,则服务器对Kubernetes对象调度可行性校验不通过。
作为一个校验调策略度的具体示例,请参考附图3C,附图3C示出了参数318,参数318的标识为nodeName(节点名称),参数318的值为master01.myhci.com,参数318的含义是将pod调度到名称为master01.myhci.com的主节点上。服务器基于参数318之外的其他参数(如亲和性或者node selector)确定当前pod所需调度到的节点为工作节点。服务器确定参数318的值与工作节点不匹配,例如,pod应该被调度到工作节点上,而用户在配置时指定要将pod调度到主节点上,这种情况下,可以判定配置文件中指定的不同调度策略相互冲突,因此调度策略校验不通过。
校验功能七、对象删除校验
终端响应于确认指令,向服务器发送第一配置文件;服务器接收到来自终端的第一配置文件,服务器对第一配置文件与历史时间段从终端接收到的第二配置文件进行比较,得到比较结果。服务器基于比较结果判断第一配置文件是否指示了针对Kubernetes对象的删除操作。作为判断是否指示资源删除操作的一种实现方式,服务器执行以下命令对比两个Kubernetes资源的变化:$kubectl diff-f<配置文件1.yaml>-f<配置文件2.yaml>;该命令将以YAML格式输出两个配置文件之间的变化,包括新增、修改和删除的Kubernetes对象。如果用户有删除某个Kubernetes对象,该命令将会在输出中显示删除的Kubernetes对象的内容。
通过进行对象删除校验,从而能够在校验发现用户指示删除Kubernetes对象的情况下,提前输出提示信息,实现资源删除预警,降低资源被误删除引起的风险。
校验功能八、无效操作校验
在无效操作校验的一种可能的实现中,终端响应于确认指令,向服务器发送第一配置文件;服务器接收到第一配置文件,服务器对第一配置文件与历史时间段从终端接收到的第二配置文件进行比较,得到比较结果,比较结果指示第一配置文件相较于第二配置文件的区别。如果第一配置文件中第一参数的标识与第二配置文件中第一参数的标识不同,表示用户要求对第一参数的标识进行修改。服务器基于第一参数的标识,查找参数标识库。参数标识库包括允许修改的参数的标识。如果在参数标识库中没有查找到第一参数的标识,表明对第一参数的标识进行修改的操作是无效操作,则无效操作校验不通过。
通过这种方式,在一些场景下,Kubernetes的控制器禁止用户修改参数的key,例如对象的名称、命名空间等。这些元数据往往由Kubernetes统自动生成,如果修改可能会影响Kubernetes对象的正常运行。例如对象的名称、命名空间等。又如,对于应用程序容器的镜像(image)和标签(tag)。应用程序容器的镜像和标签由应用程序开发人员和团队管理,用户通常不应该手动修改它们,如果镜像或标签被错误修改,可能会导致应用程序容器无法正常启动。基于此,通过进行无效操作校验,从而降低不允许用户修改标识的参数被执行修改操作引起的风险。
在无效操作校验的一种可能的实现中,服务器接收到来自终端的第一配置文件,服务器对第一配置文件与历史时间段从终端接收到的第二配置文件进行比较,从而得出第一配置文件相较于第二配置文件发生修改的参数。如果第一配置文件中第一参数的值与第二配置文件中第一参数的值不同,表示用户要求对第一参数的值进行修改。服务器基于第一参数的标识,查找参数值库。参数值库包括允许修改的参数的值。如果在参数值库中没有查找到第一参数的值,表明对第一参数的值进行修改的操作是无效操作,则无效操作校验不通过。
在无效操作校验的另一种可能实现方式中,服务器基于驱逐策略与优先级的值相矛盾,确定参数配置操作为无效操作。优先级为Kubernetes的调度器用于调度pod的参数,优先级高的pod会被优先调度至主机上。驱逐策略用于控制在资源不足的情况下,Kubernetes删掉哪些pod并重建pod的策略。驱逐策略包括Always(表示总是驱逐这个pod,并且在任何情况下都会重新创建它)、OnFailure(表示仅在pod因故障而从主机驱逐时才驱逐该pod,并在此类情况下重新创建该pod)以及Never(表示不要驱逐该pod,除非模式已列入并且pod模式支持删除)。
在基于调度策略与优先级确定配置操作为无效操作的一种实现方式中,服务器接收终端发送的pod的调度优先级;服务器响应于pod的调度优先级的值高于优先级阈值或者调度优先级为最高优先级,服务器确定优先将pod调度到节点设备上,pod不能被空调度。之后,服务器接收终端发送的pod的驱逐策略;服务器响应于驱逐策略指示驱逐pod,驱逐策略的指示与优先级矛盾,因此服务器确定配置驱逐策略的操作为无效操作,对配置驱逐策略的操作校验不通过。
校验功能九、错误绑定校验
在创建第一Kubernetes对象的配置文件的过程中,如果第一Kubernetes对象的配置文件中为第一Kubernetes对象绑定的第二Kubernetes对象并不存在,会引起建立绑定关系失败。比如在为一个Pod绑定PVC时,在Pod的配置文件中配置的PVC的名称应该是已经创建的PVC的名称。如果用户随便输入了一个并不存在的PVC的名称,可能导致无法建立Pod与PVC的绑定关系,导致配置失败。
基于此,本申请的一种可能的实现中,提供了错误绑定校验的机制,通过在配置第一Kubernetes对象和第二Kubernetes对象的绑定关系的场景下,校验第二Kubernetes对象是否已经创建,从而降低由于无法与并不存在的Kubernetes对象建立绑定关系导致配置失败的概率。
作为错误绑定校验的一种可能实现方式,服务器基于配置文件获取为第一Kubernetes对象绑定的第二Kubernetes对象的标识,服务器基于第二Kubernetes对象的标识查找Kubernetes对象列表,Kubernetes对象列表包括已创建的每个Kubernetes对象的标识。服务器对Kubernetes对象列表中的每个Kubernetes对象标识与第二Kubernetes对象的标识进行比对;响应于Kubernetes对象列表中不存在第二Kubernetes对象的标识,换句话说,Kubernetes对象列表中的每个Kubernetes对象标识与第二Kubernetes对象的标识均不同,服务器确定无法建立第一Kubernetes对象与第二Kubernetes对象之间的绑定关系,针对第二Kubernetes对象错误绑定校验不通过。响应于Kubernetes对象列表中存在第二Kubernetes对象的标识,服务器针对第二Kubernetes对象错误绑定校验通过。
作为一个校验错误绑定的具体示例,请参考附图3A,附图3A示出了参数315-a,参数315-a的标识包括containers.name(容器名称),参数315-a的值为wwwError,服务器基于containers.name查找容器名称列表。容器名称列表包括已创建的容器的名称;响应于在容器名称列表中没有查找到wwwError,换句话说,容器名称列表中的每个容器名称均与wwwError不同,服务器确定containers.name与wwwError之间为错误绑定,针对参数315-a校验错误绑定不通过。
作为另一个校验错误绑定的具体示例,请参考附图3B,附图3B示出了参数315-b,参数315-b的标识包括namespace(命名空间),参数315-b的值为defaultNull,服务器基于namespace查找命名空间列表。命名空间列表包括已创建的命名空间的名称;响应于在命名空间列表中没有查找到defaultNull,换句话说,命名空间列表中的每个命名空间的名称均与defaultNull不同,服务器确定namespace与defaultNull为错误绑定,针对参数315-b校验错误绑定不通过。
校验功能十、错误数据来源校验
在创建第一Kubernetes对象的配置文件中,如果第一Kubernetes对象的配置文件中为第一Kubernetes对象绑定的第二Kubernetes对象的类型不正确,会引起建立绑定关系失败。比如在为一个Pod绑定PVC时,在Pod的配置文件中配置的PVC的名称应该是已经创建的PVC的名称。如果用户配置的不是PVC的名称,而是secret的名称,就可能会导致无法建立Pod与PVC的绑定关系,导致配置失败。
基于此,在本申请提供的错误数据来源校验的一种可能实现方式中,服务器基于配置文件获取第一Kubernetes对象的标识以及为第一Kubernetes对象绑定的第二Kubernetes对象的类型。服务器基于第一Kubernetes对象的标识,查找第一Kubernetes对象的标识与第一Kubernetes对象所依赖的Kubernetes对象类型之间的对应关系,获得第一Kubernetes对象所依赖的Kubernetes对象类型。服务器对第二Kubernetes对象的类型与第一Kubernetes对象所依赖的Kubernetes对象类型进行匹配,响应于第二Kubernetes对象的类型与第一Kubernetes对象所依赖的Kubernetes对象类型不同,确定错误数据来源校验不通过,从而降低由于绑定的Kubernetes对象的类型错误引起建立绑定关系错误的风险。
在错误数据来源校验的另外一种可能实现方式中,服务器基于配置文件获取第一Kubernetes对象的标识以及第二Kubernetes对象的标识。服务器基于第一Kubernetes对象的标识,查找第一Kubernetes对象的标识与第一Kubernetes对象所依赖的Kubernetes对象类型之间的对应关系,获得第一Kubernetes对象所依赖的Kubernetes对象类型。服务器确定该Kubernetes对象类型对应的Kubernetes对象列表,Kubernetes对象列表包括对应Kubernetes对象类型的已创建的Kubernetes对象的标识。服务器基于第二Kubernetes对象的标识查找Kubernetes对象列表。服务器对Kubernetes对象列表中的每个Kubernetes对象标识与第二Kubernetes对象的标识进行比对;响应于Kubernetes对象列表中不存在第二Kubernetes对象的标识,换句话说,Kubernetes对象列表中的每个Kubernetes对象标识与第二Kubernetes对象的标识均不同,服务器确定无法建立第一Kubernetes对象与第二Kubernetes对象之间的绑定关系,针对第二Kubernetes对象错误数据来源校验不通过。
作为一个校验数据来源的具体示例,请参考附图3C,附图3C示出了参数316,参数316是第二Kubernetes对象的标识的具体示例,参数316的标识包括storageClassName(代表了Pod所使用的存储类的名称),参数316的值为secret,服务器在针对参数316进行校验时,基于kind参数的值(在图中未示出)指示pod(pod是第一Kubernetes对象的具体示例)以及pod与PVC之间的对应关系,确定pod绑定的Kubernetes对象类型为PVC。服务器基于secret与PVC不同,确定针对参数316校验数据来源不通过。
在本申请的一种可能实现方式中,能够针对Kubernetes对象的参数的配置错误进行提示,下面对错误提示功能的实现方式举例说明。
下面结合几种具体的错误类型,对S260的一些实现方式细化描述。
提示功能一、拼写错误提示
在错误拼写提示的一种可能实现方式中,服务器在确定错误拼写校验不通过(如基于参数的key,没有在参数标识库中查询到匹配的key)的情况下,服务器向终端发送拼写错误提示信息,拼写错误提示信息用于提示用户拼写校验不通过的参数的key。终端接收来自服务器的拼写错误提示信息。终端显示拼写错误提示信息。拼写错误提示信息包括错误的参数的key、错误的参数的key的位置信息以及拼写错误对应的问题描述信息中至少一项。
在错误拼写提示的一种可能实现方式中,终端在编辑软件的界面中存在拼写错误的参数的key周围显示错误标记。错误标记的形式例如是图像,比如说是线条、符号或者图标,从而直观地体现出参数的key存在拼写错误。例如,终端在拼写错误的参数的key下方显示下划线,下划线的像素长度与参数的key的像素长度相同,下划线的颜色例如与编辑软件的界面的背景颜色以及编辑软件的界面中YAML文本的颜色不同。例如,终端在拼写错误的参数的key下方显示红色下划线。
作为一个错误拼写提示的具体示例,请参考附图3A,参数311是一个key存在拼写错误的参数的具体示例,终端在kinds的下方显示下划线421,下划线421的像素长度与kinds的像素长度相同,通过下划线421提示kinds存在拼写错误。通过在拼写错误的参数的key下方显示线条,能够准确地提示哪个参数key存在拼写错误,同时几乎不占用编辑软件的界面的空间,避免错误提示信息对用户视野的影响,因此错误提示的效果较好。
在错误拼写提示的另一种可能实现方式中,终端在编辑软件的界面上显示子界面411,子界面411是独立于编辑软件的界面300显示的界面,子界面411例如是悬浮窗或者对话框。子界面411包括错误拼写提示信息。例如,终端监听光标453的位置或者触摸点位置。终端响应于光标453的位置或者触摸点位置落入存在拼写错误的参数的key所处的界面区域,在编辑软件的界面中显示子界面411。以存在拼写错误的参数的key是kinds为例,当光标453移动到编辑软件的界面中kinds所处的界面区域时,终端在编辑软件的界面中显示一个悬浮窗,悬浮窗包括文本“当前输入的参数的key:kinds拼写存在错误,请重新输入”,该悬浮窗是子界面的具体示例。
提示功能二、值类型错误提示
在错误类型提示的一种可能实现方式中,服务器在确定参数值类型校验不通过(如输入的参数值类型与从对应关系中参数的标识对应的参数值类型不同)的情况下,服务器向终端发送类型错误提示信息,类型错误提示信息用于提示用户参数值类型校验不通过的参数的值类型。终端接收来自服务器的类型错误提示信息。终端显示类型错误提示信息。类型错误提示信息包括错误的参数的值类型、错误的参数的值的位置信息以及类型错误对应的问题描述信息中至少一项。
在类型错误提示的一种可能实现方式中,终端在编辑软件的界面中存在类型错误的参数的值周围显示错误标记。错误标记的形式例如是图像,比如说是线条、符号或者图标,从而直观地体现出参数的值的类型存在拼写错误。例如,终端在类型错误的参数的值下方显示下划线,下划线的像素长度与参数的值的像素长度相同,下划线的颜色例如与编辑软件的界面的背景颜色以及编辑软件的界面中文本的颜色不同。例如,终端在类型错误的参数的值下方显示红色下划线。
作为一个类型错误提示的具体示例,请参考附图3A,参数313是一个值的类型存在错误的参数的具体示例,终端在errorRS的下方显示下划线463,下划线463的像素长度与errorRS的像素长度相同,通过下划线463提示errorRS存在拼写错误。通过在拼写错误的参数的值的下方显示线条,能够准确地提示哪个参数的值的类型存在错误,同时几乎不占用编辑软件的界面的空间,避免错误提示信息对用户视野的影响,因此错误提示的效果较好。
在错误类型提示的另一种可能实现方式中,终端在编辑软件的界面中显示子界面413,子界面413是独立于编辑软件的界面300显示的界面,子界面413例如是悬浮窗或者对话框。子界面413包括错误类型提示信息。
提示功能三、层级错误提示
在层级错误提示的一种可能实现方式中,服务器在确定参数层级错误校验不通过(如基于输入的参数的缩进量确定的层级与对应关系中参数的标识对应的参数的层级不同)的情况下,服务器向终端发送层级错误提示信息,层级错误提示信息用于提示参数层级校验不通过的参数。终端接收来自服务器的层级错误提示信息。终端显示层级错误提示信息。层级错误提示信息包括层级错误的参数的标识、层级错误的参数的位置信息以及层级错误对应的问题描述信息中至少一项。
在层级错误提示的一种可能实现方式中,终端在编辑软件的界面中存在层级错误的参数的周围显示错误标记。错误标记的形式例如是图像,比如说是线条、符号或者图标,从而直观地体现出参数的层级存在错误。例如,终端在层级错误的参数下方显示下划线,下划线的颜色例如与编辑软件的界面的背景颜色以及编辑软件的界面中文本的颜色不同。
作为一个层级错误提示的具体示例,请参考附图3A,参数312是一个层级错误的参数的具体示例,终端在name:example的下方显示下划线422,下划线422的像素长度与name:example的像素长度相同,通过下划线422提示name:example存在层级错误。通过在层级错误的参数的值的下方显示线条,能够准确地提示哪个参数的层级存在错误,同时几乎不占用编辑软件的界面的空间,避免错误提示信息对用户视野的影响,因此错误提示的效果较好。
在层级错误提示的另一种可能实现方式中,终端在编辑软件的界面中显示子界面412,子界面412是独立于编辑软件的界面300显示的界面,子界面412例如是悬浮窗或者对话框。子界面412包括错误类型提示信息。
提示功能四、错误赋值提示
在提示错误赋值的参数的一种可能实现方式中,服务器在确定参数赋值校验不通过(如参数的值超过阈值范围或者不属于特定的选项集合)的情况下,服务器向终端发送赋值错误提示信息,赋值错误提示信息用于提示参数赋值错误。终端接收来自服务器的赋值错误提示信息。终端显示赋值错误提示信息。赋值错误提示信息包括赋值错误的参数的标识、赋值错误的参数的位置信息以及赋值错误对应的问题描述信息中至少一项。
在赋值错误提示的一种可能实现方式中,终端在编辑软件的界面中存在赋值错误的参数的周围显示错误标记。错误标记的形式例如是图像,比如说是线条、符号或者图标,从而直观地体现出参数的赋值存在错误。例如,终端在赋值错误的参数下方显示下划线,下划线的像素长度与参数的像素长度相同,下划线的颜色例如与编辑软件的界面的背景颜色以及编辑软件的界面中YAML文本的颜色不同。例如,终端在赋值错误的参数下方显示红色下划线。
在赋值错误提示的另一种可能实现方式中,终端在编辑软件的界面中对赋值错误的参数的值进行突出显示。例如,终端以错误的参数值以明亮的颜色(如黄色、橙色)进行显示,或者通过对错误的参数值进行加粗或者加下划线等方式进行标识,或者将错误参数的值的文字颜色改为与其他参数不同的颜色。
作为一个赋值错误提示的具体示例,请参考附图3A,参数314是一个赋值错误的参数的具体示例,终端对terminationGracePeriodSeconds:0中的0进行突出显示。通过在赋值错误的参数的值进行突出显示,能够准确地提示哪个参数的值存在错误,同时几乎不占用编辑软件的界面的空间,避免错误提示信息对用户视野的影响,因此错误提示的效果较好。
在赋值错误提示的另一种可能实现方式中,终端在编辑软件的界面中显示子界面414,子界面414是独立于编辑软件的界面300显示的界面,子界面414例如是悬浮窗或者对话框。子界面414包括赋值错误提示信息,例如高危提示信息。
提示功能五、错误绑定提示
在提示错误绑定的一种可能实现方式中,服务器在确定绑定校验不通过(如在已创建Kubernetes对象列表中没有查找到针对第一Kubernetes对象绑定的第二Kubernetes对象的标识)的情况下,服务器向终端发送错误绑定提示信息,错误绑定提示信息用于提示错误绑定。终端接收来自服务器的错误绑定提示信息。终端显示错误绑定提示信息。错误绑定提示信息包括绑定错误的参数的标识、绑定错误的参数的位置信息以及绑定错误对应的问题描述信息中至少一项。
作为一个提示错误绑定的具体示例,请参考附图3A,参数315-a是一个错误绑定的参数的具体示例,终端在name:wwwError中wwwError的下方显示下划线,下划线的像素长度与wwwError的像素长度相同,下划线用于提示wwwError存在绑定错误,如已创建的所有容器中并不存在名称为wwwError的容器。通过在绑定错误的参数的值的下方显示线条,能够准确地提示哪个参数的值绑定错误,同时几乎不占用编辑软件的界面的空间,避免错误提示信息对用户视野的影响,因此错误提示的效果较好。
作为另一个提示错误绑定的具体示例,请参考附图3C,参数315-b是一个错误绑定的参数的具体示例,终端在namespace:defaultNull中defaultNull的下方显示下划线,下划线的像素长度与defaultNull的像素长度相同,下划线用于提示defaultNull存在绑定错误,如已创建的所有命名空间中并不存在名称为defaultNull的命名空间。通过在绑定错误的参数的值的下方显示线条,能够准确地提示哪个参数的值绑定错误,同时几乎不占用编辑软件的界面的空间,避免错误提示信息对用户视野的影响,因此错误提示的效果较好。
在错误绑定提示的另一种可能实现方式中,终端在编辑软件的界面中显示子界面415,子界面415是独立于编辑软件的界面300显示的界面,子界面415例如是悬浮窗或者对话框。子界面415包括错误绑定提示信息。
提示功能六、错误数据来源提示
在提示错误数据来源的一种可能实现方式中,服务器在确定数据来源校验不通过的情况下,服务器向终端发送错误数据来源提示信息,错误数据来源提示信息用于提示数据来源错误。终端接收来自服务器的错误数据来源提示信息。终端显示错误数据来源提示信息。错误数据来源提示信息包括数据来源错误的参数的标识、数据来源错误的参数的位置信息以及数据来源错误对应的问题描述信息中至少一项。
作为一个提示错误数据来源的具体示例,请参考附图3C,参数316是一个错误数据来源的参数的具体示例,终端在storageClassName:secret中secret的下方显示下划线,下划线的像素长度与secret的像素长度相同,通过下划线提示secret存在数据来源错误。
在提示错误数据来源的另一种可能实现方式中,终端在编辑软件的界面中显示子界面416,子界面416是独立于编辑软件的界面300显示的界面。子界面416包括错误数据来源提示信息。
提示功能七、资源分配不可行提示
在提示资源分配不可行的一种可能实现方式中,服务器在确定资源分配校验不通过的情况下,服务器向终端发送资源分配错误提示信息,资源分配错误提示信息用于提示资源的配置量过小或过大。终端接收来自服务器的资源分配错误提示信息。终端显示资源分配错误提示信息。资源分配错误提示信息包括存在错误的资源的配置量参数的标识、存在错误的资源的配置量、存在错误的资源的配置量参数的位置信息以及资源分配错误对应的问题描述信息中至少一项。
作为一个提示资源分配不可行的具体示例,请参考附图3A,参数317是一个资源的配置量参数过大的具体示例,终端在storage:100G中100G的下方显示下划线427,下划线427的像素长度与100G的像素长度相同,下划线427用于提示100G过大,无法满足分配100G大小的存储空间的需求。
在提示资源分配不可行的另一种可能实现方式中,请参考附图3A,终端在编辑软件的界面中显示子界面417-a,子界面417-a是独立于编辑软件的界面300显示的界面,子界面417-a例如是悬浮窗。子界面417-a包括资源分配错误提示信息。或者,请参考附图3C,终端在编辑软件的界面中显示子界面417-b,子界面417-b是独立于编辑软件的界面300显示的界面,子界面417-b例如是悬浮窗。子界面417-b包括资源分配错误提示信息,例如“当前资源设置超限,请重新设置”。
提示功能八、调度策略不可行提示
在提示调度策略不可行的一种可能实现方式中,服务器在确定调度策略校验不通过的情况下,服务器向终端发送调度策略错误提示信息,调度策略错误提示信息用于提示调度策略存在错误。终端接收来自服务器的调度策略错误提示信息。终端显示调度策略错误提示信息。调度策略错误提示信息包括调度策略中的Kubernetes对象的标识、调度策略中节点设备的标识以及调度策略不可行对应的问题描述信息中至少一项。
作为一个提示调度策略不可行的具体示例,请参考附图3C,参数318是一个不可行的调度策略的具体示例,终端在nodeName:master01.myhci.com中master01.myhci.com的下方显示下划线418,下划线418的像素长度与master01.myhci.com的像素长度相同,下划线418用于提示master01.myhci.com与pod应该调度到的节点不同。
在提示调度策略不可行的另一种可能实现方式中,请参考附图3C,终端在编辑软件的界面中显示子界面428,子界面428是独立于编辑软件的界面300显示的界面,子界面428例如是悬浮窗。子界面428包括调度策略错误提示信息,调度策略错误提示信息例如“当前调度策略有冲突,请重新设置”。
错误修复
在本申请的一种可能实现方式中,实现了针对Kubernetes对象的参数配置错误进行修复,下面对错误修复的可能实现方式举例说明。
作为错误修复的一种可能实现方式,终端在编辑软件的界面中显示修复提示信息,以便用户参考修复提示信息修复参数配置出现的错误。修复提示信息用于提示用户对参数配置错误的修复方式。
例如,修复提示信息包括校验出错误的参数、错误参数的位置信息、问题描述信息以及预期参数中至少一项。比如说,预期参数为服务器所访问的库中保存的正确参数。作为一种获取预期参数的实现方式,服务器基于参数的标识查找库中保存的参数的标识与预期参数之间的对应关系,获得与参数的标识对应的预期参数,向终端发送预期参数。此外,在存在多个预期参数的情况下,服务器可以向终端发送预期参数列表,预期参数列表包括可选的多个预期参数,以便用户在预期参数列表中选择。
在显示修复提示信息的一种可能实现中,终端在编辑软件的界面中显示独立于编辑软件的界面的子界面,子界面包括修复提示信息。子界面例如是悬浮窗、对话框或者其他窗口。通过采用悬浮窗等子界面的方式显示修复提示信息,从而避免修复提示信息占用编辑软件的界面的空间,几乎不影响编辑软件的界面的使用。
针对显示修复提示信息的时机,在一种可能的实现方式中,终端监听键盘的输入事件。响应于检测到键盘中与错误修复服务绑定的快捷键触发的事件,终端显示修复提示信息。以错误修复服务绑定的快捷键为Alt键和Enter键为例,用户同时按下Alt键和Enter键,终端响应于检测到针对Alt键和Enter键的按压操作,基于Alt键和Enter键与错误修复服务之间的对应关系,确定执行错误修复服务,则在编辑软件的界面中显示一个悬浮窗,悬浮窗包括修复提示信息。在另一种可能的实现方式中,终端监听光标位置或者触摸点位置。终端响应于光标位置或者触摸点位置落入存在错误的参数所处的界面区域,显示修复提示信息。
作为错误修复的一种可能实现方式,服务器响应于修复指令,将YAML文件中的错误参数进行更新。例如,将错误参数更新为默认参数或者其他可供参考的正确参数。
作为一种触发修复指令的实现方式,修复指令通过对错误修复服务对应的键盘按键的按压操作触发。例如,服务器建立错误修复服务与一个或多个键盘按键的对应关系,该一个或多个键盘按键可以称为触发错误修复服务的快捷键,例如,错误修复服务对应的键盘按键为Alt键和Enter键,用户同时按下Alt键和Enter键,服务器响应于检测到针对Alt键和Enter键的按压操作,将错误参数更新为正确参数。
作为另一种触发修复指令的实现方式,修复指令通过对编辑软件的界面中显示的控件的操作触发。例如,终端在编辑软件的界面中显示修复按钮,用户点击修复按钮,服务器响应于针对修复按钮的点击操作,将错误参数更新为正确参数。
在错误提示的一种可能实现中,终端在接收到来自服务器的错误提示信息后,继续响应用户的操作。在一种可能的实现中,终端在接收到来自服务器的错误提示信息后,保持编辑软件的界面中用于触发提交配置文件的控件为有效状态,从而不阻塞用户提交配置文件,使得编辑配置文件的流程可以继续正常执行。通过这种方式,实现了错误提示的弱处理。
在错误提示的另一种可能实现中,终端在接收到来自服务器的错误提示信息后,拒绝响应用户的操作。在一种可能的实现中,终端在接收到来自服务器的错误提示信息后,将编辑软件的界面中用于触发提交YAML文件的控件中设置为失效状态,从而阻止用户进行下一步操作,直到参数配置错误得以解决,避免用户提交包含错误的配置文件造成的影响。
举例说明,对于附图3A所示的编辑软件的界面来说,编辑软件的界面包括输入框310以及确定按钮430,输入框310用于输入配置文件,确定按钮430用于触发将配置文件提交Kubernetes集群。终端在接收到来自服务器的错误提示信息后,可以将确定按钮430的状态从有效状态设置为无效状态。
下面结合几种具体的错误修复功能进行说明。
修复功能一、错误拼写修复
针对参数标识拼写错误的问题,本申请提供了一种错误拼写修复的功能,有助于将拼写错误的参数标识修复为拼写正确的参数标识。为了区分描述修复前后的不同标识,用“第一参数标识”描述拼写修复前的参数标识(例如用户通过编辑软件的界面输入的参数标识),用“第二参数标识”描述拼写修复后的参数标识。
在错误拼写修复的一种可能的实现方式中,服务器基于第一参数标识采用模糊查询的方式在参数标识库中查询,获得参数标识库中与第一参数标识满足匹配条件的第二参数标识。服务器向终端发送第二参数标识。终端接收第二参数标识,显示第二参数标识,从而提示用户参考第二参数标识修复拼写错误。
模糊查询通常是指基于一些特殊符号、操作符构建正则表达式,以该正则表达式表示匹配条件的查询方式。模糊查询的方式允许查找结果(例如第二参数标识)与查找时基于的索引(例如第一参数标识)不完全相同,比如查找结果与查找时基于的索引满足正则表达式。通过使用模糊查询的方式,在用户输入的参数的标识存在错误的情况下,也一定概率上能查找到对应的拼写正确的参数标识。
在错误拼写修复的一种可能实现方式中,终端在编辑软件的界面中显示第一子界面,第一子界面包括第二参数标识。作为错误拼写修复的示例性场景,存在拼写错误的参数标识例如是kinds,响应于光标的位置移动到编辑软件的界面中kinds所处的界面区域,终端在编辑软件的界面中显示一个悬浮窗,悬浮窗包括文本“当前输入的kinds存在拼写错误,建议修复为kind”。kinds是第一参数标识的具体示例,kind是第二参数标识的具体示例。
在错误拼写修复的一种可能的实现方式中,终端响应于修复指令,将拼写错误的参数的标识从第一参数标识修改为第二参数标识。例如,存在拼写错误的参数标识是kinds,终端响应于针对kinds的修复指令,将kinds修改为kind。
修复功能二、修复参数值类型错误
针对参数值类型错误的问题,本申请提供了一种参数值类型修复的功能,有助于将错误的参数值类型修复为正确的参数值类型。为了区分描述修复前后的参数值类型,用“第一类型”描述修复前的参数值类型,用“第二类型”描述修复后的参数值类型。
在修复参数值类型错误的一种可能的实现方式中,服务器基于参数的标识查找参数的标识与参数值类型之间的对应关系,得到与参数的标识对应的第二类型。服务器向终端发送第二类型。终端接收第二类型,显示第二类型,从而提示用户参考第二类型修复参数值类型错误。
在修复参数值类型错误的一种可能的实现方式中,服务器基于参数的标识查找参数的标识与默认参数值之间的对应关系,得到与参数的标识对应的默认参数值,该默认参数值的类型为第二类型。服务器向终端发送默认参数值。终端接收默认参数值,显示默认参数值,从而提示用户参考默认参数值修复参数值类型错误。
在修复参数值类型错误的一种可能实现方式中,终端在编辑软件的界面中显示子界面,子界面包括第二类型或默认参数值中至少一项。
在修复参数值类型错误的另一种可能的实现方式中,服务器响应于修复指令,将类型错误的参数的值从第一类型的参数值修改为第二类型的参数值。
作为修复参数值类型错误的一个具体示例,请参考附图3D,存在参数值类型错误的参数例如是参数313,即标识为replicas的参数。在针对参数313进行修复的过程中,服务器以replicas为索引,查找参数的标识与参数值类型之间的对应关系,得到replicas对应的参数值类型为整数。此外,服务器以replicas为索引,查找参数的标识与默认参数值之间的对应关系,得到replicas对应的默认参数值为0。服务器基于整数、参数313的值类型以及参数313的位置,获取修复提示信息4231,修复提示信息4231的内容包括预期类型为整数,当前类型为字符串。字符串是第一类型的具体示例,整数是第二类型的具体示例,YAML(8)表示校验出值类型的错误的参数313位于YAML文件中第8行,YAML(8)是错误参数的位置信息的具体示例。服务器向终端发送修复提示信息4231以及replicas对应的默认参数值。终端接收到修复提示信息4231以及replicas对应的默认参数值后,响应于光标453的位置落入参数313所处的界面区域,终端显示悬浮窗423,悬浮窗423包括修复提示信息4231以及用于供用户查看问题的控件4232以及用于触发参数值更新的控件4233。响应于对控件4232触发的操作,终端显示参数值类型错误这一问题描述信息。响应于对控件4233触发的操作,服务器将replicas对应的参数值从errorRS更新为默认参数值0。
修复功能三、修复层级错误
针对参数层级错误的问题,本申请提供了一种参数层级错误修复的功能,有助于将层级错误的参数修复为层级正确的参数。为了区分描述修复前后的参数的层级,用“第一层级”描述修复前的参数的层级,用“第二层级”描述修复后的参数的层级。
在修复层级错误的一种可能的实现方式中,服务器基于参数的标识查找参数的标识与参数层级之间的对应关系,得到与参数的标识对应的第二层级。服务器向终端发送第二层级。终端接收第二层级,显示第二层级,从而提示用户参考第二层级修复参数层级错误。
在修复层级错误的一种可能的实现方式中,服务器响应于修复指令,将层级错误的参数的层级从第一层级更新为第二层级。例如,服务器基于第二层级,对层级错误的参数的缩进量进行更新。例如,如果第二层级为n,则服务器将参数的缩进量更新为2*n个缩进。
作为一个修复层级错误的具体示例,请参考附图3A,参数312是一个层级错误的参数的具体示例,用户输入的参数name与参数metadata的缩进量相同,而库(参数的标识与参数的层级之间的对应关系)中参数name是参数metadata的子参数,而服务器在参数name之前添加2个缩进,从而修复参数name与参数metadata的层级关系。
修复功能四、错误赋值修复
针对参数赋值错误的问题,本申请提供了一种错误赋值修复的功能,有助于将错误的参数值修复为正确的参数值。为了区分描述修复前后的参数值,用“第一参数值”描述修复前的参数值,用“第二参数值”描述修复后的参数值。
在修复错误赋值的一种可能的实现方式中,服务器基于参数的标识查找参数的标识与参数的阈值范围之间的对应关系,得到与参数的标识对应的参数的阈值范围。服务器向终端发送参数的阈值范围。终端接收参数的阈值范围,显示参数的阈值范围,从而提示用户参考参数的阈值范围修复参数赋值错误。
在修复错误赋值的另一种可能的实现方式中,服务器响应于修复指令,将层级错误的参数的值从第一参数值修改为阈值范围内的最大值、阈值范围内的最小值或者阈值范围内的中值。
在修复错误赋值的另一种可能的实现方式中,服务器基于参数的标识查找参数的标识与默认参数值之间的对应关系,得到与参数的标识对应的默认参数值。服务器向终端发送默认参数值。终端接收默认参数值,显示默认参数值,从而提示用户参考默认参数值修复参数赋值错误。
在修复错误赋值的另一种可能的实现方式中,服务器响应于修复指令,将层级错误的参数的值从第一参数值修改为默认参数值。
在修复错误赋值的另一种可能的实现方式中,服务器基于参数的标识查找参数的标识与参数的选项集合之间的对应关系,得到与参数的标识对应的选项集合。服务器向终端发送选项集合。终端接收选项集合,显示选项集合,从而提示用户参考选项集合修复参数赋值错误。例如,终端显示一个列表,列表中的每一个条目为选项集合中的一个选项。进一步地,用户可以对选项集合中的目标选项触发确认操作,服务器响应于对目标选项的确认能操作,将第一参数值修改为目标选项。
在修复错误赋值的另一种可能的实现方式中,服务器响应于修复指令,将层级错误的参数的值从第一参数值修改为选项集合中排在第一位的选项。
修复功能五、修复错误绑定
针对错误绑定的问题,本申请提供了一种错误绑定修复的功能,有助于降低将资源与并不存在的资源配置绑定关系引起配置失败的风险。下面以针对第一资源配置绑定关系为例描述,并用“第二资源”描述为第一资源原始配置的资源,用“第三资源”描述服务器提示的可以为第一资源绑定的资源。
在修复错误绑定的一种可能的实现方式中,服务器基于配置文件获取为第一资源绑定的第二资源的标识,服务器基于第二资源的标识查找已创建资源列表,已创建资源列表包括已创建的每个资源的标识。服务器向终端发送已创建资源列表,终端接收已创建资源列表,显示已创建资源列表,从而提示用户从已创建资源列表中选择资源,将选择的资源与第一资源进行绑定。
修复功能六、修复资源分配错误
针对资源分配错误的问题,本申请提供了一种资源分配修复的功能,有助于将资源的配置量从过大或者过小的值调整为合适的值。为了区分描述修复前后的资源的配置量,用“第一资源量”描述修复前的资源的配置量。用“第二资源量”描述修复后的资源的配置量。
在修复资源分配错误的一种可能的实现方式中,服务器基于Kubernetes对象的标识查找资源的标识与资源量阈值之间的对应关系,得到与资源的标识对应的资源量阈值。服务器向终端发送资源量阈值。终端接收资源量阈值,显示资源量阈值。通过显示资源量阈值,用户可以参考资源量阈值输入资源的配置量,因此降低了配置资源量的难度,便于用户在资源量阈值内的范围配置资源,也降低了由于资源配置量超过资源量阈值导致资源分配错误的风险。
在修复资源分配错误的另一种可能的实现方式中,服务器响应于修复指令,基于资源量阈值,将资源的配置量从第一资源量修改为第二资源量。第二资源量处于资源量阈值对应的范围内。例如,第二资源量为资源量阈值对应的范围内的最大值、资源量阈值范围内对应的最小值或者资源量阈值范围内的中值。通过这种方式,支持自动修复资源的配置量,不仅避免修复后的资源配置量出现超限错误,也降低操作复杂度,更加快捷。
在修复资源分配错误的另一种可能的实现方式中,服务器基于节点设备的运行状态,获得节点设备可用的最大资源量,服务器响应于修复指令,基于节点设备可用的最大资源量,将资源的配置量从第一资源量修改为第二资源量。第二资源量小于或等于节点设备可用的最大资源量。通过这种方式,支持自动修复资源的配置量,不仅避免修复后的资源配置量出现超限错误,同时使得资源的配置量与节点设备的运行状态相匹配,更加准确,也降低操作复杂度,更加快捷。
修复功能七、修复调度策略错误
在修复调度策略错误的一种可能的实现方式中,服务器基于Kubernetes对象的参数,确定可调度的目标节点设备的标识。服务器向终端发送目标节点设备的标识。终端接收目标节点设备的标识,显示目标节点设备的标识,从而提示用户将Kubernetes对象配置为调度至目标节点设备。
针对确定目标节点设备的方式,例如,服务器基于Kubernetes对象的节点选择参数包括的节点标识,从服务器包括的节点设备中,选择节点标识与节点选择参数包括的节点标识匹配的节点设备,作为目标节点设备;又如,服务器基于Kubernetes对象的资源量阈值,从服务器包括的节点设备中,选择可用的资源量满足Kubernetes对象的资源量阈值的节点设备,作为目标节点设备。又如,服务器基于Kubernetes对象的节点选择参数包括的配置条件,从服务器包括的节点设备中,选择满足配置条件的节点设备,作为目标节点设备。又如,服务器基于Kubernetes对象的亲和性参数,从服务器包括的节点设备中,选择与亲和性参数匹配的节点设备,作为目标节点设备。
通过以上提供的修复调度策略的方式,支持自动调整Kubernetes对象调度的节点设备,从而降低调度策略冲突引起调度失败的风险,也降低操作复杂度,更加快捷。
以上各个实施例中查找对应关系的步骤可以由服务器执行,本实施例对查找对应关系的步骤的执行主体不做限定。下面结合附图1所示系统架构,以基于参数的标识查找参数的阈值为例,对查找步骤的执行主体举例说明。
在一种可能的实现中,对应关系保存在前端服务器140-a的存储器中。前端服务器140-a的网络接口接收到来自终端的资源的标识,将发送给前端服务器140-a的处理器。前端服务器140-a的处理器基于接收到的参数的标识,查找存储器保存的对应关系,得到参数的阈值。
在另一种可能的实现中,对应关系保存在后端服务器140-b的存储器中。前端服务器140-a的处理器接收到来自终端的参数的标识后,前端服务器140-a的处理器基于接收到的参数的标识,生成读取请求,读取请求指示获取与参数的标识对应的阈值,前端服务器140-a的处理器指示前端服务器140-a的网络接口向后端服务器140-b发送读取请求。后端服务器140-b接收来自前端服务器140-a的读取请求,后端服务器140-b的处理器基于接收到的参数的标识,查找后端服务器140-b的存储器保存的对应关系,得到与参数的标识对应的阈值。
在再一种可能的实现中,对应关系保存在与服务器通信连接的存储系统180中。后端服务器140-b的处理器基于接收到的参数的标识,生成读取请求,读取请求指示获取与参数的标识对应的阈值,后端服务器140-b的处理器指示后端服务器140-b的网络接口向存储系统180发送读取请求。存储系统180从读取请求获得参数的标识,基于参数的标识查找对应关系,得到与参数的标识对应的阈值,将阈值发送给后端服务器140-b。
根据需求,以上列举的查找步骤的查找目标也可以从阈值替换为类型、层级、绑定关系或配置量阈值等。
下面结合一个具体示例,对上述实施例举例说明。
下述实例提供了一种基于Angular的软件系统架构。为了便于理解,下面先对Angular中与下述实例有关的一些术语概念进行解释说明。
Angular是一种基于TypeScript的开发平台,用于构建Web应用程序。Angular采用了模块-视图-控制(model-view-controller,MVC)风格的体系结构,以帮助开发人员轻松地管理和组织应用程序的逻辑层。
Angular架构的组件包括而不限于浏览器(browser)、模板(template)、组件(component)、模块(module)、双向数据绑定(data binding)和依赖注入(dependencyinjection)。
浏览器是指用户使用来访问网站的Web浏览器,浏览器用于显示应用程序的界面,从而向用户呈现应用程序的视图(view)。模板是指Web应用程序中用于表示视图的HTML文件。模板用于生成Web应用程序的界面。组件相当于控制器,用于管理和组织应用程序的逻辑。module是一种组件的容器,用于组合和组织应用程序的各个部分。双向数据绑定(databinding)是一种将模型(model)和视图(view)进行自动关联的技术,可以使模型中的数据自动同步到视图中,并能够自动响应视图中用户的输入操作。这样能够使代码编写更加简单和高效。依赖注入用于将组件与模块进行关联。
图4为本实施例提供的基于Angular的软件系统架构图。图4所示架构700包括模板710、组件720、模块730以及模型740。
模板710用于通过Angular模板定义编辑器的视图,以便在浏览器端显示编辑器的视图。用户101可以在模板710中执行创建操作、更新操作以及删除操作等操作。模板710包括指令712。指令712用于监听用户101触发的创建操作714、更新操作716以及删除操作718。模板710与组件720通过双向数据绑定进行数据双向流。
组件720用于通过Angular组件定义属性和方法组成的API来与模板710进行交互。组件720通过绑定事件进行参数更新的监控。在一种可能的实现中,组件720通过绑定事件实时获得用户输入的参数,以便对参数进行校验。组件720与模板710通过双向数据绑定进行数据双向流。在一种可能的实现中,当用户在界面上输入参数后,参数通过界面经过模板710输入至组件720,再经过组件720输入至模块730。模块730对输入的参数进行计算后,如果确定发生错误,则从提示信息库741中获得错误提示信息,将错误提示信息返回给组件720,组件720将错误提示信息返回给模板710,模板710显示错误提示信息。
组件720包括事件接口722、自动修复接口724、计算接口726以及异步接口728。
事件接口722也可以称为<<EventInterface>>keymap(含义是用于监听键盘触发的事件的接口)。事件接口722用于监听浏览器端连接的输入设备(如键盘或者鼠标)触发的事件。
异步接口728也可以称为<<SyncInterface>syncApi,异步接口728用于异步获取来自后端服务器的数据。
模块730通过Angular服务封装一系列的特定功能对外提供服务。模块730的类型包括事件模块、自动修复模块、智能计算模块以及异步数据获取模块。
事件模块具体包括键盘输入处理服务731以及鼠标悬停处理服务732。键盘输入处理服务731也可以称为<<Event Service>>onChange(含义是用于处理变化的事件模块。键盘输入处理服务731用于处理通过键盘输入的参数的key和参数的value。例如,当用户对键盘执行输入操作时,触发on change事件,键盘输入处理服务731可以捕获on change事件,得到参数的key和参数的value。鼠标悬停处理服务732也可以称为<<EventService>>onMouseOver(含义是用于处理鼠标悬停事件的服务),鼠标悬停处理服务732用于在鼠标指针移动时经过界面中某个参数或者鼠标指针选中某个参数时对该参数进行处理。
自动修复模块包括错误修复服务733以及类型修复服务735。错误修复服务733也可以称为<<AutoService>>error Fix,错误修复服务733用于对拼写错误进行自动修复。类型修复服务735也可以称为<<AutoService>>type Fix,用于对类型错误进行自动修复。
智能计算模块包括调度计算模块736以及资源分配计算模块737。调度计算模块736也可以称为<<ComputeService>>schedulerFn,用于提供基于调度算法的计算服务。
资源分配计算模块737也可以称为<<ComputeService>>resourceFn,用于提供基于资源分配算法的计算服务。例如,资源分配计算模块737用于计算为节点分配的资源是否超过阈值。
异步数据获取模块738也可以称为<<Syncservice>>apiServer。异步数据获取模块738用于处理对异步接口728的调用。例如,异步数据获取模块738响应于对异步接口728的调用,基于向异步接口728输入的数据向后端服务器发送请求,以及接收来自后端服务器的响应。
在一种可能的实现中,事件接口722获得的数据输入至键盘输入处理服务731或者鼠标悬停处理服务732。键盘输入处理服务731以及鼠标悬停处理服务732处理得到的结果注入至事件接口722。自动修复接口724获得的数据输入至错误修复服务733或者类型修复服务735。错误修复服务733以及类型修复服务735处理得到的结果注入至自动修复接口724。计算接口726获得的数据输入至调度计算模块736或者资源分配计算模块737。调度计算模块736以及资源分配计算模块737处理得到的数据会注入至计算接口726。
模型740用于为模块730提供计算时所基于的数据源。模型740通过Angular模块引入code mirror编辑器插件,通过依赖注入实现编辑器插件的功能实现。模型740包括提示信息(Tip)库741、关键词(Keyword)库742、类型(Type)库743、选项(Option)744以及结构体(Struct)库745。
提示信息库741也可以称为Tip,提示信息库741用于保存错误提示信息。例如,提示信息库741用于保存界面中提示错误的悬浮窗中的内容。举例来说,提示信息库741包括附图3C所示界面中悬浮窗428中“当前调度策略有冲突,请重新设置”、附图3C所示界面中悬浮窗417-b中“当前资源设置超限,请重新设置”、附图3D中悬浮窗423中“预期类型为整数,当前类型为字符串”。
关键词库742用于保存参数的键。例如,关键词库742保存有每个Kubernetes对象对象的每个参数的键。
类型库743用于保存参数值的类型。例如,类型库743保存有每个Kubernetes对象对象的每个参数的值类型以及每个参数的值类型与每个参数的键之间的对应关系。
选项库744用于保存参数的选项。例如,选项库744保存有每个Kubernetes对象对象的每个参数的选项与每个参数的键之间的对应关系。
结构体库745用于保存参数的层级。例如,结构体库745保存有每个Kubernetes对象对象的每个参数的层级。
本申请的一种可能实现方式提供的软件逻辑单元包含五部分:实时参数错误校验模块、异步接口校验模块、智能计算预警模块、快速修复模块以及资源管理中心。
针对这五种软件逻辑单元与附图4所示系统架构700的关系,在一种可能的实现中,实时参数错误校验模块包括附图4中事件接口722、键盘输入服务731以及鼠标悬停服务732。智能计算预警模块包括附图4中计算接口726、调度计算模块736以及资源分配计算模块737实现。快速修复模块包括附图4中自动修复接口724、错误修复服务733以及类型修复服务735实现。异步接口校验模块包括附图4中接口服务738实现。资源管理中心包括附图4中提示信息库741、关键词库742、类型库743、选项库744以及结构体库745。
实时参数错误校验模块用于处理参数的同步校验。实时参数错误校验模块主要包括错误拼写校验、错误层级校验、错误类型校验、进行高危提示、进行错误绑定提示、错误数据来源校验以及错误资源分配校验。
附图5示出了一种基于实时参数错误校验模块执行的流程,该流程包括如下步骤。
S510,网页端编辑器输入YAML文件参数。
S520,code mirror插件监听参数更新。例如,code mirror插件监听通过创建操作714增加的参数以及通过更新操作716修改的参数。code mirror插件将更新的参数处理为key:value的格式,将key:value格式的参数输入至实时参数错误校验模块。
S530,实时参数错误校验模块接收到来自code mirror插件的参数后,实时参数错误校验模块对参数进行拼写校验。在拼写校验通过的情况下,实时参数错误校验模块执行S540。在拼写校验不通过的情况下,实时参数错误校验模块执行S532。
S532,实时参数错误校验模块提示拼写错误。例如,实时参数错误校验模块向编辑器发送指示拼写错误的错误提示信息。
在一种可能的实现中,实时参数错误校验模块使用接收到的参数的key与资源管理中心保存的关键词库742中的key进行匹配。如果在关键词库742中没有查找到接收到的参数的key,则实时参数错误校验模块确定参数拼写校验不通过。如果在关键词库742中查找到接收到的参数的key,则实时参数错误校验模块确定参数拼写校验通过。
S540,实时参数错误校验模块对参数的层级进行校验。
在层级校验通过的情况下,实时参数错误校验模块执行S550。在层级校验不通过的情况下,实时参数错误校验模块执行S542。
在一种可能的实现中,实时参数错误校验模块使用接收到的参数的key查找结构体库745中参数的key对应的参数的层级。实时参数错误校验模块对接收到的参数与查找到的参数的层级进行匹配。如果接收到的参数的层级与查找到的参数的层级不同,实时参数错误校验模块确定参数层级错误,层级校验不通过。
S542,实时参数错误校验模块提示层级错误。例如,实时参数错误校验模块输出指示层级错误的错误提示信息。
S550,实时参数错误校验模块校验值类型。在值类型校验通过的情况下,实时参数错误校验模块执行S560。在值类型校验不通过的情况下,实时参数错误校验模块执行S552。
在一种可能的实现中,实时参数错误校验模块使用接收到的参数的key查找类型库743中参数的key对应的参数的值类型。实时参数错误校验模块对接收到的参数与查找到的参数的值类型进行匹配。如果接收到的参数的值的类型与查找到的参数的值类型不同,实时参数错误校验模块确定参数值类型校验不通过。
S552,实时参数错误校验模块提示类型错误。
S560,实时参数错误校验模块校验值是否超过阈值。在校验通过的情况下,实时参数错误校验模块执行S570。在校验不通过的情况下,实时参数错误校验模块执行S562。
S562,实时参数错误校验模块提示高危赋值。例如,实时参数错误校验模块向编辑器发送指示高危赋值的错误提示信息。
S570,实时参数错误校验模块校验值错误绑定。在校验通过的情况下,实时参数错误校验模块执行S580。在校验不通过的情况下,实时参数错误校验模块执行S582。
S572,实时参数错误校验模块提示错误绑定。例如,实时参数错误校验模块向编辑器发送指示错误绑定的错误提示信息。
S580,实时参数错误校验模块校验资源分配。在校验通过的情况下,实时参数错误校验模块执行S590。在校验不通过的情况下,实时参数错误校验模块执行S582。
S582,实时参数错误校验模块提示错误资源分配。例如,实时参数错误校验模块向编辑器发送指示错误资源分配的错误提示信息。
在一种可能的实现中,在执行上述S532、S542、S552、S562、S572以及S582的过程中,实时参数错误校验模块将错误提示信息输出给用户,并仍然允许用户继续提交配置文件,使得编辑配置文件的流程可以继续正常执行。例如,在执行上述S532、S542、S552、S562、S572以及S582的过程中,实时参数错误校验模块将编辑软件的界面中的确定按钮的状态设置为保持有效状态,确定按钮仍然有效,如果用户对确定按钮进行点击操作,实时参数错误校验模块会响应对确定按钮的点击操作,从而不阻塞用户提交配置文件,实现错误提示为弱处理。
在另一种可能的实现中,执行上述S532以及S542的过程中,实时参数错误校验模块将编辑软件的界面中的确定按钮的状态设置为禁用(disabled)状态,如果用户对确定按钮进行点击操作,实时参数错误校验模块不会响应对确定按钮的点击操作,从而禁止用户提交包含拼写错误或者层级错误的配置文件,实现错误提示的强处理。
异步接口校验模块用于基于Ajax处理参数的异步请求。前端服务器获得数据后异步的校验参数是否正确。附图6示出了一种基于异步接口校验模块执行的流程,该流程包括如下步骤。
S610,网页端编辑器输入YAML文件参数。
S620,code mirror插件监听参数更新。例如,code mirror插件监听通过创建操作714增加的参数以及通过更新操作716修改的参数。code mirror插件将更新的参数处理为key:value的格式,将key:value格式的参数输入至异步接口校验模块。
S630,异步接口校验模块接收到来自code mirror插件的参数后,异步接口校验模块对参数进行拼写校验。在拼写校验通过的情况下,异步接口校验模块执行S640。在拼写校验不通过的情况下,异步接口校验模块执行S632。
S632,异步接口校验模块提示拼写错误。例如,异步接口校验模块向编辑器发送指示拼写错误的错误提示信息。
在一种可能的实现中,异步接口校验模块使用接收到的参数的key与资源管理中心保存的关键词库742中的key进行匹配。如果在关键词库742中没有查找到接收到的参数的key,则异步接口校验模块确定参数拼写校验不通过。如果在关键词库742中查找到接收到的参数的key,则异步接口校验模块确定参数拼写校验通过。
S640,异步接口校验模块从资源管理中心获得参数的选项。
在一种可能的实现中,异步接口校验模块基于接收到的参数的key生成数据获取请求,数据获取请求包括接收到的参数的key,数据获取请求指示获取参数的选项。异步接口校验模块通过与后端服务器通信的接口,向后端服务器发送数据获取请求。后端服务器响应于数据获取请求,使用参数的key查找选项库744中参数的key对应的参数的选项,获得参数的选项,后端服务器向前端服务器发送参数的选项。异步接口校验模块接收参数的选项。
在另一种可能的实现中,异步接口校验模块使用接收到的参数的key查找资源管理中心中保存的选项库744中参数的key对应的参数的选项。
S650,异步接口校验模块使用参数的值和选项进行匹配。如果参数的值和选项不匹配,异步接口校验模块确定参数值校验不通过,异步接口校验模块执行S652。如果参数的值和选项匹配,异步接口校验模块确定参数值校验通过。
S652,异步接口校验模块提示错误赋值。例如,异步接口校验模块输出指示错误赋值的提示信息。
智能计算预警模块用于针对特定参数进行阈值告警及高危操作提示。例如,智能计算预警模块在检测到针对资源的删除操作时进行告警、在Kubernetes对象配置的资源量超过资源量最大值或者在Kubernetes对象配置的资源量小于资源量最小值时进行告警、在确定存在资源调度失败风险时进行预警。以调度失败预警为例,请参考附图7,附图7是本实施例提供的一种基于智能计算预警模块执行的流程图,该流程包括如下步骤。
S810,网页端编辑器输入YAML文件参数。
S820,code mirror插件监听参数更新。例如,code mirror插件监听通过创建操作714增加的参数以及通过更新操作716修改的参数。code mirror插件将更新的参数处理为key:value的格式,将key:value格式的参数输入至智能计算预警模块。
S830,智能计算预警模块接收到来自code mirror插件的参数后,实时参数错误校验模块对参数进行拼写校验。在拼写校验通过的情况下,实时参数错误校验模块执行S840。在拼写校验不通过的情况下,实时参数错误校验模块执行S832。
S840,智能计算预警模块进行资源调度校验。如果资源调度校验不通过,智能计算预警模块执行S842。
S842,智能计算预警模块进行错误调度提示。
快速修复模块用于针对错误进行快速修复。快速修复模块主要包括对实时参数错误校验模块校验出的错误进行修复以及对异步接口校验模块校验出的错误进行修复等。以实时参数错误校验快速修复为例,快速修复模块执行的具体流程如附图8所示。
S930,在实时参数错误校验模块对参数标识拼写校验不通过的情况下,快速修复模块提示拼写正确的参数的key。例如,快速修复模块基于输入的参数的key,在关键词库742中进行模糊查询,查找到与输入的参数的key满足模糊匹配条件的参数的key。查找到的参数的key一定概率是拼写正确的参数的key。快速修复模块输出查找到的参数的key,从而提示用拼写正确的参数的key。
S932,在检测到与拼写修复绑定的键盘快捷键被触发的情况下,快速修复模块基于模糊查询到的参数的key,对参数的key进行更新。以拼写修复绑定的键盘快捷键包括Alt键和Enter键为例,在检测到Alt键和Enter键均被按下的情况下,快速修复模块将参数的key更新为模糊查询到的参数的key。
S940,在实时参数错误校验模块对层级错误校验不通过的情况下,快速修复模块提示参数的正确层级。
例如,快速修复模块使用接收到的参数的key在结构体库745中参数的key对应的参数的层级。快速修复模块输出查找到的参数的层级,从而提示参数的正确层级。
S942,在检测到与层级修复绑定的键盘快捷键被触发的情况下,快速修复模块基于结构体库745中参数的key对应的参数的层级,对参数的层级进行更新。以层级修复绑定的键盘快捷键包括Alt键和Enter键为例,在检测到Alt键和Enter键均被按下的情况下,快速修复模块基于查找到的参数的层级,对参数的层级进行更新。
S950,在实时参数错误校验模块对类型错误校验不通过的情况下,快速修复模块提示参数的正确类型。例如,快速修复模块使用接收到的参数的key查找类型库743中参数的key对应的参数的值类型,输出查找到的参数的值类型,从而提示参数的正确值类型。
S952,在检测到与类型修复绑定的键盘快捷键被触发的情况下,快速修复模块基于参数的值类型,对参数的值类型进行更新。以类型修复绑定的键盘快捷键包括Alt键和Enter键为例,在检测到Alt键和Enter键均被按下的情况下,快速修复模块基于查找到的参数的值类型,对参数的值类型进行更新。
S960,在实时参数错误校验模块对参数值校验不通过的情况下,快速修复模块提示参数值阈值。
S962,在检测到与参数值修复绑定的键盘快捷键被触发的情况下,快速修复模块将参数值更新为位于参数值阈值范围内的默认参数值。
S970,快速修复模块提示正确绑定参数。
S972,在检测到与绑定修复绑定的键盘快捷键被触发的情况下,快速修复模块更新参数值。
S980,快速修复模块提示正确资源的配置量参数。
S982,在检测到与资源分配绑定的键盘快捷键被触发的情况下,快速修复模块使用查找的正确的资源的配置量参数对资源的配置量参数进行更新。
资源管理中心用于为实时参数错误校验模块、智能计算预警模块以及快速修复模块提供基础数据。
下面用以下简化的前端工程例子,描述本申请实施例。下述实例中的前端工程用于实现具有校验功能的YAML编辑器web应用程序。
示例性的,前端工程目录结构如下所示。
上述前端工程目录结构用于保存附图4所示架构中的组件720、模块730以及模型740中的文件。
components表示存放应用的组件,形式是一个路径包括src/app/components的文件夹。components包括YAML编辑软件(editor)。YAML编辑软件包括HTML文件、TS文件和SCSS文件。HTML文件editor.component.html用于保存YAML编辑软件的HTML模板。TS文件editor.component.ts用于保存编辑器组件的TypeScript代码。TS文件editor.component.ts为组件,TS文件editor.component.ts与HTML文件editor.component.html进行了双向数据绑定。SCSS文件editor.component.scss用于保存编辑器中DOM元素的放置位置和样式。
services用于存放应用程序中的服务,包括参数异常、同步参数异常、计算告警和自动修复等功能。每个文件都是一个服务的定义,其中包括了服务的代码和可能用到的依赖注入对象。services包括TS文件paramErr.service.ts、TS文件syncParamErr.service.ts、TS文件computeAlarm.service.ts以及TS文件autoFix.service.ts。
modules用于存放services执行操作时所需的资源。modules存放的资源例如为一些JSON文件。例如,modules包括JSON文件keyvalue.json、JSON文件keyform.json、JSON文件layer.json以及JSON文件binding.json。JSON文件key value.json用于配置YAML中键值对。JSON文件key form.json用于配置表单中键值对。JSON文件layer.json用于配置参数的层级。JSON文件binding.json用于配置参数的联动关系。这些JSON文件可以提供给运维人员或者开发人员,运维人员或者开发人员可以通过对JSON文件进行修改,添加新增的参数,实现对编辑器进行升级和维护。
下面结合一个具体示例举例说明。
步骤A,在app.modules.ts引入code mirror插件,在app.modules.ts引入codemirror插件是通过运行下述代码实现的。
上述代码是Angular中定义应用程序模块的方式,用于指示Angular如何组织和配置应用程序。NgModule是一个装饰器,用于指示Angular如何组织应用程序模块。import关键字用于从Angular核心/第三方模块或自定义模块中导入相应的模块。BrowserModule是Angular中的一个内置模块,它提供了运行在浏览器中的应用程序所需的一些内置指令和服务。code mirrorModule是一个第三方模块,它提供了code mirror编辑器的组件和服务,可以在Angular应用中方便地使用。@NgModule()是一个修饰符,它指定当前类是一个Angular模块,并提供一个元数据对象来指定相关的配置信息和选项。上述代码的作用是将BrowserModule和code mirrorModule模块导入到当前模块中,并在组件中使用它们的相关功能和服务。
步骤B,在Template中根据DOM元素构造出编辑器。构造编辑器是通过运行下述代码实现的。
以上代码的含义是使用ngx-code mirror组件来创建一个code mirror编辑器,并将code mirror编辑器添加到组件的模板中。<ngx-code mirror>是组件的HTML标签,用于在模板中声明使用ngx-code mirror组件。[options]是组件的一个输入属性,用于传递code mirror编辑器的选项和配置信息。[ngModel]是组件的一个输入属性,用于双向绑定编辑器的内容,即将编辑器中输入的文本数据绑定到组件中的editData变量中,并且也可以将editData中保存的数据绑定到编辑器中显示。[disabled]是组件的一个输入属性,用于指定是否禁用编辑器。[autoFocus]是组件的一个输入属性,用于指定编辑器是否自动获取焦点。(ngModelChange)是组件的一个输出属性,用于在编辑器的文本内容发生变化时触发相应事件。并且传递当前的编辑器文本内容$event参数到组件中相应handleChange方法中进行处理。其中options和editData的值被绑定到组件类中定义的属性,可以在组件类中进行处理和管理,从而实现编辑器的功能和应用。
步骤C,在Component中对Template中绑定的参数进行赋值绑定
以上代码定义了一个组件属性options,它是一个包含了一些code mirror编辑器的配置信息的对象,以上代码的具体含义如下。
mode表示编辑器使用的语言模式,本实施例将mode设置为YAML。
theme表示编辑器使用的主题,本实施例将theme设置为Isotope。Isotope是一个JavaScript库,用于创建过滤和排序的网格布局。如果将theme设置为Isotope,那么这个网站的网格布局将会使用Isotope库来实现。更具体地说,当theme设置为Isotope时,网站的布局将会根据所提供的数据进行过滤和排序,只显示符合特定条件的元素。这样可以提高用户体验,让用户更加轻松地浏览和搜索网站的内容。对于包含大量数据的网站,使用Isotope可以有效地优化性能。
lineNumbers表示是否添加行号,本实施例将lineNumbers设置为true。将lineNumbers设置为true的作用是在编辑器中显示代码行号。开启行号可以帮助用户更方便地定位配置文件中某一行参数,特别是在配置文件中存在多处错误时,行号可以提供快捷的定位方式。
styleActiveLine表示是否高亮当前行,本实施例将styleActiveLine设置为true。将styleActiveLine设置为true的作用是在YAML编辑器中高亮当前活动行。当在YAML编辑器中配置文件中移动光标或者选中一行代码时,将会以不同的颜色或者阴影等方式高亮当前活动行,方便用户查看和编辑参数。同时,开启这个选项可以帮助用户更加明显地区分出每个代码块,并且更容易发现可能存在的问题。对于阅读和编辑YAML格式的配置文件来说,这是一个非常有用的特性。
lineWrapping表示是否自动换行,本实施例将lineWrapping设置为true。将lineWrapping设置为true的作用是在YAML编辑器中自动换行。当用户在YAML编辑器中编辑配置文件时,如果某一行过长,将会对编辑器的可读性和易用性产生影响。这时可以开启lineWrapping选项,让编辑器自动将过长的内容进行折行,以便更好地观察和编辑配置文件。
tabSize表示缩进时使用的空格数,本实施例将tabSize设置为2。将tabSize设置为2的作用是设置Tab键代表的空格数为2。在YAML编辑器中,当用户输入Tab键时,在没有设置tabSize的情况下,通常会添加4个空格。但有时希望把一次按压Tab键转换为添加2个空格,这时可以设置tabSize的值为2。这个设置可以让用户在编辑配置文件时保持参数缩进对齐,同时保留适当的行宽度,最终让配置文件看起来更加美观和易读。
@Input()editData:any是一个输入属性,用于在父组件中传递编辑器的初始值或者同步编辑器的数据。editData会接收父组件传递过来的值,并将其绑定到code mirror编辑器中,这样可以在父组件修改editData的值后,自动更新到编辑器中。
handleChange($event:string){this.editData=$event;}:是一个事件处理方法,用于在编辑器内容改变时,将修改后的内容同步到组件的editData属性中。$event是从子组件传递到父组件的编辑器内容数据,当编辑器的内容改变时会触发这个方法,然后将编辑器的内容同步到editData中。
步骤D,引入Service中实时参数错误校验模块、异步接口校验模块、智能计算预警模块和快速修复模块。实现步骤D的代码例如如下所示。
import{ParamErrService}from'../../services/paramErr.service';
import{SyncParamErrService}from'../../services/syncParamErr.service';
import{ComputeAlarmService}from'../../services/computeAlarm.service';
import{AutoFixService}from'../../services/autoFix.service';
ParamErrService表示实时参数错误校验模块,SyncParamErrService表示异步接口校验模块,ComputeAlarmService表示智能计算预警模块,AutoFixService表示快速修复模块。这里通过JavaScript的模块导入语法(ES6)的模块导入语法,在代码中引入这些服务,这些服务可以在应用程序的不同组件之间共享,并提供相应的功能。这样做可以保持代码的简洁性和模块化,提高代码的可维护性。
本实施例提供的方法,实现了基于Kubernetes对象的YAML编辑器code mirror参数校验及错误提示。具体地,在Kubernetes资源的YAML编辑器中,创建资源时需要提供一些参数,这些参数可以用来配置该资源的行为和设置。Kubernetes中已经定义了一些常用的参数,并将其编写内置资源的常用参数库,以供用户在使用YAML编辑器时进行参数键值输入,常用参数库包含了Kubernetes中常用的资源类型(如Deployment、Service、ConfigMap等)的参数和参数值,用户在创建这些资源时,可以根据需要在YAML编辑器中输入相应的参数和参数值。如果用户输入的参数或参数值有误,则基于本实施例提供的参数校验及错误提示机制能够自动检测到并进行提示,帮助用户正确配置资源。
此外,可以通过异步接口获取系统可用资源,并在进行校验时使用通过异步接口获取的资源,从而更有效地完成校验。
此外,可以通过算法计算调度策略以及资源分配策略,并在发现潜在的资源分配失败风险或者调度失败风险时提前进行预警,从而降低资源分配失败或者调度失败导致系统故障或资源浪费等风险。
此外,由于在用户每次执行参数输入操作时,对用户本次输入的参数的key和value进行校验(一次校验),并在用户提交YAML格式的配置文件时,对整个YAML文件进行校验,例如通过本次提交的YAML文件与上一次提交的YAML文件进行对比,从而校验用户是否删除了某一个资源或者执行了无效操作,如无效调度操作,从而进行了二次校验,因此通过两种校验方式结合进一步降低配置失败概率,帮助用户成功创建。
此外,由于使用TS实现上述实施例,而TS几乎不依赖于任何特定的前端框架和浏览器架构,因此实现了可插拔的扩展接口,有助于适配任意前端框架和任意浏览器。例如,可以将本实施例提供的方案封装为一个接口,该接口用于Kubernetes的参数配置的错误提示。
可选地,可通过本实施例进一步的实现关键词提示和参数校验相结合的场景。例如,将用户历史时间段配置频率高于阈值的参数以及用户偏好配置的参数作为训练样本集,基于机器学习算法使用训练样本集进行模型训练,得到训练后的机器学习模型,该机器学习模型用于推荐待配置的参数或者待配置的资源,从而实现自动匹配用户场景的配置文件生成。
本申请实施例还提供一种Kubernetes对象的参数校验装置,如图9所示,包括:
接收模块,用于接收来自终端的所述第一Kubernetes对象的参数;校验模块,用于对所述第一Kubernetes对象的参数进行校验;发送模块,用于响应于校验模块校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,所述提示信息指示所述错误或者修复所述错误的方式。
校验模块、接收模块和发送模块均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以校验模块为例,介绍校验模块的实现方式。类似的,接收模块和发送模块的实现方式可以参考校验模块的实现方式。
在一些可能的实现方式中,所述第一Kubernetes对象的参数包括所述第一Kubernetes对象的调度策略,所述提示信息包括第一提示信息,所述发送模块,用于响应于校验模块确定Kubernetes集群中节点设备不满足所述调度策略,所述服务器向所述终端发送所述第一提示信息,所述第一提示信息指示调度策略存在错误或者修复调度策略的方式。
在一些可能的实现方式中,所述第一Kubernetes对象的参数包括节点选择参数,所述节点选择参数包括第一标签或者第一节点名称中至少一项,所述发送模块用于响应于校验模块确定Kubernetes集群中节点设备的第二标签与所述第一标签不匹配,向所述终端发送所述第一提示信息,所述第一提示信息指示所述第一标签存在错误或者所述第一提示信息包括所述第二标签;响应于校验模块确定Kubernetes集群中节点设备的名称与所述第一节点名称不匹配,向所述终端发送所述第一提示信息,所述第一提示信息指示所述第一节点名称存在错误或者所述第一提示信息包括Kubernetes集群中节点设备的名称;响应于校验模块确定Kubernetes集群中所述第一节点名称对应的节点设备上可用的资源量小于资源量阈值,向所述终端发送所述第一提示信息,所述第一提示信息指示所述第一节点名称对应的节点设备上可用的资源量小于资源量阈值或者所述第一提示信息包括Kubernetes集群中可用的资源量大于资源量阈值的节点设备的名称。
在一些可能的实现方式中,所述第一Kubernetes对象的参数包括为所述第一Kubernetes对象分配的资源量,所述提示信息包括第二提示信息,响应于校验模块确定为所述第一Kubernetes对象分配的资源量大于第一资源量阈值,所述发送模块用于向所述终端发送第二提示信息,所述第二提示信息用于指示资源量大于所述第一资源量阈值,或者所述第二提示信息包括所述第一资源量阈值,或者所述第二提示信息包括小于所述第一资源量阈值的第一参考资源量;校验模块确定为所述第一Kubernetes对象分配的资源量小于第二资源量阈值,所述发送模块用于向所述终端发送第三提示信息,所述第三提示信息用于指示资源量小于所述第二资源量阈值,或者所述第三提示信息包括所述第二资源量阈值,或者所述第三提示信息包括大于所述第二资源量阈值的第二参考资源量。
在一些可能的实现方式中,所述第一Kubernetes对象的参数用于指示建立所述第一Kubernetes对象与第二Kubernetes对象之间的绑定关系,所述提示信息包括第三提示信息,响应于校验模块确定所述绑定关系存在错误,所述发送模块用于向所述终端发送第三提示信息,所述第三提示信息指示所述绑定关系存在错误或者修复所述绑定关系的方式。
在一些可能的实现方式中,响应于校验模块确定Kubernetes对象列表中不存在所述第二Kubernetes对象的标识,发送模块向所述终端发送所述第三提示信息,所述Kubernetes对象列表包括已经创建的Kubernetes对象的标识,所述第三提示信息指示所述第二Kubernetes对象不存在,或者所述第三提示信息包括所述Kubernetes对象列表中Kubernetes对象的标识;或者,
响应于校验模块确定第二Kubernetes对象的类型与所述第一Kubernetes对象依赖的对象类型不匹配,发送模块向所述终端发送所述第三提示信息,所述第三提示信息指示所述第二Kubernetes对象的类型与所述第一Kubernetes对象依赖的对象类型不匹配,或者所述第三提示信息包括所述第一Kubernetes对象依赖的对象类型。
在一些可能的实现方式中,响应于校验模块确定所述第一Kubernetes对象的参数的值类型存在错误,发送模块向所述终端发送第四提示信息,所述第四提示信息指示所述第一Kubernetes对象的参数的值类型存在错误,或者所述第四提示信息包括预期的值类型。
在一些可能的实现方式中,响应于校验模块确定所述第一Kubernetes对象的参数的层级存在错误,发送模块向所述终端发送第五提示信息,所述第五提示信息指示所述第一Kubernetes对象的参数的层级存在错误,或者所述第五提示信息包括预期的层级。
在一些可能的实现方式中,响应于校验模块确定所述第一Kubernetes对象的参数的标识的拼写存在错误,发送模块向所述终端发送第六提示信息,所述第六提示信息指示所述第一Kubernetes对象的参数的标识的拼写存在错误,或者所述第六提示信息包括预期的参数标识。
在一些可能的实现方式中,响应于校验模块确定所述第一Kubernetes对象的参数的值超过阈值范围,发送模块向所述终端发送第七提示信息,所述第七提示信息指示所述值超过阈值范围,或者所述第七提示信息包括所述阈值范围,或者所述第七提示信息包括所述阈值范围内的默认值。
在一些可能的实现方式中,响应于校验模块确定所述第一Kubernetes对象的参数的值不属于选项集合,发送模块向所述终端发送第八提示信息,所述第八提示信息指示所述值不属于选项集合,或者所述第八提示信息包括所述选项集合。
在一些可能的实现方式中,所述第一Kubernetes对象的参数包括第一标识和第一值,所述第一标识用于标识所述第一Kubernetes对象的参数,所述第一值为所述第一Kubernetes对象的参数的取值,所述校验模块用于基于所述第一标识查找第一对应关系,获得预期的值类型,所述第一对应关系包括所述第一标识以及所述预期的值类型;响应于所述第一值的类型与所述预期的值类型不匹配,发送模块向所述终端发送所述第四提示信息。
在一些可能的实现方式中,所述校验模块用于基于所述第一标识之前缩进的数量或者所述第一标识之前字符数量获得所述参数的第一层级;基于所述第一标识查找第二对应关系,获得预期的层级,所述第二对应关系包括所述第一标识以及所述预期的层级;响应于所述第一层级与所预期的层级不同,发送模块向所述终端发送所述第五提示信息。基于所述第一标识,在参数标识库进行查询;响应于所述参数标识库中每个参数标识与所述第一标识不一致,发送模块向所述终端发送第六提示信息,所述第六提示信息包括所述参数标识库中与所述第一标识满足模糊匹配条件的第二标识。
在一些可能的实现方式中,接收模块,用于还用于接收第一配置文件;所述校验模块,还用于对所述第一配置文件进行校验;所述校验模块,还用于确定所述第一配置文件指示删除Kubernetes对象的操作和/或所述第一配置文件指示无效操作,发送模块向所述终端发送第八提示信息和/或第九提示信息,所述第八提示信息指示删除Kubernetes对象造成的风险,所述第九提示信息指示所述无效操作;
模块作为软件功能单元的一种举例,校验模块可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,校验模块可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,校验模块可以包括至少一个计算设备,如服务器等。或者,校验模块也可以是利用专用集成电路(application-specific integratedcircuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
校验模块包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。校验模块包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,校验模块包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
本申请实施例还提供一种计算设备800。如图10所示,计算设备800包括:总线802、处理器804、存储器806和通信接口808。处理器804、存储器806和通信接口808之间通过总线802通信。计算设备800可以是服务器或终端设备。本申请实施例不限定计算设备800中的处理器、存储器的个数。
总线802可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线804可包括在计算设备800各个部件(例如,存储器806、处理器804、通信接口808)之间传送信息的通路。
处理器804可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器806可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器804还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器806中存储有可执行的程序代码,处理器804执行该可执行的程序代码以分别实现前述接收模块、校验模块和发送模块的功能,从而实现将Kubernetes对象的参数校验的方法。也即,存储器806上存有用于执行将Kubernetes对象的参数校验的方法的指令。
通信接口803使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备800与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图11所示,所述计算设备集群包括至少一个计算设备800。计算设备集群中的一个或多个计算设备800中的存储器806中可以存有相同的用于执行Kubernetes对象的参数校验的方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备800的存储器806中也可以分别存有用于执行Kubernetes对象的参数校验的方法的部分指令。换言之,一个或多个计算设备800的组合可以共同执行用于执行Kubernetes对象的参数校验的方法的指令。
计算设备集群中的不同的计算设备800中的存储器806可以存储不同的指令,分别用于执行表单转换系统的部分功能。也即,不同的计算设备800中的存储器806存储的指令可以实现接收模块、校验模块和发送模块中的一个或多个模块的功能。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图12示出了一种可能的实现方式。如图12所示,两个计算设备800A和800B之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,计算设备800A中的存储器806中存有执行校验模块的功能的指令。同时,计算设备800B中的存储器806中存有执行接收模块和发送模块的功能的指令。
图12所示的计算设备集群之间的连接方式可以是考虑到本申请提供的Kubernetes对象的参数校验方法需要大量地存储数据,因此考虑将校验模块实现的功能交由计算设备800A执行。
图12中示出的计算设备800A的功能也可以由多个计算设备800完成。同样,计算设备800B的功能也可以由多个计算设备800完成。
本申请实施例还提供了另一种计算设备集群。该计算设备集群中各计算设备之间的连接关系可以类似的参考图11和图12所述计算设备集群的连接方式。不同的是,该计算设备集群中的一个或多个计算设备800中的存储器806中可以存有相同的用于执行Kubernetes对象的参数校验方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备800的存储器806中也可以分别存有用于执行Kubernetes对象的参数校验方法的部分指令。换言之,一个或多个计算设备800的组合可以共同执行用于执行Kubernetes对象的参数校验方法的指令。
需要说明的是,计算设备集群中的不同的计算设备800中的存储器806可以存储不同的指令,用于执行Kubernetes对象的参数校验的部分功能。也即,不同的计算设备800中的存储器806存储的指令可以实现接收模块、校验模块和发送模块的一个或多个装置的功能。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行Kubernetes对象的参数校验的方法,或表单转换为配置文件的方法。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行Kubernetes对象的参数校验的方法,或指示计算设备执行Kubernetes对象的参数校验的方法。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (15)

1.一种Kubernetes对象的参数校验方法,其特征在于,所述方法包括:
终端显示编辑软件的界面;
所述终端基于对所述界面触发的输入操作,获得第一Kubernetes对象的参数;
所述终端向服务器发送所述第一Kubernetes对象的参数;
所述服务器对所述第一Kubernetes对象的参数进行校验;
响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,所述提示信息指示所述错误或者修复所述错误的方式;
所述终端在所述界面中显示所述提示信息。
2.根据权利要求1所述的方法,其特征在于,所述第一Kubernetes对象的参数包括所述第一Kubernetes对象的调度策略,所述提示信息包括第一提示信息,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括:
响应于Kubernetes集群中节点设备不满足所述调度策略,所述服务器向所述终端发送所述第一提示信息,所述第一提示信息指示调度策略存在错误或者修复调度策略的方式。
3.根据权利要求2所述的方法,其特征在于,所述第一Kubernetes对象的参数包括节点选择参数,所述节点选择参数包括第一标签或者第一节点名称中至少一项,所述响应于Kubernetes集群中节点设备不满足所述调度策略,所述服务器向所述终端发送所述第一提示信息,包括:
响应于Kubernetes集群中节点设备的第二标签与所述第一标签不匹配,所述服务器向所述终端发送所述第一提示信息,所述第一提示信息指示所述第一标签存在错误或者所述第一提示信息包括所述第二标签;
响应于Kubernetes集群中节点设备的名称与所述第一节点名称不匹配,所述服务器向所述终端发送所述第一提示信息,所述第一提示信息指示所述第一节点名称存在错误或者所述第一提示信息包括Kubernetes集群中节点设备的名称;
响应于Kubernetes集群中所述第一节点名称对应的节点设备上可用的资源量小于资源量阈值,所述服务器向所述终端发送所述第一提示信息,所述第一提示信息指示所述第一节点名称对应的节点设备上可用的资源量小于资源量阈值或者所述第一提示信息包括Kubernetes集群中可用的资源量大于资源量阈值的节点设备的名称。
4.根据权利要求1所述的方法,其特征在于,所述第一Kubernetes对象的参数包括为所述第一Kubernetes对象分配的资源量,所述提示信息包括第二提示信息,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括以下至少一项:
响应于为所述第一Kubernetes对象分配的资源量大于第一资源量阈值,所述服务器向所述终端发送第二提示信息,所述第二提示信息用于指示资源量大于所述第一资源量阈值,或者所述第二提示信息包括所述第一资源量阈值,或者所述第二提示信息包括小于所述第一资源量阈值的第一参考资源量;
响应于为所述第一Kubernetes对象分配的资源量小于第二资源量阈值,所述服务器向所述终端发送第三提示信息,所述第三提示信息用于指示资源量小于所述第二资源量阈值,或者所述第三提示信息包括所述第二资源量阈值,或者所述第三提示信息包括大于所述第二资源量阈值的第二参考资源量。
5.根据权利要求1所述的方法,其特征在于,所述第一Kubernetes对象的参数用于指示建立所述第一Kubernetes对象与第二Kubernetes对象之间的绑定关系,所述提示信息包括第三提示信息,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括:
响应于校验出所述绑定关系存在错误,所述服务器向所述终端发送第三提示信息,所述第三提示信息指示所述绑定关系存在错误或者修复所述绑定关系的方式。
6.根据权利要求5所述的方法,其特征在于,所述响应于校验出所述绑定关系存在错误,所述服务器向所述终端发送第三提示信息,包括以下至少一项:
响应于Kubernetes对象列表中不存在所述第二Kubernetes对象的标识,所述服务器向所述终端发送所述第三提示信息,所述Kubernetes对象列表包括已经创建的Kubernetes对象的标识,所述第三提示信息指示所述第二Kubernetes对象不存在,或者所述第三提示信息包括所述Kubernetes对象列表中Kubernetes对象的标识;或者,
响应于所述第二Kubernetes对象的类型与所述第一Kubernetes对象依赖的对象类型不匹配,所述服务器向所述终端发送所述第三提示信息,所述第三提示信息指示所述第二Kubernetes对象的类型与所述第一Kubernetes对象依赖的对象类型不匹配,或者所述第三提示信息包括所述第一Kubernetes对象依赖的对象类型。
7.根据权利要求1所述的方法,其特征在于,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括以下至少一项:
响应于校验出所述第一Kubernetes对象的参数的值类型存在错误,所述服务器向所述终端发送第四提示信息,所述第四提示信息指示所述第一Kubernetes对象的参数的值类型存在错误,或者所述第四提示信息包括预期的值类型;或者,
响应于校验出所述第一Kubernetes对象的参数的层级存在错误,所述服务器向所述终端发送第五提示信息,所述第五提示信息指示所述第一Kubernetes对象的参数的层级存在错误,或者所述第五提示信息包括预期的层级;或者,
响应于校验出所述第一Kubernetes对象的参数的标识的拼写存在错误,所述服务器向所述终端发送第六提示信息,所述第六提示信息指示所述第一Kubernetes对象的参数的标识的拼写存在错误,或者所述第六提示信息包括预期的参数标识;或者,
响应于校验出所述第一Kubernetes对象的参数的值超过阈值范围,所述服务器向所述终端发送第七提示信息,所述第七提示信息指示所述值超过阈值范围,或者所述第七提示信息包括所述阈值范围,或者所述第七提示信息包括所述阈值范围内的默认值;或者,
响应于校验出所述第一Kubernetes对象的参数的值不属于选项集合,所述服务器向所述终端发送第八提示信息,所述第八提示信息指示所述值不属于选项集合,或者所述第八提示信息包括所述选项集合。
8.根据权利要求7所述的方法,其特征在于,所述第一Kubernetes对象的参数包括第一标识和第一值,所述第一标识用于标识所述第一Kubernetes对象的参数,所述第一值为所述第一Kubernetes对象的参数的取值,所述响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,包括以下至少一项,包括以下至少一项:
所述服务器基于所述第一标识查找第一对应关系,获得预期的值类型,所述第一对应关系包括所述第一标识以及所述预期的值类型;响应于所述第一值的类型与所述预期的值类型不匹配,所述服务器向所述终端发送所述第四提示信息;或者,
所述服务器基于所述第一标识之前缩进的数量或者所述第一标识之前字符数量获得所述参数的第一层级;所述服务器基于所述第一标识查找第二对应关系,获得预期的层级,所述第二对应关系包括所述第一标识以及所述预期的层级;响应于所述第一层级与所预期的层级不同,所述服务器向所述终端发送所述第五提示信息;或者,
所述服务器基于所述第一标识,在参数标识库进行查询;响应于所述参数标识库中每个参数标识与所述第一标识不一致,所述服务器向所述终端发送第六提示信息,所述第六提示信息包括所述参数标识库中与所述第一标识满足模糊匹配条件的第二标识。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
终端响应于对所述界面触发的确认指令,向服务器发送第一配置文件;
所述服务器对所述第一配置文件进行校验;
响应于校验出所述第一配置文件指示删除Kubernetes对象的操作和/或所述第一配置文件指示无效操作,所述服务器向所述终端发送第八提示信息和/或第九提示信息,所述第八提示信息指示删除Kubernetes对象造成的风险,所述第九提示信息指示所述无效操作;
所述终端在所述界面中显示所述第八提示信息和/或第九提示信息。
10.一种Kubernetes对象的参数校验方法,其特征在于,所述方法包括:
服务器接收来自终端的所述第一Kubernetes对象的参数;
所述服务器对所述第一Kubernetes对象的参数进行校验;
响应于校验出所述第一Kubernetes对象的参数存在错误,所述服务器向所述终端发送提示信息,所述提示信息指示所述错误或者修复所述错误的方式。
11.一种Kubernetes对象的参数校验方法,其特征在于,所述方法包括:
终端显示编辑软件的界面;
所述终端基于对所述界面触发的输入操作,获得第一Kubernetes对象的参数;
所述终端向服务器发送所述第一Kubernetes对象的参数;
所述终端接收来自服务器的提示信息,所述提示信息指示所述第一Kubernetes对象的参数存在错误或者修复所述错误的方式;
所述终端在所述界面中显示所述提示信息。
12.根据权利要求11所述的方法,其特征在于,所述终端在所述界面中显示所述提示信息,包括以下至少一项:
所述终端在所述界面上显示错误标记,所述错误标记指示所述第一Kubernetes对象的参数存在错误;或者,
所述终端对所述第一Kubernetes对象的参数进行突出显示;或者,
所述终端在所述界面上显示悬浮窗,所述悬浮窗包括所述错误的类型、存在错误的参数的位置信息、修复所述错误的方式以及确认修复控件中至少一项,所述确认修复控件用于触发按照修复所述错误的方式更新所述第一Kubernetes对象的参数的指令。
13.根据权利要求11或12所述的方法,其特征在于,所述方法包括:
所述终端响应于修复指令,按照所述修复所述错误的方式对所述第一Kubernetes对象的参数进行更新。
14.一种服务器,其特征在于,所述服务器包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机程序指令;所述至少一个处理器执行所述计算机程序指令,以使得所述服务器执行如权利要求10所述的方法。
15.一种终端,其特征在于,包括显示器、处理器和存储器,所述存储器中存储有计算机程序指令,所述显示器用于显示界面,所述处理器执行所述计算机程序指令,以使得所述终端执行如权利要求11至13任一项所述的方法。
CN202310746991.7A 2023-06-21 2023-06-21 Kubernetes对象的参数校验方法、服务器及终端 Pending CN117112124A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310746991.7A CN117112124A (zh) 2023-06-21 2023-06-21 Kubernetes对象的参数校验方法、服务器及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310746991.7A CN117112124A (zh) 2023-06-21 2023-06-21 Kubernetes对象的参数校验方法、服务器及终端

Publications (1)

Publication Number Publication Date
CN117112124A true CN117112124A (zh) 2023-11-24

Family

ID=88806266

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310746991.7A Pending CN117112124A (zh) 2023-06-21 2023-06-21 Kubernetes对象的参数校验方法、服务器及终端

Country Status (1)

Country Link
CN (1) CN117112124A (zh)

Similar Documents

Publication Publication Date Title
US10733360B2 (en) Simulated hyperlinks on a mobile device
US11163851B2 (en) Method, apparatus, computer device and storage medium of page displaying
US20210027203A1 (en) Action suggestions for user-selected content
US10514833B2 (en) Contextual paste target prediction
JP6279153B2 (ja) 言語入力データからnグラムおよび概念関係の自動生成
RU2662636C2 (ru) Управление информацией и отображение информации в веб-браузерах
CN107438814A (zh) 移动设备上的实体动作建议
US10860676B2 (en) Method and system for controlling presentation of web resources in a browser window
CN108399072A (zh) 应用页面更新方法和装置
JP2021093173A (ja) 自然言語ユーザインターフェース入力に基づいて自然言語出力を生成すること
CN111930290B (zh) 资源部署方法及装置
US20230013569A1 (en) Combined local and server context menus
CN113407284A (zh) 导航界面的生成方法、装置、存储介质及电子设备
CN111124564A (zh) 显示用户界面的方法及装置
CN111427577A (zh) 代码处理方法、装置及服务器
CN107220377B (zh) 搜索方法、电子设备及计算机存储介质
AU2022309412A1 (en) Target recommendation method and apparatus, and storage medium
CN114237457A (zh) 一种显示方法和装置、电子设备及存储介质
CN116956825A (zh) 表单转换方法及服务器
CN111679976A (zh) 一种页面对象的查找方法及装置
WO2023082817A1 (zh) 应用程序推荐方法
CN114564855B (zh) 基于fmea数据节点的关联关系的操作方法及电子设备
CN117112124A (zh) Kubernetes对象的参数校验方法、服务器及终端
CN110968311A (zh) 前端页面构建方法、装置及电子设备
CN111753164A (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