本发明涉及计算机,特别涉及一种容器管理方法、装置、设备及存储介质。
背景技术:
1、随着当前云计算技术的发展,kubernetes(简称k8s,是进行容器调度和集群管理的软件系统,可提供用于容器可扩展性的基本机制,进行容器的生命周期管理)及相关容器技术得到了广泛的使用,在云环境下用户的容器通常在虚拟机中运行,通过向虚拟机添加虚拟磁盘(即容器存储卷)作为容器的数据存储卷。
2、当部署容器的虚拟机分布在多个物理机,物理机只使用本地硬盘作为存储池,且物理机之间没有共享的存储池的情况下,容器在通过kubernetes调度运行时,可能被调度到不能正常访问存储卷的虚拟机上,导致容器不能正常运行。例如,创建的容器卷位于a主机的本地存储池中,由于当前kubernetes在调度时对容器卷的物理位置及可用性是无感知的,容器若被调度到a主机的虚拟机中则可以正常运行,但是如果被调度到b主机的虚拟机上,由于b主机上的虚拟机无法正常访问a主机本地存储池中的容器卷,就会导致容器在b主机的虚拟机上不能正常启动。
技术实现思路
1、本发明实施例的目的在于提供一种容器管理方法、装置、设备及存储介质,解决当前容器调度可能被调度到不能正常访问存储卷的虚拟机上,导致容器不能正常运行的问题,具体技术方案如下:
2、在本发明实施的第一方面,首先提供了一种容器管理方法,所述方法包括:
3、获取目标集群中第一虚拟机所在的第一主机允许访问的第一存储池的目标信息,其中,所述目标信息包括第一存储池的身份标识以及第一存储池的状态信息,所述第一虚拟机为目标集群中的任一虚拟机;
4、根据所述第一存储池的身份标识和所述第一存储池的状态信息,为所述第一虚拟机添加第一标签信息;
5、若所述目标集群中存在对目标容器的调度,则通过预设的目标关联关系确定所述目标容器允许访问的第二存储池的身份标识;
6、通过所述第二存储池的身份标识在所述第一标签信息中进行检索,从所述第一标签信息中确定包含所述第二存储池的身份标识的第二标签信息;
7、将所述目标容器调度至包含所述第二标签信息的第二虚拟机。
8、可选的,在所述根据所述第一存储池的身份标识和所述第一存储池的状态信息,为所述第一虚拟机添加第一标签信息之后,还包括:
9、获取目标集群的存储池的目标状态信息;
10、根据所述目标状态信息从所述目标集群的存储池中筛选出正常读写的目标存储池;
11、预先创建第一存储类;
12、在所述第一存储类中为待创建的容器存储卷从所述目标存储池中指定允许存储的第二存储池,并配置关于所述第二存储池的第一信息,所述第一信息包括所述第二存储池的身份标识以及所述第二存储池的状态信息;
13、根据所述目标信息在所述第一存储类中进行检索,确定包含所述目标信息的第二存储类;
14、在所述第一存储池中创建第一容器存储卷;
15、在所述第一容器存储卷的第一目标文件中指定所述第一容器存储卷采用的所述第二存储类的名称和所述第一容器存储卷的声明;
16、在所述第一虚拟机中创建第一容器;
17、在所述第一容器的第二目标文件中指定待挂载的第二容器存储卷的声明;
18、通过所述第二存储类的名称,为所述第一容器存储卷与所述第二存储类建立第一关联关系;
19、通过所述第一容器存储卷的声明和所述第二容器存储卷的声明,为所述第一容器存储卷和所述第一容器建立第二关联关系;
20、通过所述第一关联关系和所述第二关联关系,生成关于所述第一容器存储卷,所述第二存储类与所述第一容器的目标关联关系;
21、通过所述目标关联关系将第一容器存储卷挂载至所述第一容器,所述目标容器属于所述第一容器。
22、可选的,所述通过所述第一容器存储卷的声明和所述第二容器存储卷的声明,为所述第一容器存储卷和所述第一容器建立第二关联关系,包括:
23、根据所述第二容器存储卷的声明在所述第一容器存储卷的声明中进行检索;
24、根据检索结果从所述第一容器存储卷的声明中筛选出与所述第二容器存储卷的声明一致的第一容器存储卷的声明;
25、为与所述第二容器存储卷的声明一致的第一容器存储卷的声明和所述第一容器建立第二关联关系。
26、可选的,所述根据所述第一存储池的身份标识和所述第一存储池的状态信息,为所述第一虚拟机添加第一标签信息,还包括:
27、根据所述第一存储池的身份标识和所述第一存储池的状态信息,生成字典结构体,其中,所述第一存储池的身份标识为字典结构体的键字段,所述第一存储池的状态信息为字典结构体的值字段;
28、将所述字典结构体作为目标返回值,返回至节点获取信息接口;
29、通过在所述第一虚拟机上的目标进程从所述节点获取信息接口中获取目标返回值;
30、根据所述目标返回值为所述第一虚拟机添加第一标签信息。
31、可选的,所述根据所述第一存储池的身份标识和所述第一存储池的状态信息,生成字典结构体,包括:
32、预先为每一第一存储池的身份标识以及对应的第一存储池的状态信息建立关联关系;
33、按照身份标识和所述关联关系将所述第一存储池的目标信息进行划分,其中,同一身份标识的目标信息处于同一划分区域;
34、根据每一划分区域内的目标信息生成一组字典结构体。
35、可选的,在所述根据所述第一存储池的身份标识和所述第一存储池的状态信息,为所述第一虚拟机添加第一标签信息之后,还包括:
36、按照预设周期获取所述第一存储池的状态信息;
37、若所述状态信息为正常读写状态,则将所述第一标签信息中的值字段更新为正常读写字段;
38、若所述状态信息为只读状态,则将所述第一标签信息中的值字段更新为只读字段;
39、若所述状态信息为被卸载状态,则将所述第一标签信息中的值字段更新为卸载字段。
40、可选的,在所述根据所述第一存储池的身份标识和所述第一存储池的状态信息,为所述第一虚拟机添加第一标签信息之后,还包括:
41、若检测到所述第一主机中新建第二存储池,则获取所述第二存储池的身份标识以及第二存储池的状态信息;
42、根据所述第二存储池的身份标识以及第二存储池的状态信息,为所述第一虚拟机添加第二标签信息;
43、若检测到所述第一主机删除第一存储池,则将所述第一虚拟机的所述第一标签信息删除。
44、在本发明实施的第二方面,还提供了一种容器管理装置,包括:
45、第一获取模块,用于获取目标集群中第一虚拟机所在的第一主机允许访问的第一存储池的目标信息,其中,所述目标信息包括第一存储池的身份标识以及第一存储池的状态信息,所述第一虚拟机为目标集群中的任一虚拟机;
46、第一添加模块,用于根据所述第一存储池的身份标识和所述第一存储池的状态信息,为所述第一虚拟机添加第一标签信息;
47、第一确定模块,用于若所述目标集群中存在对目标容器的调度,则通过预设的目标关联关系确定所述目标容器允许访问的第二存储池的身份标识;
48、第二确定模块,用于通过所述第二存储池的身份标识在所述第一标签信息中进行检索,从所述第一标签信息中确定包含所述第二存储池的身份标识的第二标签信息;
49、调度模块,用于将所述目标容器调度至包含所述第二标签信息的第二虚拟机。
50、在本发明实施的第三方面,还提供了一种通信设备,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;
51、所述处理器,用于读取存储器中的程序实现执行上述任一所述的容器管理方法。
52、在本发明实施的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的容器管理方法。
53、本发明实施例提供的容器管理方法,获取目标集群中第一虚拟机所在的第一主机允许访问的第一存储池的目标信息,其中,目标信息包括第一存储池的身份标识以及第一存储池的状态信息,第一虚拟机为目标集群中的任一虚拟机,根据第一存储池的身份标识和第一存储池的状态信息,为第一虚拟机添加第一标签信息,通过为虚拟机添加标签信息,便于后续容器调度时根据标签信息进行针对性查找,若目标集群中存在对目标容器的调度,则确定目标容器所在的第二虚拟机和第二虚拟机的第二标签信息;将第二标签信息在第一标签信息中进行检索,从第一标签信息中确定与第二标签信息一致的第三标签信息;将目标容器调度至包含第三标签信息的第三虚拟机,通过标签信息进行目标容器的调度,避免目标容器被调度到不能正常访问存储卷的虚拟机上,导致容器不能正常运行的问题,本发明实施例中通过确定第一虚拟机可访问的第一存储池,而后将第一存储池的信息作为标签添加在第一虚拟机上,便于后续的目标容器进行调度时,根据目标容器所在的第二虚拟机的标签确定目标容器可以被调度到允许其正常运行的虚拟机上,避免被调度到不能正常访问存储卷的虚拟机上,导致容器不能正常运行的问题。