一种基于Kubernetes的容器环境变量查看方法与流程

文档序号:19906179发布日期:2020-02-11 14:31阅读:540来源:国知局
一种基于Kubernetes的容器环境变量查看方法与流程

本发明涉及容器与虚拟化技术领域,特别是涉及一种基于kubernetes的容器环境变量查看方法、装置、设备以及计算机可读存储介质。



背景技术:

容器技术与虚拟化技术已经成为一种被大家广泛认可的容器技术服务器资源共享方式,容器技术可以在按需构建容器技术操作系统实例的过程当中为系统管理员提供极大的灵活性。

docker为一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的linux或windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。docker实际上为容器技术的一种实现方式,即容器引擎。docker的基本功能为创建,删除,配置,启动容器。这里每个容器都依赖一个镜像,即,docker使用镜像创建容器。且docker只能对应单个主机。

kubernetes(简称k8s)为google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

在k8s中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。k8s中的最小资源单位是pod,一个pod中可以有一个或多个容器。k8s可以在一个集群上管理容器,包括创建,删除,维护容器等,同时维护这些容器的网络等等。

k8s目前创建容器时可以为容器添加新的环境变量,但是无法查询到容器中其他的环境变量。这在某些业务场景下就会引入其他的方式去查询容器中的环境变量,这就带了新的复杂度。例如查询容器所使用的gpu_id。使用传统方式为调用docker命令,即在业务层添加docker相关操作框架,增加了代码复杂度;此时服务器还需要打开dockerapi服务的端口,降低了安全性。

综上所述可以看出,如何提高使用kubernetes查询容器环境变量的速度是目前有待解决的问题。



技术实现要素:

本发明的目的是提供一种基于kubernetes的容器环境变量查看方法、装置、设备以及计算机可读存储介质,以解决现有技术中使用kubernetes无法直接查询到容器的环境变量,且查询过程复杂、安全性低的问题。

为解决上述技术问题,本发明提供一种基于kubernetes的容器环境变量查看方法,应用于kubernetes,包括:接收并存储kubelet组件上传的节点中处于运行状态的容器的环境变量文件至指定文件目录;接收到用户发送的pod信息查询请求时,运行查询pod详情命令,返回与所述pod信息查询请求对应的目标pod信息的同时,查询所述指定文件目录下是否存在所述目标pod中容器的环境变量文件;若所述指定文件目录下存在所述目标pod中容器的环境变量文件,则将所述目标pod中容器的环境变量文件返回并显示至所述用户。

优选地,所述接收并存储kubelet组件上传的节点中处于运行状态的容器的环境变量文件至指定文件目录前包括:

定时接收所述kubelet组件发送的所述节点上容器的运行状态信息;

检测所述运行状态信息中是否存在容器的环境变量文件,若所述运行状态信息中存在所述容器的环境变量文件,则将所述容器的环境变量文件存储至所述指定文件目录。

优选地,所述接收并存储kubelet组件上传的节点中处于运行状态的容器的环境变量文件至指定文件目录前包括:

所述kubelet组件在定时扫描所述节点上容器的运行状态时,调用docker底层命令采集所述节点中处于运行状态的容器的环境变量文件,并将所述处于运行状态的容器的环境变量文件发送至所述kubernetes。

优选地,所述kubelet组件在定时扫描所述节点上容器的运行状态时,调用docker底层命令采集所述节点中处于运行状态的容器的环境变量文件包括:

所述kubelet组件在扫描所述节点上每个容器的运行状态时,获取所述每个容器在所述节点上的id,并在所述节点上运行docker底层命令;

若运行报错,则所述kubelet组件得到操作系统的stdout为空的返回信息;

若运行未报错,则所述kubelet组件得到所述操作系统的stdout中所述处于运行状态的容器的环境变量文件。

优选地,所述将所述处于运行状态的容器的环境变量文件发送至所述kubernetes后还包括:

所述kubelet组件对所述指定文件目录下的环境变量文件对应的容器状态进行检测;

当检测到当前环境变量文件对应的容器已被删除或不处于运行状态时,所述kubelet组件删除所述当前环境变量文件。

本发明还提供了一种基于kubernetes的容器环境变量查看装置,应用于kubernetes,包括:

存储模块,用于接收并存储kubelet组件上传的节点中处于运行状态的容器的环境变量文件至指定文件目录;

查询模块,用于接收到用户发送的pod信息查询请求时,运行查询pod详情命令,返回与所述pod信息查询请求对应的目标pod信息的同时,查询所述指定文件目录下是否存在所述目标pod中容器的环境变量文件;

