一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

kubernetes集群容器调试系统及方法与流程

2022-12-02 19:35:38 来源:中国专利 TAG:


1.本发明涉及调试工具技术领域,具体而言,本发明涉及一种kubernetes集群容器调试系统及方法。


背景技术:

2.kubernetes,简称k8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效。通过部署容器方式实现应用部署,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
3.在github中有一套开源的用来调试kubernetes集群容器的工具,叫做kubectl-debug。kubectl-debug是一个简单、易用的kubectl插件,能够进行kubernetes上的pod排障诊断,但只能通过命令行的方式对kubernetes集群内pod排查故障,具体地,该工具还存在如下一些限制和不方便的地方:1、只能通过kubectl命令进行终端操作,需要每个用户本地配置kubeconfig配置文件,并需要用户本地安装kubectl命令行工具和kubectl-debug插件,维护使用成本较高,用户操作不方便。2、需要用户学习命令行工具的使用,需要一定的学习成本,用户体验性较差。
4.因此,亟需一种用户操作方便、学习成本低的kubernetes集群容器调试系统。


技术实现要素:

5.为至少能解决上述的技术缺陷之一,本发明提供了以下技术方案的kubernetes集群容器调试系统及方法。
6.本发明的实施例根据一个方面,提供了一种kubernetes集群容器调试系统,包括:前端交互模块、调试应用接口模块、调试代理模块和调试工具模块;其中,
7.前端交互模块,用于提供调试操作交互页面以接收用户的调试请求,根据所述调试请求与调试应用接口交互,所述调试请求用于请求调试kubernetes集群中的目标容器;
8.调试应用接口模块,用于提供调试应用接口以与前端交互模块交互,向对应所述目标容器的调试代理服务下发所述调试请求;
9.调试代理模块,用于部署调试代理服务以与调试应用接口模块交互,并根据所述调试请求启动调试工具容器;
10.调试工具模块,用于提供调试工具容器,所述调试工具容器内集成有多个调试工具,所述调试工具容器在启动后连接至所述目标容器,根据所述调试请求对应的调试操作使用相应的调试工具对所述目标容器进行调试。
11.在一个可行的实现方式中,所述前端交互模块基于websocket代理接口与调试应用接口模块交互。
12.在一个可行的实现方式中,所述调试代理模块通过以下方式部署调试代理服务:
13.基于daemonset方式在kubernetes集群的每个节点上部署应用,基于sidecar方式启动一个调试工具镜像的空服务。
14.在一个可行的实现方式中,所述调试应用接口模块,还用于:
15.提供与管理平台对接的用户权限管理接口,所述用户权限管理接口用于在接收到用户发起的调试请求时获取用户信息,并记录所述调试请求对应的调试操作。
16.在一个可行的实现方式中,所述调试应用接口模块,还用于:
17.调用apiserver接口获取对应所述目标容器的详细信息。
18.在一个可行的实现方式中,所述详细信息包括:所在节点、容器id和容器引擎;
19.所述调试应用接口模块用于向对应所述目标容器的调试代理服务下发所述调试请求,具体包括:
20.向所述目标容器的所在节点的调试代理服务下发所述调试请求。
21.在一个可行的实现方式中,所述调试应用接口模块基于websocket代理接口与调试代理模块交互。
22.在一个可行的实现方式中,所述调试代理模块,还用于:将所述目标容器的主文件系统挂载在到所述调试工具容器的/root目录下。
23.在一个可行的实现方式中,所述调试代理模块,还用于:在前端交互模块与调试应用接口模块断开交互通信时,释放所述调试工具容器。
24.此外,本发明的实施例根据另一个方面,提供了一种kubernetes集群容器调试方法,其特征在于,应用于上述任一项实施例所述的kubernetes集群容器调试系统,该方法包括:
25.通过调试操作交互页面接收用户的调试请求,根据所述调试请求与调试应用接口交互,所述调试请求用于请求调试kubernetes集群中的目标容器;
26.向对应所述目标容器的调试代理服务下发所述调试请求;
27.调试代理服务根据所述调试请求启动调试工具容器;
28.将所述调试工具容器在启动后连接至所述目标容器,根据所述调试请求对应的调试操作使用所述目标容器中相应的调试工具对所述目标容器进行调试。
29.本发明与现有技术相比,具有以下有益效果:
30.本发明提供的kubernetes集群容器调试系统及方法,包括前端交互模块、调试应用接口模块、调试代理模块和调试工具模块共四个模块,能够通过在需要调试的容器节点额外启动一个提供必须的调试工具的容器,然后将新容器加入到目标容器的命令空间中,通过与web前端交互,使业务容器可以保持最小化的情况下使用,用户操作方便且学习成本低。
31.本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
32.本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
33.图1为本发明实施例提供的kubernetes集群容器调试系统的结构示意图;
34.图2为本发明实施例提供的kubernetes集群容器调试系统的框架图;
35.图3为本发明实施例提供的kubernetes集群容器调试方法的方法流程图。
具体实施方式
36.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
37.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
38.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
39.本技术提供的kubernetes集群容器调试系统及方法,旨在解决现有技术的如上技术问题。
40.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
41.以下,对本发明实施例主要涉及的术语进行释义:
42.kubernetes:简称k8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效。
43.pod:是kubernetes的最重要最基本的概念。它是k8s系统中能够被创建、调度和管理的最小部署单元。一个pod代表集群中一个运行的进程。pod可以包含多个容器(一组容器的集合)。
44.namespace:即“名字空间”,在kubernetes中,名字空间提供一种机制,将同一集群中的资源划分为相互隔离的组。同一名字空间内的资源名称要唯一,但跨名字空间时没有这个要求。
45.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
46.参见图1和图2,本发明实施例提供了一种kubernetes集群容器调试系统。其中,图1是本发明实施例提供的kubernetes集群容器调试系统的结构示意图,图2是本发明实施例提供的kubernetes集群容器调试系统的框架图。
47.在本发明实施例中,所述kubernetes集群容器调试系统,包括:前端交互模块10、
调试应用接口模块20、调试代理模块30、调试工具模块40;
48.其中,所述前端交互模块10,用于提供调试操作交互页面以接收用户的调试请求,根据所述调试请求与调试应用接口交互,所述调试请求用于请求调试kubernetes集群中的目标容器。
49.对于本实施例,前端交互模块10为web(world wide web,即全球广域网,也称为万维网)前端,是用来为用户提供调试操作交互页面的,在需要对kubernetes集群内pod排查故障,需要调试时,用户可从调试操作交互页面向调试应用接口请求调试kubernetes集群里指定的namespace下的pod里的其中一个容器,能够通过调试操作交互页面与调试应用接口实时交互,使得用户有和在普通终端相同的操作体验,用户操作方便,无需用户学习命令工具的使用,显著降低学习成本,提高用户体验性。
50.对于本实施例,所述目标容器是指用户待调试的kubernetes集群里指定的名字空间下的pod里的其中一个容器。
51.在一个可行的实现方式中,所述前端交互模块10基于websocket代理接口与调试应用接口模块20交互。
52.具体地,在需要对kubernetes集群内pod排查故障,需要调试时,用户可通过websocket代理接口从调试操作交互页面向调试应用接口请求调试kubernetes集群里指定的namespace下的pod里的其中一个容器,能够通过websocket代理接口从调试操作交互页面与调试应用接口实时交互,用户操作方便,使得用户有和在普通终端相同的操作体验,无需用户学习命令工具的使用,显著降低学习成本,提高用户体验性。
53.通过提供统一的websocket代理接口与前端交互模块对接,实现用户浏览前端页面一键登录功能。
54.其中,所述调试应用接口模块20,用于提供调试应用接口以与前端交互模块10交互,向对应所述目标容器的调试代理服务下发所述调试请求。
55.对于本实施例,debug-api模块,即调试应用接口模块20是用来提供api,即调试应用接口的,与前端交互模块10交互通信并将数据代理到debug-agent模块,即调试代理模块30,可向对应所述目标容器的调试代理服务下发所述调试请求。
56.在一个可行的实现方式中,所述调试应用接口模块20基于websocket代理接口与调试代理模块30交互。
57.具体地,debug-api模块,即调试应用接口模块20与前端交互模块10通过websocket代理接口通信并将数据代理到debug-agent模块,即调试代理模块30,可向对应所述目标容器的调试代理服务下发所述调试请求。其中,对应所述目标容器的调试代理服务可具体为所述目标容器的所在节点的调试代理服务。
58.此外,所述调试应用接口模块20能够将调试代理服务发送的通信消息转发到调试应用接口与前端页面的websocket通信中,使其作为调试代理模块30与前端交互模块10交互通信的中间代理。
59.在一些实施例中,所述调试应用接口模块20,还用于:调用apiserver接口获取对应所述目标容器的详细信息。
60.对于本实施例,kubernetes的apiserver提供了k8s各类资源对象的增删改查等接口,是整个系统的数据总线和数据中心。在调试应用接口模块20接收到用户发送的调试请
求之后,能够调用apiserver接口获取对应所述目标容器的详细信息。
61.在一个可行的实现方式中,所述目标容器的详细信息具体包括目标容器的所在节点、容器id(identitydocument,唯一编码)和容器引擎。则所述调试应用接口20模块用于向对应所述目标容器的调试代理服务下发所述调试请求,具体包括:向所述目标容器的所在节点的调试代理服务下发所述调试请求。
62.其中,调试代理模块30,用于部署调试代理服务以与调试应用接口模块交互,并根据所述调试请求启动调试工具容器。
63.对于本实施例,所述调试代理模块在接收到调试应用接口模块20下发的调试请求之后,根据所述目标容器对应的容器引擎选择合适的接口方式启动调试工具容器。
64.其中,调试工具模块40,用于提供调试工具容器,所述调试工具容器内集成有多个调试工具,所述调试工具容器在启动后连接至所述目标容器,根据所述调试请求对应的调试操作使用相应的调试工具对所述目标容器进行调试。
65.对于本实施例,debug-tool模块,即调试工具模块40是作为实际启动的调试工具容器,内部集成了大量定制的调试工具,并在启动后attach(连接)到目标容器(container)的名字空间中,使用户通过在调试工具容器中执行命令操作来对目标容器环境进行调试。
66.在一个可行的实现方式中,所述调试工具模块40基于attach接口与调试代理模块30交互。
67.具体地,debug-tool模块,即所述调试工具模块40在调试工具容器内部集成了足够的调试工具供用户调试目标容器使用,并通过attach接口与debug-agent模块,即调试代理模块30交互,所述调试代理模块30再通过websocket代理接口把attach的交互信息转发到调试应用接口模块20,最终实现了直接在web前端的调试操作交互页面与调试工具容器交互的能力。
68.本发明实施例提供的包括前端交互模块、调试应用接口模块、调试代理模块和调试工具模块共四个模块的kubernetes集群容器调试系统,能够通过在需要调试的容器节点额外启动一个提供必须的调试工具的容器,然后将新容器加入到目标容器的命令空间中,通过与web前端交互,使业务容器可以保持最小化的情况下使用,用户操作方便且学习成本低。
69.在一些实施例中,所述调试应用接口模块20,还用于:
70.提供与管理平台对接的用户权限管理接口,所述用户权限管理接口用于在接收到用户发起的调试请求时获取用户信息,并记录所述调试请求对应的调试操作。
71.对于本实施例,所述调试应用接口模块20在接收到用户发送的调试请求之后,还可以通过用户权限管理接口与管理平台的权限系统对接获取用户信息,并记录调试请求对应的调试操作,收集用户交互操作日志信息,保存日志文件供后期审计需要,能够为审计追踪用户操作提供便利,有效解决现有的调试工具kubectl-debug无法提供审计功能,当用户进行了危险性操作时,无法通过审计文件确定是什么用户操作了什么命令的问题。
72.在一些实施例中,所述调试代理模块30通过以下方式部署调试代理服务:基于daemonset方式在kubernetes集群的每个节点上部署应用,基于sidecar方式启动一个调试工具镜像的空服务。
73.对于本实施例,会基于daemonset方式在kubernetes集群的每个节点上部署一个
应用,从而实现对kubernetes集群的每一个节点的pod的调试能力,并基于sidecar方式启动一个调试工具镜像的空服务,sidecar的方式能够实现在一个pod里启动多个调试工具容器,基于sidecar方式启动一个调试工具镜像的空服务能够优化在启动调试工具容器过程中拉取镜像的时间,具体地,使用调试工具的镜像部署一个空的服务是能够提前拉取需要的镜像,并使镜像保持在节点上不被kubernetes的kubelet组件的资源回收模块回收掉,使用户使用时不再需要重新拉取镜像,使能够达到秒级启动的能力,优化用户体验。
74.在一些实施例中,所述调试代理模块30,还用于:将所述目标容器的主文件系统挂载在到所述调试工具容器的/root目录下。
75.对于本实施例,所述调试代理模块在接收到调试应用接口模块20下发的调试请求之后,根据所述目标容器对应的容器引擎选择合适的接口方式启动调试工具容器,并将调试工具容器attach(连接)到目标容器(container)的名字空间中,同时将目标容器的主文件系统自动挂载在/root目录下,该方法能够为用户查看修改容器文件提供便利,有效解决现有的调试工具kubectl-debug无法直接查看修改被调试工具文件,需要通过chroot命令切换主文件目录,一般用户无法理解,不知道操作方法,需要一定学习成本,对用户使用产生不便,体验较差的问题。
76.在一些实施例中,所述调试代理模块30,还用于:在前端交互模块与调试应用接口模块断开交互通信时,释放所述调试工具容器。
77.对于本实施例,所述调试代理模块30能够用于管理调试工具容器的生命周期,在前端交互模块10与调试应用接口模块20断开交互通信时即时释放调试工具容器。
78.此外,本发明实施例提供了一种kubernetes集群容器调试方法,如图3所示,所述方法包括:
79.步骤s110:通过调试操作交互页面接收用户的调试请求,根据所述调试请求与调试应用接口交互,所述调试请求用于请求调试kubernetes集群中的目标容器。
80.对于本实施例,将web(world wide web,即全球广域网,也称为万维网)前端用来为用户提供调试操作交互页面,在需要对kubernetes集群内pod排查故障,需要调试时,用户可从调试操作交互页面向调试应用接口请求调试kubernetes集群里指定的namespace下的pod里的其中一个容器,能够通过调试操作交互页面与调试应用接口实时交互,使得用户有和在普通终端相同的操作体验,用户操作方便,无需用户学习命令工具的使用,显著降低学习成本,提高用户体验性。
81.对于本实施例,所述目标容器是指用户待调试的kubernetes集群里指定的名字空间下的pod里的其中一个容器。
82.在一个可行的实现方式中,用户基于websocket代理接口从调试操作交互页面的与调试应用接口交互。
83.具体地,在需要对kubernetes集群内pod排查故障,需要调试时,用户可通过websocket代理接口从调试操作交互页面向调试应用接口请求调试kubernetes集群里指定的namespace下的pod里的其中一个容器,能够通过websocket代理接口从调试操作交互页面与调试应用接口实时交互,用户操作方便,使得用户有和在普通终端相同的操作体验,无需用户学习命令工具的使用,显著降低学习成本,提高用户体验性。
84.通过提供统一的websocket代理接口与web前端对接,实现用户浏览前端页面一键
登录功能。
85.步骤s120:向对应所述目标容器的调试代理服务下发所述调试请求。
86.对于本实施例,调试应用接口与web前端交互通信并将数据代理到调试代理服务,可向对应所述目标容器的调试代理服务下发所述调试请求。
87.在一个可行的实现方式中,调试应用接口基于websocket代理接口与调试代理服务交互。
88.具体地,调试应用接口与web前端通过websocket代理接口通信并将数据代理到调试代理服务,可向对应所述目标容器的调试代理服务下发所述调试请求。其中,对应所述目标容器的调试代理服务可具体为所述目标容器的所在节点的调试代理服务。
89.此外,调试应用接口模块能够将调试代理服务发送的通信消息转发到调试应用接口与web前端页面的websocket通信中,使其作为调试代理服务与web前端交互通信的中间代理。
90.在一些实施例中,在向对应所述目标容器的调试代理服务下发所述调试请求之前,还包括:调用apiserver接口获取对应所述目标容器的详细信息。
91.对于本实施例,kubernetes的apiserver提供了k8s各类资源对象的增删改查等接口,是整个系统的数据总线和数据中心。在接收到用户发送的调试请求之后、在向对应所述目标容器的调试代理服务下发所述调试请求之前,能够调用apiserver接口获取对应所述目标容器的详细信息。
92.在一个可行的实现方式中,所述目标容器的详细信息具体包括目标容器的所在节点、容器id(identitydocument,唯一编码)和容器引擎。则向对应所述目标容器的调试代理服务下发所述调试请求,具体包括:向所述目标容器的所在节点的调试代理服务下发所述调试请求。
93.步骤s130:调试代理服务根据所述调试请求启动调试工具容器。
94.对于本实施例,在接收到调试应用接口下发的调试请求之后,调试代理服务根据所述目标容器对应的容器引擎选择合适的接口方式启动调试工具容器。
95.步骤s140:将所述调试工具容器在启动后连接至所述目标容器,根据所述调试请求对应的调试操作使用所述目标容器中相应的调试工具对所述目标容器进行调试。
96.对于本实施例,将所述调试工具容器在启动后attach(连接)到目标容器(container)的名字空间中,使用户通过在调试工具容器中执行命令操作来对目标容器环境进行调试。
97.在一个可行的实现方式中,调试工具容器基于attach接口与调试代理服务交互。
98.具体地,调试工具容器内部集成了足够的调试工具供用户调试目标容器使用,并通过attach接口与调试代理服务交互,调试代理服务再通过websocket代理接口把attach的交互信息转发到调试应用接口,最终实现了直接在web前端的调试操作交互页面与调试工具容器交互的能力。
99.本发明实施例提供的kubernetes集群容器调试方法,能够通过在需要调试的容器节点额外启动一个提供必须的调试工具的容器,然后将新容器加入到目标容器的命令空间中,通过与web前端交互,使业务容器可以保持最小化的情况下使用,用户操作方便且学习成本低。
access memory,随即存储器)、eprom(erasable programmable read-only memory,可擦写可编程只读存储器)、eeprom(electrically erasable programmable read-only memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储设备包括由设备(例如,计算机、手机)以能够读的形式存储或传输信息的任何介质,可以是只读存储器,磁盘或光盘等。
110.本发明方法实施例的内容均适用于本存储介质实施例,本存储介质实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法达到的有益效果也相同,具体请参见方法实施例中的说明,在此不再赘述。
111.此外,本发明实施例还提供了一种计算机设备,本实施例所述的计算机设备可以是服务器、个人计算机以及网络设备等设备。所述计算机设备包括:一个或多个处理器,存储器,一个或多个计算机程序,其中所述一个或多个计算机程序被存储在存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个计算机程序配置用于执行以上任一实施例所述的kubernetes集群容器调试方法。
112.本发明方法实施例的内容均适用于本计算机设备实施例,本计算机设备实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法达到的有益效果也相同,具体请参见方法实施例中的说明,在此不再赘述。
113.此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
114.以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献