本说明书实施例涉及计算机,尤其涉及一种基于云原生存储数据卷的共享访问方法及系统。
背景技术:
1、在kubernetes平台上有很多应用需要从多个不同的节点上同时读写同一个数据卷,也就是共享访问。目前使用最广泛的文件系统是kubernetes平台持久化存储卷(persistent volume,pv),一般只能在单一节点上部署的应用实例容器(pod)上挂载,不能同时被其他节点上部署的pod挂载,无法实现多个节点上pod的共享访问。
2、目前大多将kubernetes外部的网络文件服务器提供的共享文件系统挂载在多个节点上部署的pod上,从而实现多个节点上pod的共享访问,但因为这种共享文件系统因属于外部网络文件服务器,因此其使用成本和运维成本都很高。并且因为网络存在延迟,外部的共享文件系统的性能要远低于本地的持久化卷,而且kubernetes平台上的应用只有在横向扩展为多实例(即多个pod)状态时才需要使用外部共享文件系统,因此为了保证应用的扩展能力,现有技术中大多不得不放弃单实例(即一个pod)状态下挂载本地的持久化卷的方法,因此现有技术中无论是单实例还是多实例,其共享访问的性能和便利性均不高。
3、如何提高kubernetes平台中pod的共享访问的性能和便利性是目前亟待解决的技术问题。
技术实现思路
1、为解决现有技术中kubernetes平台中pod的共享访问的性能和便利性不足的问题,本说明书实施例提供了一种基于云原生存储数据卷的共享访问方法及系统,从本地文件系统出发,实现兼顾本地共享文件系统的kubernetes平台数据卷,在其后端实现本地文件系统和共享文件系统的转换,摒弃了挂载外部网络文件系统服务器的共享文件系统,从而降低了访问延时,降低了使用成本和运维成本,通过本地文件系统和共享文件系统的自动切换,兼顾性能和扩展性,大幅提高了数据卷的适应性和易用性。
2、本说明书实施例的具体技术方案如下:
3、一方面,本说明书实施例提供了一种基于云原生存储数据卷的共享访问方法,包括:
4、在kubernetes平台的目标工作节点上部署目标容器组时,判断所述kubernetes平台上是否已部署有至少一个与所述目标容器组存在共享访问需求的容器组;
5、若所述kubernetes平台上未部署与所述目标容器组存在共享访问需求的容器组,则将所述kubernetes平台本地的与所述共享访问需求对应的持久化卷挂载在所述目标容器组上,以便于所述目标容器组访问所述持久化卷中的数据;
6、若所述kubernetes平台上已部署有至少一个与所述目标容器组存在共享访问需求的容器组,则判断已部署的各容器组中是否存在已经挂载了所述持久化卷的容器组;
7、若已部署的各容器组中存在已经挂载了所述持久化卷的容器组,则判断所述持久化卷是否存在对应的nfs共享卷;
8、若不存在所述nfs共享卷,则在已经挂载了所述持久化卷的容器组对应的工作节点上运行nfs服务进程,生成所述持久化卷对应的nfs共享卷,将所述nfs共享卷挂载在所述目标容器组上,以便于所述目标容器组通过所述nfs共享卷访问所述持久化卷中的数据;
9、若存在所述nfs共享卷,则将所述nfs共享卷挂载在所述目标容器组上,以便于所述目标容器组通过所述nfs共享卷访问所述持久化卷中的数据。
10、进一步地,若存在已经挂载了所述持久化卷的容器组,所述方法还包括:
11、判断已经挂载了所述持久化卷的容器组对应的工作节点是否为所述目标工作节点;
12、若为所述目标工作节点,则将所述持久化卷挂载在所述目标容器组上;
13、若不为所述目标工作节点,则执行判断所述持久化卷是否存在对应的nfs共享卷的步骤。
14、进一步地,在已经挂载了所述持久化卷的容器组对应的工作节点上运行nfs服务进程,生成所述持久化卷对应的nfs共享卷进一步包括:
15、在已经挂载了所述持久化卷的容器组对应的工作节点上部署nfs进程容器,并在所述nfs进程容器中运行所述nfs服务进程,将所述持久化卷的文件系统格式转换为nfsv4网络文件系统格式,生成所述nfs共享卷。
16、进一步地,所述方法还包括:
17、当将所述kubernetes平台上已部署的所述共享访问需求对应的多个容器组缩减为单容器组时,保留挂载所述持久化卷的容器组。
18、进一步地,当将所述kubernetes平台上已部署的所述共享访问需求对应的多个容器组缩减为单容器组时,所述方法还包括:
19、从所述kubernetes平台上删除挂载所述nfs共享卷的全部容器组后,删除所述nfs共享卷。
20、另一方面,本说明书实施例还提供了一种基于云原生存储数据卷的共享访问系统,包括主节点和工作节点;
21、所述主节点用于管理在各所述工作节点上部署的存在共享访问需求的容器组;
22、所述工作节点中部署有csi插件,在所述工作节点上部署所述共享访问需求对应的容器组时,所述csi插件执行上述的方法。
23、另一方面,本说明书实施例还提供了一种计算机设备,包括存储器、处理器、以及存储在存储器上的计算机程序,处理器执行所述计算机程序时实现上述的方法。
24、另一方面,本说明书实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
25、最后,本说明书实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述的方法。
26、利用本说明书实施例,摒弃了在kubernetes平台中挂载外部共享文件系统实现多个节点上多个容器组之间的数据共享,而是在部署存在共享访问需求的容器组时,判断kubernetes平台上是否已经部署有至少一个与所述待部署的目标容器组存在共享访问需求的容器组,若否,则将kubernetes平台本地的与共享访问需求对应的持久化卷挂载在目标容器组上,目标容器组访问本地的持久化卷中的数据,当部署该共享访问需求对应的其他容器组时,运行nfs服务生成持久化卷对应的nfs共享卷,也就是对持久化卷中的数据进行nfsv4网络文件格式的转换,将nfs共享卷挂载在该共享访问需求对应的其他容器组上,这样其他容器组就可以通过nfs共享卷来访问本地的持久化卷中的数据,挂载该持久化卷的容器组仍通过本地访问的方式访问持久化卷中的数据,从而实现了数据的共享。相比于现有技术中挂载外部共享文件系统的方法,本说明书实施例的方法实现了兼顾本地共享文件系统的kubernetes平台数据卷,在其后端实现本地文件系统和共享文件系统的转换,从而降低了访问延时,降低了使用成本和运维成本,通过本地文件系统和共享文件系统的自动切换,兼顾性能和扩展性,大幅提高了数据卷的适应性和易用性。
1.一种基于云原生存储数据卷的共享访问方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,若存在已经挂载了所述持久化卷的容器组,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,在已经挂载了所述持久化卷的容器组对应的工作节点上运行nfs服务进程,生成所述持久化卷对应的nfs共享卷进一步包括:
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,当将所述kubernetes平台上已部署的所述共享访问需求对应的多个容器组缩减为单容器组时,所述方法还包括:
6.一种基于云原生存储数据卷的共享访问系统,其特征在于,包括主节点和工作节点;
7.一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现权利要求1至5任一所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至5任一所述方法。
9.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至5任一所述方法。