返回模块,用于若所述指定文件目录下存在所述目标pod中容器的环境变量文件,则将所述目标pod中容器的环境变量文件返回并显示至所述用户。

优选地,还包括:接收模块,用于在所述存储模块执行所述接收并存储kubelet组件上传的节点中处于运行状态的容器的环境变量文件至指定文件目录的步骤之前,定时接收所述kubelet组件发送的所述节点上容器的运行状态信息;

检测模块,用于检测所述运行状态信息中是否存在容器的环境变量文件若所述运行状态信息中存在所述容器的环境变量文件,则将所述容器的环境变量文件存储至所述指定文件目录。

优选地,还包括:所述kubelet组件的扫描模块,用于在所述存储模块执行所述接收并存储kubelet组件上传的节点中处于运行状态的容器的环境变量文件至指定文件目录的步骤之前,在定时扫描所述节点上容器的运行状态时,调用docker底层命令采集所述节点中处于运行状态的容器的环境变量文件,并将所述处于运行状态的容器的环境变量文件发送至所述kubernetes。

本发明还提供了一种基于kubernetes的容器环境变量查看设备,包括:

存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种基于kubernetes的容器环境变量查看方法的步骤。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于kubernetes的容器环境变量查看方法的步骤。

本发明所提供的基于kubernetes的容器环境变量查看方法,利用kubernetes的kubelet组件采集节点中处于运行状态的容器的环境变量文件,并将所述处于运行状态的容器的环境变量文件上传至所述kubernetes。所述kubernetes存储所述节点中处于运行状态的容器的环境变量文件至指定文件目录。当所述kubernetes接收到用户发送的pod查询请求时,运行查询pod详情指令,返回对应的目标pod信息的同时,查询所述指定文件目录下是否存在所述目标pod中容器的环境变量文件;若存在,则将所述目标pod中容器的环境变量文件返回并显示至所述用户。本发明针对kubernetes的查询pod详情命令做拓展,在原有查询结果的基础上同时显示容器中所有环境变量,降低了容器环境变量查询的复杂度,且不需要额外端口,框架。同时kubernetes查询与底层获取为异步操作,减少延迟,提升了使用kubernetes查询节点容器的环境变量的速度。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明所提供的基于kubernetes的容器环境变量查看方法的第一种具体实施例的流程图;

图2为本发明所提供的基于kubernetes的容器环境变量查看方法的第二种具体实施例的流程图;

图3为本发明实施例提供的一种基于kubernetes的容器环境变量查看装置的结构框图。

具体实施方式

本发明的核心是提供一种基于kubernetes的容器环境变量查看方法、装置、设备以及计算机可读存储介质,提高了使用kubernetes查询节点容器环境变量的速度。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明所提供的基于kubernetes的容器环境变量查看方法的第一种具体实施例的流程图。本实施例应用于kubernetes,具体操作步骤如下:

步骤s101:接收并存储kubelet组件上传的节点中处于运行状态的容器的环境变量文件至指定文件目录;

步骤s102:接收到用户发送的pod信息查询请求时,运行查询pod详情命令,返回与所述pod信息查询请求对应的目标pod信息的同时,查询所述指定文件目录下是否存在所述目标pod中容器的环境变量文件;

步骤s103:若所述指定文件目录下存在所述目标pod中容器的环境变量文件,则将所述目标pod中容器的环境变量文件返回并显示至所述用户。

本实施例所提供的方法,在kubelet组件监控节点中所有容器的运行状态时,同时查询运行中容器中的环境变量,并将容器环境文件保存至kubernetes的指定文件目录,以供用户查询使用。当所述kubernetes接收到用户发送的pod查询请求时,调用k8s的查询pod详情命令,返回相应的pod信息的同时,在指定文件目录中查询是否存在相对应的pod中容器的环境变量文件,若存在则一并向用户展示所述容器的环境变量文件。本实施例仅针对k8s的查询pod详情命令作了拓展,使其在原有查询结果的基础上同时显示容器中所有环境变量,并且不需要额外端口,框架。同时k8s查询与底层获取为异步操作,减少延迟,提高了容器环境变量信息查询的速度。

基于上述实施例,在本实施例中,在kubernetes接收并存储kubelet组件上传的节点中处于运行状态的容器的环境变量文件前,所述kubelet组件在定时扫描所述节点上容器的运行状态时,调用docker底层命令采集所述节点中处于运行状态的容器的环境变量文件。

请参考图2,图2为本发明所提供的基于kubernetes的容器环境变量查看方法的第二种具体实施例的流程图。本实施例应用于kubernetes,具体操作步骤如下:

