容器登录系统、方法、服务器及存储介质
技术领域
本发明涉及互联网技术领域,尤其涉及一种容器登录系统、方法、服务器及存储介质。
背景技术
Kubernetes,属于一个开源的容器集群管理调度系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。随着容器技术的不断发展,通常会基于Kubernetes构建容器管理平台。当应用部署到容器管理平台管控的某个用户容器上时,开发人员需要登录至该用户容器,从而可以查看该应用的运行情况,进行故障诊断、上传和下载文件等操作,因此目前对于登录至容器管理平台管控的某个用户容器存在强烈的需求。
相关技术中,在容器管理平台管控的某个用户容器中安装并启动ssh(SecureShell,安全外壳协议)server服务,可以为该用户容器生成唯一IP地址,将用户容器的IP地址与用户的关联关系添加至堡垒机中,用户通过ssh登录至堡垒机,可以根据用户容器的IP地址与用户的关联关系,查看用户拥有权限的用户容器的IP地址,从而可以登录至该用户容器的IP地址对应的用户容器中。
用户容器中的容器镜像遵循最小粒度的原则,一般在容器管理平台管控的某个用户容器中仅运行一个进程,由于需要在容器管理平台管控的某个用户容器中额外安装并启动ssh server服务,如此用户才可以登录至该用户容器中,这样对该用户容器中的容器镜像造成比较大的侵入,提高用户使用容器的门槛和成本。
发明内容
本发明实施例的目的在于提供一种容器登录系统、方法、服务器及存储介质,以实现避免对用户容器中的容器镜像造成的侵入、以及降低用户使用容器的门槛和成本的有益效果。具体技术方案如下:
在本发明实施例的第一方面,首先提供了一种容器登录系统,所述系统包括:容器管理平台与堡垒机,其中,所述容器管理平台管控至少一个跳板容器,以及至少一个用户容器;
在确定用户登录至堡垒机的情况下,所述堡垒机确定与所述用户对应的所述跳板容器,并登录至所述跳板容器;
所述跳板容器在感知到所述堡垒机登录至自身的情况下,确定待登录的所述用户容器;
所述跳板容器利用预设的跳板程序,执行预设的登录指令登录至所述待登录的所述用户容器。
在一个可选的实施方式中,所述堡垒机确定与所述用户对应的所述跳板容器,包括:
所述堡垒机查找与所述用户对应的跳板容器的IP地址,并展示所述跳板容器的IP地址;
所述堡垒机确定用户所选择的所述跳板容器的IP地址;
所述堡垒机确定用户所选择的所述跳板容器的IP地址对应的所述跳板容器。
在一个可选的实施方式中,所述堡垒机查找与所述用户对应的跳板容器的IP地址,包括:
根据预设的用户与跳板容器的IP地址的对应关系,所述堡垒机查找与所述用户对应的跳板容器的IP地址。
在一个可选的实施方式中,所述系统还包括:
所述容器管理平台调用所述堡垒机的API,将用户与跳板容器的IP地址的对应关系设置于所述堡垒机中。
在一个可选的实施方式中,所述堡垒机登录至所述跳板容器,包括:
所述堡垒机获取与所述容器平台双方约定的登录信息;
所述堡垒机利用所述登录信息登录至所述跳板容器。
在一个可选的实施方式中,所述确定待登录的所述用户容器,包括:
执行预设的跳板程序展示与自身对应的用户命名空间下的所有pod中的用户容器标识;
确定用户所选择的所述用户容器标识对应的所述用户容器为待登录的所述用户容器。
在一个可选的实施方式中,所述跳板容器位于所述容器管理平台中的公共命名空间,所述用户容器位于所述容器管理平台中的用户命名空间。
在本发明实施例的第二方面,还提供了一种容器登录方法,应用于容器管理平台,其中,所述容器管理平台管控至少一个跳板容器,以及至少一个用户容器,所述方法包括:
跳板容器在感知到堡垒机登录至自身的情况下,确定待登录的所述用户容器;
其中,在确定用户登录至堡垒机的情况下,所述堡垒机确定与所述用户对应的所述跳板容器,并登录至所述跳板容器;
跳板容器利用预设的跳板程序,执行预设的登录指令登录至所述待登录的所述用户容器。
在本发明实施例的第三方面,还提供了一种服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的容器登录方法。
在本发明实施例的第四方面,还提供了一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的容器登录方法。
在本发明实施例的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的容器登录方法。
本发明实施例提供的技术方案,堡垒机在确定用户登录至自身的情况下,确定与该用户对应的跳板容器,并登录至该跳板容器,该跳板容器在感知到堡垒机登录至自身的情况下,确定待登录的用户容器,该跳板容器利用预设的跳板程序,执行预设的登录指令登录至该待登录的用户容器。如此通过跳板容器利用预设的跳板程序,执行预设的登录指令登录至该待登录的用户容器,无需在用户容器中安装并启动ssh server服务,可避免对用户容器中的容器镜像造成的侵入、以及降低用户使用容器的门槛和成本。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中示出的一种容器登录系统的结构示意图;
图2为本发明实施例中示出的一种容器登录方法的交互流程示意图;
图3为本发明实施例中示出的一种用户与堡垒机之间进行通信的示意图;
图4为本发明实施例中示出的一种确定待登录的用户容器方法的实施流程示意图;
图5为本发明实施例中示出的一种容器登录装置的结构示意图;
图6为本发明实施例中示出的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种容器登录系统,如图1所示,该容器登录系统中包括容器管理平台与堡垒机,其中,容器管理平台管控至少一个跳板容器,以及至少一个用户容器,对于跳板容器以及用户容器各自扮演不同的角色。其中,容器管理平台可以基于Kubernetes实现。
对于堡垒机与跳板容器之间,可以基于安全外壳协议进行通信,本发明实施例对此不作限定。
对于跳板容器与用户容器之间,可以基于Kubernetes API Server以及Kubernetes kubelet进行通信,本发明实施例对此不作限定。
对于Kubernetes API Server,为整个Kubernetes中的核心组件,担任着容器集群内部各个模块之间通信枢纽的角色。
对于Kubernetes kubelet,属于运行在容器集群内部每个node节点上的服务组件,负责具体地容器创建和删除任务等。
基于如图1所示的容器登录系统,如图2所示,为本发明实施例提供的一种容器登录方法的交互流程示意图,该方法具体可以包括以下步骤:
S201,在确定用户登录至堡垒机的情况下,所述堡垒机确定与所述用户对应的所述跳板容器;
在本发明实施例中,用户可以登录至堡垒机,具体可以通过用户名+密码的形式登录至堡垒机,当然也可以采用其它的形式登录至堡垒机,例如用户名+密码+验证码的形式,本发明实施例对此不作限定。
例如,如图3所示,用户与堡垒机之间可以基于ssh进行通信,用户输入用户名+密码,在堡垒机验证通过之后,即可登录至堡垒机。
对于堡垒机而言,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。
在本发明实施例中,对于堡垒机而言,在确定用户登录至自身的情况下,可以确定与该用户对应的跳板容器。例如,在确定用户张三登录至自身的情况下,堡垒机确定与该用户张三对应的跳板容器1。
具体地,堡垒机可以查找与用户对应的跳板容器的IP地址,并展示该跳板容器的IP地址,用户可以自由选择该跳板容器的IP地址,本发明实施例中堡垒机确定用户所选择的跳板容器的IP地址,堡垒机确定用户所选择的跳板容器的IP地址对应的跳板容器,以便于后续登录至该跳板容器。
例如,如图1所示的堡垒机,在确定用户登录至自身的情况下,可以查找与该用户对应的跳板容器的IP地址:192.168.1.1、192.168.1.2……,并展示该跳板容器的IP地址:192.168.1.1、192.168.1.2……;
此时用户可以自由选择跳板容器的IP地址,堡垒机确定用户所选择的跳板容器的IP地址:192.168.1.1,堡垒机确定用户所选择的跳板容器的IP地址:192.168.1.1对应的跳板容器1,以便于后续登录至该跳板容器1。
其中,在本发明实施例中,可以预先设置用户与跳板容器的IP地址的对应关系,从而堡垒机可以根据用户与跳板容器的IP地址的对应关系,查找与该用户对应的跳板容器的IP地址。
例如,如下表1所示,预先设置用户与跳板容器的IP地址的对应关系。
用户 |
跳板容器的IP地址 |
张三 |
192.168.1.1 |
李四 |
192.168.1.2 |
…… |
…… |
表1
例如,如上述表1所示的用户与跳板容器的IP地址的对应关系,在确定用户张三登录至堡垒机的情况下,堡垒机根据用户与跳板容器的IP地址的对应关系,可以查找与张三对应的跳板容器的IP地址:192.168.1.1。其中,可以根据用户登录至堡垒机所使用的用户名,确定该用户具体是谁。
对于跳板容器的IP地址,可以在跳板容器中安装并启动ssh server服务,为该跳板容器生成唯一的IP地址,本发明实施例对此不作限定。
另外,在确定用户登录至堡垒机的情况下,堡垒机可以根据用户与跳板容器的IP地址的对应关系,并未查找到与该用户对应的跳板容器的IP地址,意味着该用户未拥有登录至跳板容器的权限,此时可以为该用户开通登录至跳板容器的权限。具体地,本发明实施例中容器管理平台可以调用堡垒机的API(Application Programming Interface,应用程序接口),预先将用户与跳板容器的IP地址的对应关系设置于该堡垒机中,如此堡垒机在确定用户登录至自身的情况下,根据用户与跳板容器的IP地址的对应关系,查找与该用户对应的跳板容器的IP地址,并展示与用户对应的跳板容器的IP地址,如此对于用户而言,可以查看与自身对应的跳板容器的IP地址。
S202,所述堡垒机登录至所述跳板容器;
对于堡垒机而言,在确定与该用户对应的跳板容器之后,可以登录至该跳板容器。
例如,如图1所示的堡垒机,在确定与该用户对应的跳板容器1之后,可以登录至该跳板容器1。
其中,在本发明实施例中堡垒机可以与容器管理平台双方约定登录信息,该登录信息包括但不限于用户名+密码,或者公私钥,对于用户而言,无感知。
堡垒机可以获取与容器管理平台双方约定的登录信息,从而堡垒机可以利用该登录信息登录至该跳板容器,此过程无需用户的参与,堡垒机可以自动登录至跳板容器。
例如,堡垒机可以获取与容器管理平台双方约定的公钥,利用该公钥登录跳板容器1,容器管理平台对该公钥进行验证,验证通过之后,堡垒机可以登录至跳板容器1。
S203,所述跳板容器在感知到所述堡垒机登录至自身的情况下,确定待登录的所述用户容器;
对于跳板容器而言,可以感知堡垒机是否登录至自身,具体地,可以周期性的感知堡垒机是否登录至自身。例如,跳板容器1每间隔30秒感知堡垒机是否登录至自身。
在本发明实施例中,跳板容器在感知到堡垒机登录至自身的情况下,可以确定待登录的用户容器,从而后续可以登录至该用户容器中。
对于用户容器,其中运行着用户部署的应用,而对于跳板容器,仅仅扮演跳板的角色,其中并未运行着用户部署的应用。
具体地,如图4所示,由于本发明实施例修改了跳板容器用户的登录shell,跳板容器可以直接执行以下步骤,以实现确定待登录的用户容器:
S401,执行预设的跳板程序展示与自身对应的用户命名空间下的所有pod中的用户容器标识;
在本发明实施例中,可以预先在各个跳板容器中设置跳板程序。对于各个跳板容器而言,由于修改了用户的登录shell,可以直接执行预设的跳板程序,以展示与自身对应的用户命名空间下的所有pod中的用户容器标识。
在本发明实施例中,对于跳板容器以及用户命名空间而言,其对应关系可以一一对应,如下表2所示,跳板容器与用户命名空间一一对应,意味着针对每个用户命名空间,本发明实施例中容器管理平台都为其创建唯一的跳板容器。
跳板容器 |
用户命名空间 |
跳板容器1 |
用户命名空间1 |
跳板容器2 |
用户命名空间2 |
…… |
…… |
表2
如上述表2所示,对于每个用户命名空间而言,都存在与其对应的跳板容器。对于命名空间,在容器管理平台中可以分为公共命名空间以及用户命名空间。对于一个用户命名空间,可以对应于一个用户,如此基于Kubernetes实现的容器管理平台可以支持多租户,不同用户命名空间下的资源相互隔离。
对于pod而言,为基于Kubernetes实现的容器管理平台中可以创建和管理的最小计算单元,一个用户命名空间中可以包括多个pod,每个pod中可以包括多个用户容器。例如,对于用户命名空间1而言,其中可以包括3个pod,每个pod中可以包括3个用户容器。
基于上述,例如,对于跳板容器1而言,存在用户命名空间1与其一一对应,由于修改了用户的登录shell,跳板容器1可以执行预设的跳板程序,展示与自身对应的用户命名空间1下的所有pod中的用户容器标识。其中每个跳板容器本地都可以存在该跳板程序。
对于用户容器标识,可以是用户容器的ID,可以是用户容器的名称,本发明实施例对此不作限定。
S402,确定用户所选择的所述用户容器标识对应的所述用户容器为待登录的所述用户容器。
对于跳板容器而言,执行预设的跳板程序,以展示与自身对应的用户命名空间下的所有pod中的用户容器标识,此时,用户可以自由选择用户容器标识,本发明实施例中跳板容器可以确定用户所选择的用户容器标识,并确定用户所选择的用户容器标识对应的用户容器为待登录的用户容器。
例如,跳板容器1展示用户命名空间1下的所有pod中的用户容器标识:用户容器标识1、用户容器标识2、用户容器标识3,此时用户可以选择用户容器标识,跳板容器1可以确定用户所选择的用户容器标识1,并确定用户所选择的用户容器标识1对应的用户容器1为待登录的用户容器。
如此基于上述步骤,本发明实施例中跳板容器可以确定待登录的用户容器。
S204,所述跳板容器利用预设的跳板程序,执行预设的登录指令登录至所述待登录的所述用户容器。
对于跳板容器而言,在确定待登录的用户容器之后,可以利用上述预设的跳板程序,执行预设的登录指令登录至待登录的用户容器,如此用户可以在该待登录的用户容器中查看已部署应用的运行情况,并进行故障诊断、上传和下载文件等操作。
例如,对于跳板容器1而言,在确定待登录的用户容器之后,可以利用上述预设的跳板程序,执行kubectl exec-it{pod name}sh指令,登录至待登录的用户容器,用户可以在该待登录的用户容器中查看已部署应用的运行情况,并进行故障诊断、上传和下载文件等操作。
在本发明实施例中,对于命名空间,在容器管理平台中可以分为公共命名空间以及用户命名空间,用户命名空间可以用于支持多租户,而对于公共命名空间,可以用于支持共享资源,因此本发明实施例中的所述跳板容器可以位于所述容器管理平台中的公共命名空间,即运行于所述容器管理平台中的公共命名空间,而对于所述用户容器位于所述容器管理平台中的用户命名空间,即运行于所述容器管理平台中的用户命名空间。
通过上述对本发明实施例提供的技术方案的描述,堡垒机在确定用户登录至自身的情况下,确定与该用户对应的跳板容器,并登录至该跳板容器,该跳板容器在感知到堡垒机登录至自身的情况下,确定待登录的用户容器,该跳板容器利用预设的跳板程序,执行预设的登录指令登录至该待登录的用户容器。如此通过跳板容器利用预设的跳板程序,执行预设的登录指令登录至该待登录的用户容器,无需在用户容器中安装并启动ssh server服务,可避免对用户容器中的容器镜像造成的侵入、以及降低用户使用容器的门槛和成本。
在此,本发明实施例中从单侧的角度描述堡垒机以及跳板容器所执行的步骤,堡垒机以及跳板容器具体所执行的步骤可以参照上述实施例:
对于堡垒机而言,在确定用户登录至自身的情况下,确定与所述用户对应的所述跳板容器,并登录至所述跳板容器;
对于跳板容器而言,在感知到所述堡垒机登录至自身的情况下,确定待登录的所述用户容器;利用预设的跳板程序,执行预设的登录指令登录至所述待登录的所述用户容器。
与上述方法实施例相对应,本发明实施例还提供了一种容器登录装置,如图5所示,应用于容器管理平台,其中,所述容器管理平台管控至少一个跳板容器,以及至少一个用户容器,该装置可以包括:容器确定模块510、容器登录模块520。
容器确定模块510,用于跳板容器在感知到堡垒机登录至自身的情况下,确定待登录的所述用户容器;
其中,在确定用户登录至堡垒机的情况下,所述堡垒机确定与所述用户对应的所述跳板容器,并登录至所述跳板容器;
容器登录模块520,用于跳板容器利用预设的跳板程序,执行预设的登录指令登录至所述待登录的所述用户容器。
在本发明实施例的具体实施方式中,所述堡垒机确定与所述用户对应的所述跳板容器,包括:
所述堡垒机查找与所述用户对应的跳板容器的IP地址,并展示所述跳板容器的IP地址;
所述堡垒机确定用户所选择的所述跳板容器的IP地址;
所述堡垒机确定用户所选择的所述跳板容器的IP地址对应的所述跳板容器。
在本发明实施例的具体实施方式中,所述堡垒机查找与所述用户对应的跳板容器的IP地址,包括:
根据预设的用户与跳板容器的IP地址的对应关系,所述堡垒机查找与所述用户对应的跳板容器的IP地址。
在本发明实施例的具体实施方式中,所述容器管理平台调用所述堡垒机的API,将用户与跳板容器的IP地址的对应关系设置于所述堡垒机中。
在本发明实施例的具体实施方式中,所述堡垒机登录至所述跳板容器,包括:
所述堡垒机获取与所述容器平台双方约定的登录信息;
所述堡垒机利用所述登录信息登录至所述跳板容器。
在本发明实施例的具体实施方式中,所述容器确定模块510具体用于:
执行预设的跳板程序展示与自身对应的用户命名空间下的所有pod中的用户容器标识;
确定用户所选择的所述用户容器标识对应的所述用户容器为待登录的所述用户容器。
在本发明实施例的具体实施方式中,所述跳板容器位于所述容器管理平台中的公共命名空间,所述用户容器位于所述容器管理平台中的用户命名空间。
本发明实施例还提供了一种服务器,如图6所示,包括处理器61、通信接口62、存储器63和通信总线64,其中,处理器61,通信接口62,存储器63通过通信总线64完成相互间的通信,
存储器63,用于存放计算机程序;
处理器61,用于执行存储器63上所存放的程序时,实现如下步骤:
跳板容器在感知到堡垒机登录至自身的情况下,确定待登录的所述用户容器;其中,在确定用户登录至堡垒机的情况下,所述堡垒机确定与所述用户对应的所述跳板容器,并登录至所述跳板容器;跳板容器利用预设的跳板程序,执行预设的登录指令登录至所述待登录的所述用户容器。
上述服务器提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述服务器与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种存储介质,该存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的容器登录方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的容器登录方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在存储介质中,或者从一个存储介质向另一个存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。