CN116132344A - 基于K8s集群的容器服务调试方法及装置、电子设备 - Google Patents
基于K8s集群的容器服务调试方法及装置、电子设备 Download PDFInfo
- Publication number
- CN116132344A CN116132344A CN202211697772.6A CN202211697772A CN116132344A CN 116132344 A CN116132344 A CN 116132344A CN 202211697772 A CN202211697772 A CN 202211697772A CN 116132344 A CN116132344 A CN 116132344A
- Authority
- CN
- China
- Prior art keywords
- cluster
- container
- service
- container service
- client
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于K8s集群的容器服务调试方法及装置、电子设备,涉及网络技术与安全领域,其中,该方法包括:接收K8s集群中容器节点代理组件转发的容器服务请求,基于长连接将容器服务请求转发至客户端代理,其中,客户端代理在接收到容器服务请求后,基于域名信息将容器服务请求转发给客户端主机中的本地系统,由本地系统对目标应用进行调试,得到应用调试结果;接收客户端代理返回的应用调试结果,并将应用调试结果返回至用户终端。本发明解决了相关技术中对K8s集群中的容器应用进行调试时,需要将本地应用打包成容器镜像后,再将其部署到K8s集群环镜中,导致客户端无法进行本地化应用调试的技术问题。
Description
技术领域
本发明涉及网络技术与安全领域,具体而言,涉及一种基于K8s集群的容器服务调试方法及装置、电子设备。
背景技术
在容器化盛行后,K8s集群技术占据到主流,由于集群技术的特点,其所占用的资源非普通开发者的主机所能承受,同时由于集群环境的复杂性,通常是团队协同开发,单主机搭建开发环境变得越发不可行。
在K8s集群环境需要调试应用时,需要先将应用打包成镜像推送到镜像仓库中,图1是根据现有技术的一种在K8s集群环境进行应用调试方法的流程图,如图1所示,现有技术中,针对容器服务应用调试的流程包括:开发者打包应用镜像并输入到镜像仓库,然后将应用部署到K8s集群进行应用测试,各模块联合调试应用输出调试日志,对日志进行分析定位问题,联调完成后即可发布测试。由于K8s的容器化环境中是基于CNI(Container NetworkInterface,容器网络的API接口)组件来构建的一个独立的网络环境,当需要对K8s环境中微服务容器进行调试时,需要如图1中先将本地应用打包成容器镜像后,再将其部署到K8s集群环镜中,这个过程使客户端想要基于K8s环境进行本地化调试就变得不可行,并且这种调试过程通常只能通过容器日志进行问题定位。另外这种应用调试方法,容器的打包和部署耗时较长,对于经常需要进行调试的开发者来说会带来极大的效率损耗。并且,现有技术中的应用调试流程繁琐,联调应用时只能借助日志输出来定位问题,使得问题定位效率大大降低,从而导致业务调试效率较低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种基于K8s集群的容器服务调试方法及装置、电子设备,以至少解决相关技术中对K8s集群中的容器应用进行调试时,需要将本地应用打包成容器镜像后,再将其部署到K8s集群环镜中,导致客户端无法进行本地化应用调试的技术问题。
根据本发明实施例的一个方面,提供了一种基于K8s集群的容器服务调试方法,应用于K8s集群环境中的服务端代理,所述服务端代理与客户端主机中部署的客户端代理建立长连接,所述服务端代理接管K8s集群中的目标容器服务,所述客户端代理通过所述长连接获取所述目标容器服务的域名信息,容器服务调试方法包括:接收所述K8s集群中容器节点代理组件转发的容器服务请求,其中,所述容器服务请求为用户终端向所述容器节点代理组件发起的,用于向所述目标容器服务请求对目标应用进行调试;基于所述长连接将所述容器服务请求转发至所述客户端代理,其中,所述客户端代理在接收到所述容器服务请求后,基于所述域名信息将所述容器服务请求转发给所述客户端主机中的本地系统,由所述本地系统对所述目标应用进行调试,得到应用调试结果;接收所述客户端代理返回的所述应用调试结果,并将所述应用调试结果返回至所述用户终端。
可选地,所述服务端代理与客户端主机中部署的客户端代理建立长连接,包括:在所述K8s集群中部署所述服务端代理,并设置指定网络模式;采用所述指定网络模式在与所述K8s集群对应的集群主机的主机网络中开启主机服务端口;建立所述服务端代理与所述主机服务端口之间的第一网络链接;在所述客户端主机中部署所述客户端代理;建立所述主机服务端口与所述客户端代理之间的第二网络链接;基于所述第一网络链接和所述第二网络链接,建立所述服务端代理与所述客户端代理之间的长连接。
可选地,在接收所述K8s集群中容器节点代理组件转发的容器服务请求之前,还包括:接收所述客户端代理发送的服务修改指令,其中,所述服务修改指令至少携带有:所述目标容器服务的服务标识;响应所述服务修改指令,调用所述K8s集群的API接口,通过所述API接口获取所有容器服务,并采集每个所述容器服务内部的域名信息;通过所述K8s集群的API接口将所述服务标识指示的目标容器服务的服务链接修改为所述服务端代理,以使所述服务端代理接管所述K8s集群中的目标容器服务,得到指令执行结果;将每个所述容器服务内部的域名信息以及所述指令执行结果返回至所述客户端代理。
可选地,在接收所述客户端代理发送的服务修改指令之后,还包括:获取所述服务修改指令中的用户信息,其中,所述用户信息至少包括:用户名称和用户权限;对所述服务修改指令中的用户信息进行鉴权,得到鉴权结果,其中,所述鉴权结果指示是否允许调用所述K8s集群的API接口。
可选地,所述容器服务调试方法还包括:接收所述容器节点代理组件转发的本地服务请求,其中,所述本地服务请求为客户端主机的本地系统发起的,用于向所述K8s集群中除所述目标容器服务之外的指定容器服务请求对指定应用进行调试;响应所述本地服务请求,调用所述K8s集群的API接口查询所述指定容器服务;将所述本地服务请求转发至所述指定容器服务,由所述指定容器服务对所述指定应用进行调试,得到应用调试结果;接收所述指定容器服务返回的应用调试结果,并将所述应用调试结果返回至所述本地系统。
根据本发明实施例的另一方面,还提供了一种基于K8s集群的容器服务调试方法,应用于客户端主机中部署的客户端代理,所述客户端代理与K8s集群环境中部署的服务端代理建立长连接,所述服务端代理接管K8s集群中的目标容器服务,所述客户端代理通过所述长连接获取所述目标容器服务的域名信息,容器服务调试方法包括:基于所述长连接,接收所述服务端代理转发的容器服务请求,其中,所述容器服务请求为用户终端发起的,用于向所述目标容器服务请求对目标应用进行调试;基于所述域名信息将所述容器服务请求转发至所述客户端主机中的本地系统,由所述本地系统对所述目标应用进行调试,得到应用调试结果;将所述应用调试结果发送至所述服务端代理,其中,所述服务端代理将所述应用调试结果返回至所述用户终端。
可选地,所述容器服务调试方法还包括:在与所述服务端代理建立长连接后,接收所述服务端代理发送的指令执行结果,其中,所述指令执行结果指示通过所述K8s集群的API接口将目标容器服务的服务链接修改为所述服务端代理是否成功;在所述指令执行结果指示修改成功的情况下,将所述目标容器服务的域名信息中的服务IP地址指向所述服务端代理。
可选地,所述容器服务调试方法还包括:接收所述服务端代理发送的每个所述容器服务内部的域名信息;将所有所述容器服务的域名信息写入本地网络链接文件中,其中,所述本地网络链接文件用于为所述客户端主机提供所述K8s集群中所有容器服务的服务链接;建立所述客户端主机、所述客户端代理与所述服务端代理之间的网络传输双向通道。
根据本发明实施例的另一方面,还提供了一种基于K8s集群的容器服务调试装置,应用于K8s集群环境中的服务端代理,所述服务端代理与客户端主机中部署的客户端代理建立长连接,所述服务端代理接管K8s集群中的目标容器服务,所述客户端代理通过所述长连接获取所述目标容器服务的域名信息,容器服务调试装置包括:接收单元,用于接收所述K8s集群中容器节点代理组件转发的容器服务请求,其中,所述容器服务请求为用户终端向所述容器节点代理组件发起的,用于向所述目标容器服务请求对目标应用进行调试;转发单元,用于基于所述长连接将所述容器服务请求转发至所述客户端代理,其中,所述客户端代理在接收到所述容器服务请求后,基于所述域名信息将所述容器服务请求转发给所述客户端主机中的本地系统,由所述本地系统对所述目标应用进行调试,得到应用调试结果;返回单元,用于接收所述客户端代理返回的所述应用调试结果,并将所述应用调试结果返回至所述用户终端。
可选地,所述基于K8s集群的容器服务调试装置还包括:第一部署模块,用于在所述K8s集群中部署所述服务端代理,并设置指定网络模式;第一开启模块,用于采用所述指定网络模式在与所述K8s集群对应的集群主机的主机网络中开启主机服务端口;第一建立模块,用于建立所述服务端代理与所述主机服务端口之间的第一网络链接;第二部署模块,用于在所述客户端主机中部署所述客户端代理;第二建立模块,用于建立所述主机服务端口与所述客户端代理之间的第二网络链接;第三建立模块,用于基于所述第一网络链接和所述第二网络链接,建立所述服务端代理与所述客户端代理之间的长连接。
可选地,所述基于K8s集群的容器服务调试装置还包括:第一接收模块,用于接收所述客户端代理发送的服务修改指令,其中,所述服务修改指令至少携带有:所述目标容器服务的服务标识;第一响应模块,用于响应所述服务修改指令,调用所述K8s集群的API接口,通过所述API接口获取所有容器服务,并采集每个所述容器服务内部的域名信息;第一修改模块,用于通过所述K8s集群的API接口将所述服务标识指示的目标容器服务的服务链接修改为所述服务端代理,以使所述服务端代理接管所述K8s集群中的目标容器服务,得到指令执行结果;第一返回模块,用于将每个所述容器服务内部的域名信息以及所述指令执行结果返回至所述客户端代理。
可选地,所述基于K8s集群的容器服务调试装置还包括:第一获取模块,用于获取所述服务修改指令中的用户信息,其中,所述用户信息至少包括:用户名称和用户权限;第一鉴权模块,用于对所述服务修改指令中的用户信息进行鉴权,得到鉴权结果,其中,所述鉴权结果指示是否允许调用所述K8s集群的API接口。
可选地,所述基于K8s集群的容器服务调试装置还包括:第二接收模块,用于接收所述容器节点代理组件转发的本地服务请求,其中,所述本地服务请求为客户端主机的本地系统发起的,用于向所述K8s集群中除所述目标容器服务之外的指定容器服务请求对指定应用进行调试;第一响应模块,用于响应所述本地服务请求,调用所述K8s集群的API接口查询所述指定容器服务;第一转发模块,用于将所述本地服务请求转发至所述指定容器服务,由所述指定容器服务对所述指定应用进行调试,得到应用调试结果;第三接收模块,用于接收所述指定容器服务返回的应用调试结果,并将所述应用调试结果返回至所述本地系统。
根据本发明实施例的另一方面,还提供了一种基于K8s集群的容器服务调试装置,应用于客户端主机中部署的客户端代理,所述客户端代理与K8s集群环境中部署的服务端代理建立长连接,所述服务端代理接管K8s集群中的目标容器服务,所述客户端代理通过所述长连接获取所述目标容器服务的域名信息,容器服务调试装置包括:第二接收单元,基于所述长连接,接收所述服务端代理转发的容器服务请求,其中,所述容器服务请求为用户终端发起的,用于向所述目标容器服务请求对目标应用进行调试;第二转发单元,用于基于所述域名信息将所述容器服务请求转发至所述客户端主机中的本地系统,由所述本地系统对所述目标应用进行调试,得到应用调试结果;第二返回单元,用于将所述应用调试结果发送至所述服务端代理,其中,所述服务端代理将所述应用调试结果返回至所述用户终端。
可选地,所述基于K8s集群的容器服务调试装置还包括:第四接收模块,用于在与所述服务端代理建立长连接后,接收所述服务端代理发送的指令执行结果,其中,所述指令执行结果指示通过所述K8s集群的API接口将目标容器服务的服务链接修改为所述服务端代理是否成功;第一指向模块,用于在所述指令执行结果指示修改成功的情况下,将所述目标容器服务的域名信息中的服务IP地址指向所述服务端代理。
可选地,所述基于K8s集群的容器服务调试装置还包括:第五接收模块,用于接收所述服务端代理发送的每个所述容器服务内部的域名信息;第一写入模块,用于将所有所述容器服务的域名信息写入本地网络链接文件中,其中,所述本地网络链接文件用于为所述客户端主机提供所述K8s集群中所有容器服务的服务链接;第一建立模块,用于建立所述客户端主机、所述客户端代理与所述服务端代理之间的网络传输双向通道。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任意一项基于K8s集群的容器服务调试方法。
根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述任意一项基于K8s集群的容器服务调试方法。
本公开中,采用以下步骤:接收K8s集群中容器节点代理组件转发的容器服务请求,其中,容器服务请求为用户终端向容器节点代理组件发起的,用于向目标容器服务请求对目标应用进行调试,基于长连接将容器服务请求转发至客户端代理,客户端代理在接收到容器服务请求后,基于域名信息将容器服务请求转发给客户端主机中的本地系统,由本地系统对目标应用进行调试,得到应用调试结果,接收客户端代理返回的应用调试结果,并将应用调试结果返回至用户终端。
本公开中,服务端代理与客户端之间代理建立长连接,基于长连接将容器服务请求转发到客户端代理,并基于域名信息将其转发到客户端的本地系统,由本地系统对目标应用进行调试,从而实现客户端本地化调试K8s集群环境服务,使得调试流程更为简单,提升应用调试的效率,进而解决了相关技术中对K8s集群中的容器应用进行调试时,需要将本地应用打包成容器镜像后,再将其部署到K8s集群环镜中,导致客户端无法进行本地化应用调试的技术问题。
本公开中,服务端代理将K8s集群中的目标容器服务发现更替为自己,从而将集群流量转向服务端代理进行请求分发给客户端代理,从而实现本地服务代替原来集群中的目标容器服务,接收集群中流向目标容器服务的所有请求,实现本地化的集群联合调试工作。
本公开中,直接通过本地服务接替K8s集群中的目标容器服务的方式进行本地化调试,并且充份利用集群环境的参数,本地无需修改服务参数,从而减少调试流程和提高开发者效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的一种在K8s集群环境进行应用调试方法的流程图;
图2是根据本发明的一种可选的应用调试方法的流程图;
图3是根据本发明实施例的一种可选的基于K8s集群的容器服务调试方法的流程图;
图4是根据本发明实施例的另一种可选的基于K8s集群的容器服务调试方法的流程图;
图5是根据本发明实施例的一种可选的容器服务调试系统架构图;
图6是根据本发明实施例的一种可选的容器服务调试系统交互流程图;
图7是根据本发明实施例的一种可选的基于K8s集群的容器服务调试装置的示意图;
图8是根据本发明实施例的一种基于K8s集群的容器服务调试方法的电子设备(或移动设备)的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于本领域技术人员理解本发明,下面对本发明各实施例中涉及的部分术语或者名词做出解释:
容器编排系统,kubernetes,简称K8S,一个微服务和云原生平台,用于管理云平台中多个主机上的容器化的应用,让部署容器化的应用简单并且高效。
HOST网络模式,容器没有自己的任何独立的网络资源(比如:容器的IP、网卡和端口),完全和宿主机共享网络空间。
Debug代码,计算机网络中用于进行调试和排除故障的代码。
域名系统,Domain Name System,简称DNS,作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
K8s dev-cli为基于K8s集群管理的前端项目而打造的一款轻量级开发脚手架。
容器服务,一种一站式容器生命周期管理平台,提供高性能可伸缩的容器应用管理服务。
Kube-proxy是每个节点上运行着的网络代理。
需要说明的是,本公开中的基于K8s集群的容器服务调试方法及装置可用于网络技术与安全领域在进行应用调试的情况下,也可用于除网络技术与安全领域之外的任意领域在进行应用调试的情况下,本公开中对基于K8s集群的容器服务调试方法及装置的应用领域不做限定。
需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
图2是根据本发明的一种可选的应用调试方法的流程图,如图2所示,本发明实施例的应用调试流程包括:开发者将K8s集群接入本地系统,基于debug代码定位问题,对存在的联调完毕后发布测试,相对于现有技术,不需要将应用镜像打包到镜像仓库,也不需要将应用部署到K8s集群,而是直接使用本地主机上启动的服务,更不需要添加日志进行问题分析,直接在本地通过代码进行debug定位问题,本发明实施例在流程上更为简洁,大大提升了应用测试效率。
本公开中如图2所示的方案,相比于图1所示的现有技术有如下优势:
1.现有技术方案需要先打包应用镜像到镜像仓库,本公开中的方案不需要打包镜像。
2.现有技术方案需要将应用部署到k8s集群中,本公开中的方案可以直接使用本地主机上启动的服务。
3.现有技术方案调试时需要不断地添加日志进行问题分析,本公开中的方案不需要添加日志,可以直接本地代码进行debug定位问题。
4.现有技术方案发布测试的流程很长,本公开中的方案流程很短(节省了至少两个环节的流程)。
本发明可以应用于各种应用调试设备/装置/系统中,应用调试设备/装置/系统可以部署在K8s集群环境中,服务端代理与客户端代理建立长连接,基于长连接将容器服务请求转发到客户端代理,并基于域名信息将其转发到客户端本地系统,从而实现客户端本地化调试K8s集群环境服务,使得调试流程更为简单,提升应用调试的效率。
下面结合各个实施例对本发明进行详细说明。
实施例一
根据本发明实施例,提供了一种基于K8s集群的容器服务调试的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例提供了一种基于K8s集群的容器服务调试方法,该方法应用于K8s集群环境中的服务端代理,服务端代理与客户端主机中部署的客户端代理建立长连接,服务端代理接管K8s集群中的目标容器服务,客户端代理通过长连接获取目标容器服务的域名信息。
可选的,服务端代理与客户端主机中部署的客户端代理建立长连接,包括:在K8s集群中部署服务端代理,并设置指定网络模式,采用指定网络模式在与K8s集群对应的集群主机的主机网络中开启主机服务端口,建立服务端代理与主机服务端口之间的第一网络链接,在客户端主机中部署客户端代理,建立主机服务端口与客户端代理之间的第二网络链接;基于第一网络链接和第二网络链接,建立服务端代理与客户端代理之间的长连接。
需要说明的是,本发明实施例在建立长连接之前,需要在K8s集群空间中创建Service Account(账号),命名为K8sdev Account,K8sdev Account所关连集群角色需要相应的kubernetes API调用权限,其中,本实施例的API调用权限包括但不限于:get(获取),list(记录),watch(查询),delete(删除),update(更新),create(新建)。
然后在K8s集群中以指定网络模式(例如,HOST网络模式)部署服务端代理(以k8sdev-server进行标识),从而在主机网络中开启服务端口,在客户端相应地部署一个客户端代理(以k8sdev-cli进行标识),并在服务端代理与客户端代理之间建立长连接,从而构建出一个可以从主机所在的网络环境访问K8s集群环境的双向网络链路,并由客户端接入该双向网络链路,实现客户端与K8s集群的交互访问。
需要说明的是,在接收容器服务请求之前,需要实现服务端代理接管目标容器服务,为客户端分配可用容器服务,部署在K8s集群中的服务端代理调用API接口获取所有的容器服务,并基于容器状态,获取可用容器服务,并收集所有容器服务的内部DNS解析地址。可选的,K8s集群中每个容器都对应集群内唯一的IP地址,任意两个容器可以直接通信,客户端代理与服务端代理之间建立长连接后,客户端代理可以直接基于长连接获取所需的目标容器服务对应的域名信息,该域名信息包括但不限于:容器名称、容器IP地址,容器状态。
通过上述实施方式,在服务端代理解析服务修改指令后,通过API接口修改指令中目标容器的服务发现,将其服务发现修改为服务端代理自身,从而使得目标容器服务的流量转发到服务端代理中,然后服务端代理将指令执行结果返回到客户端,客户端基于该返回结果得到集群中所有服务发现的DNS信息,基于该信息将所有的IP地址写入本地的HOST文件中,同时这些DNS的目标IP全部指向服务端代理所在主机,并建立起客户端到服务端的全双工通道。
通过打通K8s cni网络和主机网络的通路,构建出一个可以从主机所在的网络环境访问K8s集群环境的双向网络链路。然后在开发者的客户主机(简称开发主机)上部署客户端,由客户端接入上述双向网络链路,实现网络上的客户端与K8s交互访问的能力。开发者客户端通过指令集来接管或卸载K8s集群中的目标服务。最终接管后的的最终结果是构筑起开发者客户机服务代替集群环境中目标服务,从而实现本地的服务在集群中的调试。
图3是根据本发明实施例的一种可选的基于K8s集群的容器服务调试方法的流程图,如图3所示,该方法包括如下步骤:
步骤S301,接收K8s集群中容器节点代理组件转发的容器服务请求,其中,容器服务请求为用户终端向容器节点代理组件发起的,用于向目标容器服务请求对目标应用进行调试;
步骤S302,基于长连接将容器服务请求转发至客户端代理,其中,客户端代理在接收到容器服务请求后,基于域名信息将容器服务请求转发给客户端主机中的本地系统,由本地系统对目标应用进行调试,得到应用调试结果;
步骤S303,接收客户端代理返回的应用调试结果,并将应用调试结果返回至用户终端。
通过上述步骤,先接收K8s集群中容器节点代理组件转发的容器服务请求,然后基于长连接将容器服务请求转发至客户端代理,其中,客户端代理在接收到容器服务请求后,基于域名信息将容器服务请求转发给客户端主机中的本地系统,由本地系统对目标应用进行调试,得到应用调试结果,最后接收客户端代理返回的应用调试结果,并将应用调试结果返回至用户终端。
在本实施例中,服务端代理与客户端之间代理建立长连接,基于长连接将容器服务请求转发到客户端代理,并基于域名信息将其转发到客户端的本地系统,由本地系统对目标应用进行调试,从而实现客户端本地化调试K8s集群环境服务,使得调试流程更为简单,提升应用调试的效率,进而解决了相关技术中对K8s集群中的容器应用进行调试时,需要将本地应用打包成容器镜像后,再将其部署到K8s集群环镜中,导致客户端无法进行本地化应用调试的技术问题。
下面结合上述各实施步骤来详细说明。
可选的,在接收K8s集群中容器节点代理组件转发的容器服务请求之前,还包括:接收客户端代理发送的服务修改指令,其中,服务修改指令至少携带有:目标容器服务的服务标识;响应服务修改指令,调用K8s集群的API接口,通过API接口获取所有容器服务,并采集每个容器服务内部的域名信息;通过K8s集群的API接口将服务标识指示的目标容器服务的服务链接修改为服务端代理,以使服务端代理接管K8s集群中的目标容器服务,得到指令执行结果;将每个容器服务内部的域名信息以及指令执行结果返回至客户端代理。
用户终端(或者开发终端)通过客户端代理(k8sdev-cli)向服务端代理(k8sdev-server)发送接管容器服务指令(用于接管目标容器服务),即服务修改指令后(其中,指令中已指明集群命名空间中需要代理的服务发现名和本地代理端口后),服务端代理会响应服务修改指令,调用K8s集群的API接口根据指令中的目标容器服务和对应端口,将目标容器服务在集群中的的服务链接修改为服务端代理(k8sdev-server)本身,此时所有目标容器服务的流量将全部流向服务端代理(k8sdev-server)进行转发。
另一种可选的,在接收客户端代理发送的服务修改指令之后,还包括:获取服务修改指令中的用户信息,其中,用户信息至少包括:用户名称和用户权限;对服务修改指令中的用户信息进行鉴权,得到鉴权结果,其中,鉴权结果指示是否允许调用K8s集群的API接口。
需要说明的是,用户终端/开发者使用终端通过客户端发送服务修改指令给服务端代理,在接收到该服务修改指令后,获取其中的用户信息,并对用户接入者进行鉴权,只有在该用户的执行权限显示允许调用K8s集群的API接口的情况下才可以继续执行任务,否则返回失败。
步骤S301,接收K8s集群中容器节点代理组件转发的容器服务请求。
需要说明的是,当用户有应用调试需求时,先通过本地的指定网络模式的解析文件,将容器服务请求发送到集群主机,由集群中的容器节点代理组件(以Kube-praxy标识)接收并转发到服务端代理,该容器服务请求包含:目标容器IP地址、本地系统IP地址、请求类型、请求内容。
步骤S302,基于长连接将容器服务请求转发至客户端代理。
本实施例中,客户端代理在接收到容器服务请求后,会基于域名信息将容器服务请求转发给客户端主机中的本地系统,由本地系统对目标应用进行调试,得到应用调试结果。
步骤S303,接收客户端代理返回的应用调试结果,并将应用调试结果返回至用户终端。
需要说明的是,服务端代理将目标服务的流量通过客户端代理与服务端代理建立的长连接,将请求转发给客户端代理,客户端代理接收到转发的请求后,再将请求转发给客户端主机的本地系统,进而启动调试系统对应用进行调试,调试完毕和将调试结果返回至用户终端,并在终端界面发布测试结果。
上述实施方式说明了由服务端代理接管所有容器服务中的目标容器服务后,对所有向该目标容器服务发起的服务请求都进行截流,并将服务请求转发给客户端主机中的本地系统,由客户端主机中的本地系统进行应用调试。
而对于未被服务端主机接管/代替的其他容器服务,下面对集群中的其他容器服务的服务流程进行说明。本实施例中,可选的,容器服务调试方法还包括:接收容器节点代理组件转发的本地服务请求,其中,本地服务请求为客户端主机的本地系统发起的,用于向K8s集群中除目标容器服务之外的指定容器服务请求对指定应用进行调试;响应本地服务请求,调用K8s集群的API接口查询指定容器服务;将本地服务请求转发至指定容器服务,由指定容器服务对指定应用进行调试,得到应用调试结果;接收指定容器服务返回的应用调试结果,并将应用调试结果返回至本地系统。
本地在调用集群中其他容器服务时,先通过本地的hosts文件中的dns解析,将服务请求发送给服务端代理k8sdev-server,服务端代理在接收到本地服务请求后,通过k8s集群的API接口获取该其他容器服务的服务发现信息,将本地服务请求转发给对应的集群其他容器服务,集群中的其他容器服务接收到转发过来的本地服务请求后,处理请求,并返回处理结果,服务端代理接收到集群中其他容器服务返回的处理结果后,再将结果返回给本地系统服务。
通过本实施例,在服务端代理与客户端代理之间建立长连接,从而将客户端与服务端连接起来,基于长连接将容器服务请求转发到客户端代理,并基于域名信息将其转发到客户端主机的本地系统,从而实现客户端本地化调试K8s集群环境服务,使得调试流程更为简单,提升应用调试的效率。
本实施例,可以在K8s集群环境中部署服务端代理(ks8dev-server),在K8s集群环境和服务器本地的网络中打开一个网络链路,客户端主机在本地启动一个客户端代理(k8sdev-cli)与服务端代理(ks8dev-server)建立一个长连接,在此基础上用户终端可以通过客户端代理(k8sdev-cli)向服务端代理(ks8dev-server)发送指令,服务端代理(ks8dev-server)根据指令接替或卸载已接替K8s集群中的某一个或多个目标容器服务。服务端代理(ks8dev-server)通过kubernetes API Server将K8s集群中的目标容器服务的服务链接代理为自己,从而将集群流量转向服务端代理(ks8dev-server)进行请求分发给客户端代理(k8sdev-cli),从而实现本地服务代替原来集群中的目标容器服务,接收集群中流向目标容器服务的所有请求,实现本地化的集群联合调试工作。
企业开发者在K8s集群环境中对微服务进行调试时,将不再需要先将开发者本地应用打包成镜像后部署到K8s集群环境,而是直接通过本地服务接替K8s集群中的服务的方式进行本地化调试,并且充份利用集群环境的参数,本地无需修改服务参数,从而减少调试流程和提高开发者效率。
下面结合另一种可选的实施例来说明本发明。
实施例二
根据本发明实施例,提供了一种基于K8s集群的容器服务调试方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例的基于K8s集群的容器服务调试方法应用于客户端主机中部署的客户端代理,客户端代理与K8s集群环境中部署的服务端代理建立长连接,服务端代理接管K8s集群中的目标容器服务,客户端代理通过长连接获取目标容器服务的域名信息。
图4是根据本发明实施例的另一种可选的基于K8s集群的容器服务调试方法的流程图,如图4所示,该容器服务调试方法包括如下步骤:
步骤S401,基于长连接,接收服务端代理转发的容器服务请求,其中,容器服务请求为用户终端发起的,用于向目标容器服务请求对目标应用进行调试;
该客户端代理与服务端中的服务端代理基于长连接进行通信,从而实现客户端与服务端的通信。可选的,服务端代理与客户端主机中部署的客户端代理建立长连接,包括:在K8s集群中部署服务端代理,并设置指定网络模式,采用指定网络模式在与K8s集群对应的集群主机的主机网络中开启主机服务端口,建立服务端代理与主机服务端口之间的第一网络链接,在客户端主机中部署客户端代理,建立主机服务端口与客户端代理之间的第二网络链接;基于第一网络链接和第二网络链接,建立服务端代理与客户端代理之间的长连接。
需要说明的是,本发明实施例在建立长连接之前,需要在K8s集群空间中创建Service Account(账号),命名为K8sdev Account,K8sdev Account所关连集群角色需要相应的kubernetes API调用权限,其中,本实施例的API调用权限包括但不限于:get(获取),list(记录),watch(查询),delete(删除),update(更新),create(新建)。
需要说明的是,本发明实施例首先在K8s集群中以HOST网络模式部署服务端代理,从而在主机网络中开启服务端口,在客户端相应地部署一个客户端代理,并在服务端代理与客户端代理之间建立长连接,从而构建出一个可以从主机所在的网络环境访问K8s集群环境的双向网络链路,并由客户端接入该双向网络链路,实现客户端与K8s集群的交互访问。
需要说明的是,K8s集群中每个容器都对应集群内唯一的IP地址,任意两个容器可以直接通信,客户端代理与服务端代理之间建立长连接后,客户端代理可以直接基于长连接获取所需的目标容器服务对应的域名信息,该域名信息包括但不限于:容器名称、容器IP地址,容器状态。
需要说明的是,在接收容器服务请求之前,需要实现服务端代理接管目标容器服务,为客户端分配可用容器服务,部署在K8s集群中的服务端代理调用API接口获取所有的容器服务,并基于容器状态,获取可用容器服务,并收集所有容器服务的内部DNS解析地址。
本发明实施例中,在与服务端代理建立长连接后,接收服务端代理发送的指令执行结果,其中,指令执行结果指示通过K8s集群的API接口将目标容器服务的服务链接修改为服务端代理是否成功;在指令执行结果指示修改成功的情况下,将目标容器服务的域名信息中的服务IP地址指向服务端代理。
本发明实施例中,接收服务端代理发送的每个容器服务内部的域名信息;将所有容器服务的域名信息写入本地网络链接文件中,其中,本地网络链接文件用于为客户端主机提供K8s集群中所有容器服务的服务链接;建立客户端主机、客户端代理与服务端代理之间的网络传输双向通道。
需要说明的是,开发者在客户端主机上,通过客户端发送服务修改指令给服务端代理,在接收到该服务修改指令后,获取其中的用户信息,并对用户接入者进行鉴权,只有在该用户的执行权限显示允许调用K8s集群的API接口的情况下才可以继续执行任务,否则返回失败。在服务端代理解析服务修改指令后,通过API接口修改指令中目标容器的服务链接/服务发现,将其服务链接修改为服务端代理,从而使得目标容器服务的流量转发到服务端代理中,然后服务端代理将指令执行结果返回到客户端,客户端基于该返回结果得到集群中所有服务发现的DNS信息,基于该信息将所有的IP地址写入本地的HOST文件中,同时这些域名DNS的目标IP全部指向服务端代理所在主机,并建立起客户端到服务端的全双工通道。
需要说明的是,当用户有应用调试需求时,先通过本地的HOST解析文件,将容器服务请求发送到服务端,由集群中的容器节点代理组件接收并转发到服务端代理,该容器服务请求包含:目标容器IP地址、本地系统IP地址、请求类型、请求内容。
步骤S402,基于域名信息将容器服务请求转发至客户端主机中的本地系统,由本地系统对目标应用进行调试,得到应用调试结果。
步骤S403,将应用调试结果发送至服务端代理,其中,服务端代理将应用调试结果返回至用户终端。
服务端代理将目标容器服务的流量通过客户端代理与服务端代理建立的长连接,将请求转发给客户端代理,客户端代理接收到转发的请求后,再将请求转发给客户端主机的本地系统,进而启动调试系统对应用进行调试,调试完毕和将调试结果返回至用户终端,并在终端界面发布测试结果。
通过上述实施例,在服务端代理与客户端代理之间建立长连接,从而将客户端与服务端连接起来,基于长连接将容器服务请求转发到客户端代理,并基于域名信息将其转发到客户端本地系统,由本地系统对目标应用进行调试,从而实现客户端本地化调试K8s集群环境服务,使得调试流程更为简单,从而实现客户端本地化调试K8s集群环境服务,使得调试流程更为简单,提升应用调试的效率,进而解决了相关技术中对K8s集群中的容器应用进行调试时,需要将本地应用打包成容器镜像后,再将其部署到K8s集群环镜中,导致客户端无法进行本地化应用调试的技术问题。
下面结合另一种可选的实施例来说明本发明。
实施例三
本实施例提供了一种基于K8s集群的容器服务调试系统,图5是根据本发明实施例的一种可选的容器服务调试系统架构图,如图5所示,容器服务调试系统包含两个主体,开发主机(对于上述实施例一的客户端主机)和K8s集群主机,开发主机包含本地DNS和本地系统,以及部署的k8sdev-cli(对应于上述实施例一的客户端代理),K8s集群空间中以HOST网络模式部署k8sdev-server(对应于上述实施例一的服务端代理),并以HOST方式在主机网络中开通主机服务端口,客户端代理与服务端代理之间建立长连接,开发主机的请求文件通过转发节点Kube-proxy转发进入K8s集群网络,在转发请求给目标容器服务时,请求会被k8s-server服务接收,然后调用主机服务端口(部署于主机网络中,在主机网络中开辟一个关联集群主机中关联服务端代理k8sdev-server的服务端口,即图5中k8sdev-server的主机服务端口)将请求转发给k8sdev-cli,再转发给开发主机中的本地系统。
在K8s网络中部署的容器服务可能有多种,如图5所示,其展示了集群容器服务(可对应于上述实施例一所示的除目标容器服务之外的其他容器服务)和目标容器服务,该目标容器服务的服务链接/服务发现被k8sdev-server接管,所有发向k8sdev-server的请求,都会由k8sdev-server转发至开发主机的k8sdev-cli,由k8sdev-cli将请求转发至本地系统。
其中,k8sdev-server与k8sdev-cli直接建立长连接和请求转发的具体部署步骤如下:
1、在K8s集群空间中创建Service Account(账号),命名为K8sdev Account,K8sdev Account所关连集群角色需要相应的kubernetes API调用权限,权限包括:get,list,watch,delete,update,create。
2、在K8s集群空间中部署k8sdev-server,设定网络模式为HOST,并给服务端ks8dev-server赋予Service Account为K8sdev Account。
3、在客户主机上安装k8sdev-cli,指定k8sdev-server,并建立长连接。
4、用户终端通过k8sdev-cli向k8sdev-server发送接管容器服务指令,指令指明集群命名空间中需要代理的服务发现名和本地代理端口后,k8sdev-server根据指令中的目标服务和对应端口,将目标服务在集群中的服务发现通过kubernetes API更改为k8sdev-server本身,此时所有目标容器服务的流量将全部流向k8sdev-server进行转发。
图6是根据本发明实施例的一种可选的容器服务调试系统交互流程图,如图6所示,该容器服务调试系统包括:客户端用户、客户端主机、K8s dev-server、K8s集群代以及K8s集群五个模块,其交互流程包括:
该交互流程包括三个部分,第一部分为本地服务接管集群目标服务的流程,对应于图中S601-S610,第二部分为本地系统接管集群目标服务后调用集群其他服务流程,对应于图中S611-S616,第三部分为普通集群用访问被接管的目标服务,对应于图中S617-S623,下面进行详细说明:
第一部分,本地服务接管集群目标服务的流程。
S601,客户端用户在客户端主机上通过K8s dev-cli向k8sdev-server发送指令(发送接管容器服务指令);
S602,k8sdev-server对用户接入者进行鉴权和解析,鉴权通过时继续执行,否则返回失败;
S603,k8sdev-server调用API接口获取K8s集群空间中所有容器服务,并收集所有容器服务的内部DNS解析地址;
S604,k8s集群向k8sdev-server返回所有容器服务;
S605,k8sdev-server确认容器服务结果并发起容器服务修改指令;
S606,k8sdev-server向K8s集群请求修改容器服务为k8sdev-server;
S607,K8s集群端修改目标容器服务的服务发现/服务链接为k8sdev-server;
S608,K8s集群向k8sdev-server返回修改结果;
S609,k8sdev-server向K8s dev-cli返回指令执行结果;
S610,修改本地HOST并创建通道;
K8s dev-cli接收到执行结果后,从返回的结果中得到集群中所有的容器服务DNS信息,将所有的解析地址写入本地的hosts文件中,同时这些DNS的目标IP全部指向k8sdev-server所在主机,建立起客户端k8sdev-cli到服务端k8sdev-server的全双工通道。
第二部分,本地系统接管集群目标服务后调用集群其他服务流程。
S611,客户端主机的本地系统调用其他集群服务(非目标容器服务,未被k8sdev-server接管),k8sdev-cli生成服务请求到k8sdev-server;
S612,k8sdev-server转发服务请求,k8sdev-server接收到请求后,根据通过API接口获取的服务发现信息,将请求转发给对应的K8s集群其他应用。
S613,集群中的目标服务接收到转发请求后,处理请求,进行集群调用;
S614,K8s集群向k8sdev-server返回服务请求结果;
S615,k8sdev-server进行代理处理;
S616,k8sdev-server将结果返回给k8sdev-cli。
第三部分,普通集群用户访问被接管的目标容器服务,由于此时该目标容器服务被k8sdev-server接管,因此,所有流向该目标容器服务的请求都会转发给k8sdev-server。
S617,客户端用户向k8s集群代理发送用户请求;
S618,K8s集群代理根据修改的容器服务转发请求;
S619,K8s集群代理向k8sdev-server转发请求;
S620,k8sdev-server向k8sdev-cli转发请求;
S621,k8sdev-cli服务接收到转发的请求后,再将请求转发给本地启动的调试系统进行应用调试,返回处理结果给k8sdev-server;
S622,k8sdev-server返回处理结果到K8s集群代理;
S623,K8s集群代理返回处理结果给客户端用户。
上述容器服务调试系统,在服务端代理与客户端代理之间建立长连接,从而将客户端与服务端连接起来,基于长连接将容器服务请求转发到客户端代理,并基于域名信息将其转发到客户端本地系统,从而实现客户端本地化调试K8s集群环境服务,使得调试流程更为简单,提升应用调试的效率。
本实施例,通过打通K8s cni网络和主机网络的通路,构建出一个可以从主机所在的网络环境访问K8s集群环境的双向网络链路。然后在开发者的客户主机(简称开发主机)上部署客户端,由客户端接入上述双向网络链路,实现网络上的客户端与K8s交互访问的能力。开发者客户端通过指令集来接管或卸载K8s集群中的目标容器服务,最终接管后的的最终结果是构筑起开发者客户机服务代替集群环境中目标容器服务,从而实现本地的服务在集群中的调试。
下面结合另一种可选的实施例来说明本发明。
实施例四
本实施例提供了一种基于K8s集群的容器服务调试装置,该基于K8s集群的容器服务调试装置所包含的各个实施单元对应于实施例一中的各个实施步骤。
图7是根据本发明实施例的一种可选的基于K8s集群的容器服务调试装置的示意图,如图7所示,该容器服务调试装置包括:第一接收单元71、第一转发单元72、第一返回单元73,其中,
第一接收单元71,用于接收K8s集群中容器节点代理组件转发的容器服务请求,其中,容器服务请求为用户终端向容器节点代理组件发起的,用于向目标容器服务请求对目标应用进行调试;
第一转发单元72,用于基于长连接将容器服务请求转发至客户端代理,其中,客户端代理在接收到容器服务请求后,基于域名信息将容器服务请求转发给客户端主机中的本地系统,由本地系统对目标应用进行调试,得到应用调试结果;
第一返回单元73,用于接收客户端代理返回的应用调试结果,并将应用调试结果返回至用户终端。
上述基于K8s集群的容器服务调试装置,通过第一接收单元71接收K8s集群中容器节点代理组件转发的容器服务请求,其中,容器服务请求为用户终端向容器节点代理组件发起的,用于向目标容器服务请求对目标应用进行调试;通过第一转发单元72基于长连接将容器服务请求转发至客户端代理,其中,客户端代理在接收到容器服务请求后,基于域名信息将容器服务请求转发给客户端主机中的本地系统,由本地系统对目标应用进行调试,得到应用调试结果;通过第一返回单元73接收客户端代理返回的应用调试结果,并将应用调试结果返回至用户终端。
在本实施例中,服务端代理与客户端之间代理建立长连接,基于长连接将容器服务请求转发到客户端代理,并基于域名信息将其转发到客户端的本地系统,由本地系统对目标应用进行调试,从而实现客户端本地化调试K8s集群环境服务,使得调试流程更为简单,提升应用调试的效率,进而解决了相关技术中对K8s集群中的容器应用进行调试时,需要将本地应用打包成容器镜像后,再将其部署到K8s集群环镜中,导致客户端无法进行本地化应用调试的技术问题。
可选地,基于K8s集群的容器服务调试装置还包括:第一部署模块,用于在K8s集群中部署服务端代理,并设置指定网络模式;第一开启模块,用于采用指定网络模式在与K8s集群对应的集群主机的主机网络中开启主机服务端口;第一建立模块,用于建立服务端代理与主机服务端口之间的第一网络链接;第二部署模块,用于在客户端主机中部署客户端代理;第二建立模块,用于建立主机服务端口与客户端代理之间的第二网络链接;第三建立模块,用于基于第一网络链接和第二网络链接,建立服务端代理与客户端代理之间的长连接。
可选地,基于K8s集群的容器服务调试装置还包括:第一接收模块,用于接收客户端代理发送的服务修改指令,其中,服务修改指令至少携带有:目标容器服务的服务标识;第一响应模块,用于响应服务修改指令,调用K8s集群的API接口,通过API接口获取所有容器服务,并采集每个容器服务内部的域名信息;第一修改模块,用于通过K8s集群的API接口将服务标识指示的目标容器服务的服务链接修改为服务端代理,以使服务端代理接管K8s集群中的目标容器服务,得到指令执行结果;第一返回模块,用于将每个容器服务内部的域名信息以及指令执行结果返回至客户端代理。
可选地,基于K8s集群的容器服务调试装置还包括:第一获取模块,用于获取服务修改指令中的用户信息,其中,用户信息至少包括:用户名称和用户权限;第一鉴权模块,用于对服务修改指令中的用户信息进行鉴权,得到鉴权结果,其中,鉴权结果指示是否允许调用K8s集群的API接口。
可选地,基于K8s集群的容器服务调试装置还包括:第二接收模块,用于接收容器节点代理组件转发的本地服务请求,其中,本地服务请求为客户端主机的本地系统发起的,用于向K8s集群中除目标容器服务之外的指定容器服务请求对指定应用进行调试;第一响应模块,用于响应本地服务请求,调用K8s集群的API接口查询指定容器服务;第一转发模块,用于将本地服务请求转发至指定容器服务,由指定容器服务对指定应用进行调试,得到应用调试结果;第三接收模块,用于接收指定容器服务返回的应用调试结果,并将应用调试结果返回至本地系统。
根据本发明实施例的另一方面,还提供了一种基于K8s集群的容器服务调试装置,应用于客户端主机中部署的客户端代理,客户端代理与K8s集群环境中部署的服务端代理建立长连接,服务端代理接管K8s集群中的目标容器服务,客户端代理通过长连接获取目标容器服务的域名信息,容器服务调试装置包括:第二接收单元,基于长连接,接收服务端代理转发的容器服务请求,其中,容器服务请求为用户终端发起的,用于向目标容器服务请求对目标应用进行调试;第二转发单元,用于基于域名信息将容器服务请求转发至客户端主机中的本地系统,由本地系统对目标应用进行调试,得到应用调试结果;第二返回单元,用于将应用调试结果发送至服务端代理,其中,服务端代理将应用调试结果返回至用户终端。
可选地,基于K8s集群的容器服务调试装置还包括:第四接收模块,用于在与服务端代理建立长连接后,接收服务端代理发送的指令执行结果,其中,指令执行结果指示通过K8s集群的API接口将目标容器服务的服务链接修改为服务端代理是否成功;第一指向模块,用于在指令执行结果指示修改成功的情况下,将目标容器服务的域名信息中的服务IP地址指向服务端代理。
可选地,基于K8s集群的容器服务调试装置还包括:第五接收模块,用于接收服务端代理发送的每个容器服务内部的域名信息;第一写入模块,用于将所有容器服务的域名信息写入本地网络链接文件中,其中,本地网络链接文件用于为客户端主机提供K8s集群中所有容器服务的服务链接;第一建立模块,用于建立客户端主机、客户端代理与服务端代理之间的网络传输双向通道。
上述的基于K8s集群的容器服务调试装置还可以包括处理器和存储器,上述第一接收单元71、第一转发单元72、第一返回单元73等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数对应用进行调试。
上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述任意一项基于K8s集群的容器服务调试方法。
根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述任意一项基于K8s集群的容器服务调试方法。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:接收K8s集群中容器节点代理组件转发的容器服务请求,其中,容器服务请求为用户终端向容器节点代理组件发起的,用于向目标容器服务请求对目标应用进行调试;基于长连接将容器服务请求转发至客户端代理,其中,客户端代理在接收到容器服务请求后,基于域名信息将容器服务请求转发给客户端主机中的本地系统,由本地系统对目标应用进行调试,得到应用调试结果;接收客户端代理返回的应用调试结果,并将应用调试结果返回至用户终端。
图8是根据本发明实施例的一种基于K8s集群的容器服务调试方法的电子设备(或移动设备)的硬件结构框图。如图8所示,电子设备可以包括一个或多个(图中采用802a、802b,……,802n来示出)处理器802(处理器802可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器804。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、键盘、电源和/或相机。本领域普通技术人员可以理解,图8所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备还可包括比图8中所示更多或者更少的组件,或者具有与图8所示不同的配置。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (11)
1.一种基于K8s集群的容器服务调试方法,其特征在于,应用于K8s集群环境中的服务端代理,所述服务端代理与客户端主机中部署的客户端代理建立长连接,所述服务端代理接管K8s集群中的目标容器服务,所述客户端代理通过所述长连接获取所述目标容器服务的域名信息,容器服务调试方法包括:
接收所述K8s集群中容器节点代理组件转发的容器服务请求,其中,所述容器服务请求为用户终端向所述容器节点代理组件发起的,用于向所述目标容器服务请求对目标应用进行调试;
基于所述长连接将所述容器服务请求转发至所述客户端代理,其中,所述客户端代理在接收到所述容器服务请求后,基于所述域名信息将所述容器服务请求转发给所述客户端主机中的本地系统,由所述本地系统对所述目标应用进行调试,得到应用调试结果;
接收所述客户端代理返回的所述应用调试结果,并将所述应用调试结果返回至所述用户终端。
2.根据权利要求1所述的容器服务调试方法,其特征在于,所述服务端代理与客户端主机中部署的客户端代理建立长连接,包括:
在所述K8s集群中部署所述服务端代理,并设置指定网络模式;
采用所述指定网络模式在与所述K8s集群对应的集群主机的主机网络中开启主机服务端口;
建立所述服务端代理与所述主机服务端口之间的第一网络链接;
在所述客户端主机中部署所述客户端代理;
建立所述主机服务端口与所述客户端代理之间的第二网络链接;
基于所述第一网络链接和所述第二网络链接,建立所述服务端代理与所述客户端代理之间的长连接。
3.根据权利要求1所述的容器服务调试方法,其特征在于,在接收所述K8s集群中容器节点代理组件转发的容器服务请求之前,还包括:
接收所述客户端代理发送的服务修改指令,其中,所述服务修改指令至少携带有:所述目标容器服务的服务标识;
响应所述服务修改指令,调用所述K8s集群的API接口,通过所述API接口获取所有容器服务,并采集每个所述容器服务内部的域名信息;
通过所述K8s集群的API接口将所述服务标识指示的所述目标容器服务的服务链接修改为所述服务端代理,以使所述服务端代理接管所述K8s集群中的目标容器服务,得到指令执行结果;
将每个所述容器服务内部的域名信息以及所述指令执行结果返回至所述客户端代理。
4.根据权利要求3所述的容器服务调试方法,其特征在于,在接收所述客户端代理发送的服务修改指令之后,还包括:
获取所述服务修改指令中的用户信息,其中,所述用户信息至少包括:用户名称和用户权限;
对所述服务修改指令中的用户信息进行鉴权,得到鉴权结果,其中,所述鉴权结果指示是否允许调用所述K8s集群的API接口。
5.根据权利要求1所述的容器服务调试方法,其特征在于,还包括:
接收所述容器节点代理组件转发的本地服务请求,其中,所述本地服务请求为所述客户端主机的本地系统发起的,用于向所述K8s集群中除所述目标容器服务之外的指定容器服务请求对指定应用进行调试;
响应所述本地服务请求,调用所述K8s集群的API接口查询所述指定容器服务;
将所述本地服务请求转发至所述指定容器服务,由所述指定容器服务对所述指定应用进行调试,得到应用调试结果;
接收所述指定容器服务返回的应用调试结果,并将所述应用调试结果返回至所述本地系统。
6.一种基于K8s集群的容器服务调试方法,其特征在于,应用于客户端主机中部署的客户端代理,所述客户端代理与K8s集群环境中部署的服务端代理建立长连接,所述服务端代理接管所述K8s集群中的目标容器服务,所述客户端代理通过所述长连接获取所述目标容器服务的域名信息,容器服务调试方法包括:
基于所述长连接,接收所述服务端代理转发的容器服务请求,其中,所述容器服务请求为用户终端发起的,用于向所述目标容器服务请求对目标应用进行调试;
基于所述域名信息将所述容器服务请求转发至所述客户端主机中的本地系统,由所述本地系统对所述目标应用进行调试,得到应用调试结果;
将所述应用调试结果发送至所述服务端代理,其中,所述服务端代理将所述应用调试结果返回至所述用户终端。
7.根据权利要求6所述的容器服务调试方法,其特征在于,还包括:
在与所述服务端代理建立长连接后,接收所述服务端代理发送的指令执行结果,其中,所述指令执行结果指示通过所述K8s集群的API接口将所述目标容器服务的服务链接修改为所述服务端代理是否成功;
在所述指令执行结果指示修改成功的情况下,将所述目标容器服务的域名信息中的服务IP地址指向所述服务端代理。
8.根据权利要求6所述的容器服务调试方法,其特征在于,还包括:
接收所述服务端代理发送的每个所述容器服务内部的域名信息;
将所有所述容器服务的域名信息写入本地网络链接文件中,其中,所述本地网络链接文件用于为所述客户端主机提供所述K8s集群中所有容器服务的服务链接;
建立所述客户端主机、所述客户端代理与所述服务端代理之间的网络传输双向通道。
9.一种基于K8s集群的容器服务调试装置,其特征在于,应用于K8s集群环境中的服务端代理,所述服务端代理与客户端主机中部署的客户端代理建立长连接,所述服务端代理接管K8s集群中的目标容器服务,所述客户端代理通过所述长连接获取所述目标容器服务的域名信息,容器服务调试装置包括:
第一接收单元,用于接收所述K8s集群中容器节点代理组件转发的容器服务请求,其中,所述容器服务请求为用户终端向所述容器节点代理组件发起的,用于向所述目标容器服务请求对目标应用进行调试;
第一转发单元,用于基于所述长连接将所述容器服务请求转发至所述客户端代理,其中,所述客户端代理在接收到所述容器服务请求后,基于所述域名信息将所述容器服务请求转发给所述客户端主机中的本地系统,由所述本地系统对所述目标应用进行调试,得到应用调试结果;
第一返回单元,用于接收所述客户端代理返回的所述应用调试结果,并将所述应用调试结果返回至所述用户终端。
10.一种计算机可读存储介质,其特征在于,计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至8中任意一项所述的基于K8s集群的容器服务调试方法。
11.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至8中任意一项所述的基于K8s集群的容器服务调试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697772.6A CN116132344A (zh) | 2022-12-28 | 2022-12-28 | 基于K8s集群的容器服务调试方法及装置、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697772.6A CN116132344A (zh) | 2022-12-28 | 2022-12-28 | 基于K8s集群的容器服务调试方法及装置、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116132344A true CN116132344A (zh) | 2023-05-16 |
Family
ID=86294945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211697772.6A Pending CN116132344A (zh) | 2022-12-28 | 2022-12-28 | 基于K8s集群的容器服务调试方法及装置、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116132344A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117376105A (zh) * | 2023-09-15 | 2024-01-09 | 珠海横琴悠租云科技有限公司 | 应用诊断方法、装置、设备及计算机可读存储介质 |
-
2022
- 2022-12-28 CN CN202211697772.6A patent/CN116132344A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117376105A (zh) * | 2023-09-15 | 2024-01-09 | 珠海横琴悠租云科技有限公司 | 应用诊断方法、装置、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10341468B2 (en) | System and method for managing communications between a portable data terminal and a server | |
US11233826B2 (en) | System and method of microservice-based application deployment with automating authorization configuration | |
CN113206763B (zh) | 一种适应于物联管理平台的仿真测试系统及方法 | |
CN105808320A (zh) | 基于Linux容器的设备虚拟化系统及方法 | |
JP2022536108A (ja) | リモートソフトウェアアプリケーションのワークフローへの統合 | |
CN114500623B (zh) | 网络靶场互联互通方法、装置、设备及可读存储介质 | |
WO2019085290A1 (zh) | 测试前置实现方法、装置、终端设备及存储介质 | |
CN108881111A (zh) | 一种实现多租户系统的方法及装置 | |
CN113574845A (zh) | 内部和外部调试 | |
CN112311783A (zh) | 一种认证反向代理方法及系统 | |
CN116132344A (zh) | 基于K8s集群的容器服务调试方法及装置、电子设备 | |
CN111104336A (zh) | 一种基于容器和vnc的服务接口在线测试方法及装置 | |
CN111447273B (zh) | 云处理系统及基于云处理系统的数据处理方法 | |
CN111581576A (zh) | 基于微服务的开发处理方法、装置及存储介质 | |
CN109445960A (zh) | 应用的路由方法、装置及存储介质 | |
CN102546300A (zh) | 测试系统及操作域设备 | |
CN113918215A (zh) | 一种微服务配置系统、设备及介质 | |
Reile et al. | Bunk8s: Enabling Easy Integration Testing of Microservices in Kubernetes | |
CN105005716A (zh) | 一种应用程序远程交付系统及远程交付方法 | |
CN105700896B (zh) | 一种App的启动方法和设备 | |
US11907731B1 (en) | Configurable cloud development environments | |
US10680905B1 (en) | Application help desk | |
CN114168179B (zh) | 微服务管理方法、装置、计算机设备和存储介质 | |
CN108737214A (zh) | 测试方法及系统 | |
Volodarsky et al. | Internet information services (IIS) 7.0 resource kit |
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 |