步骤s201:在kubernetes的kubelet组件定时扫描节点上容器的运行状态时,利用所述kubelet组件调用docker底层命令采集所述节点中处于运行状态的容器的环境变量文件,以便所述kubelet组件将所述处于运行状态的容器的环境变量文件发送至所述kubernetes;

在本实施例中,在所述kubelet组件扫描所述节点上每个容器的状态时,可以获取所述每个容器在所述节点上的id,此时在所述节点上运行docker底层命令:dockerexec{container_id}env,若没有报错,则会得到操作系统的stdout的返回;若报错则stdout中为空。如果stdout不为空则将采集到的容器运行状态信息与容器环境变量信息全部上传给kubernetes。

步骤s202:定时接收所述kubelet组件发送的所述节点上容器的运行状态信息;

步骤s203:检测所述运行状态信息中是否存在容器的环境变量文件;

步骤s204:若所述运行状态信息中存在所述容器的环境变量文件,则将所述容器的环境变量文件存储至指定文件目录;

所述kubernetes定时接受来自集群所有节点中的kubelet组件发送的节点容器运行状态信息,本实施例在原有操作的基础上,添加了检测返回信息中否有容器环境变量相关信息的步骤。

若返回信息中没有容器环境变量相关信息则跳过;若返回信息中存在容器环境变量相关信息,则将这些信息记录在所述指定文件目录下的文件中。例如文件目录:/container_env/{node}/{container_id}.env中;其中,node表示当前容器信息来自哪个节点,{container_id}.env表示用当前容器id命名这个文件,后缀任意。

步骤s205:接收到用户发送的pod信息查询请求时,运行查询pod详情命令,返回与所述pod信息查询请求对应的目标pod信息的同时,查询所述指定文件目录下是否存在所述目标pod中容器的环境变量文件;

步骤s206:若所述指定文件目录下存在所述目标pod中容器的环境变量文件,则将所述目标pod中容器的环境变量文件返回并显示至所述用户;

在运行查询pod详情命令时,kubernetes可以获得容器所在节点与容器id,同时查询相应的容器环境变量文件/container_env/{node}/{container_id}.env是否存在,如果存在,则将将所容器环境变量一并向用户展示,没有则跳过。

步骤s207:利用所述kubelet组件对所述指定文件目录下的环境变量文件对应的容器状态进行检测;

步骤s208:当检测到当前环境变量文件对应的容器已被删除或不处于运行状态时,删除所述当前环境变量文件。

所述kubelet组件扫描容器状态,并上报后,对比/container_env相应节点的容器环境变量文件,若容器状态不为运行中,或容器已不存在,则清除对应环境变量文件。即所述kubernetes检测到某个容器被删除或者不处于运行状态时,删除/container_env下的对应文件。

本实施例所提供的方法,在kubelet组件在完成上报后,还可以对所述指定文件目录下的环境变量文件对应的容器状态进行检测,当检测到当前环境变量文件对应的容器已被删除或不处于运行状态时,删除所述当前环境变量文件。

本发明实施例拓展了kubernetes的功能,使得kubernetes可以适应更多的业务使用场景,同时提升了使用k8s查询容器环境变量的速度,在业务层简化了相应代码。

请参考图3,图3为本发明实施例提供的一种基于kubernetes的容器环境变量查看装置的结构框图。本实施例应用于kubernetes,具体装置可以包括:

存储模块100,用于接收并存储kubelet组件上传的节点中处于运行状态的容器的环境变量文件至指定文件目录;

查询模块200,用于接收到用户发送的pod信息查询请求时,运行查询pod详情命令,返回与所述pod信息查询请求对应的目标pod信息的同时,查询所述指定文件目录下是否存在所述目标pod中容器的环境变量文件;

返回模块300,用于若所述指定文件目录下存在所述目标pod中容器的环境变量文件,则将所述目标pod中容器的环境变量文件返回并显示至所述用户。

本实施例的基于kubernetes的容器环境变量查看装置用于实现前述的基于kubernetes的容器环境变量查看方法,因此基于kubernetes的容器环境变量查看装置中的具体实施方式可见前文中的基于kubernetes的容器环境变量查看方法的实施例部分,例如,存储模块100,查询模块200,返回模块300,分别用于实现上述基于kubernetes的容器环境变量查看方法中步骤s101,s102和s103,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。

本发明具体实施例还提供了一种基于kubernetes的容器环境变量查看设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种基于kubernetes的容器环境变量查看方法的步骤。

本发明具体实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于kubernetes的容器环境变量查看方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的基于kubernetes的容器环境变量查看方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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