Kubernetes系统平台下Pod数据卷动态挂载方法及装置制造方法及图纸

技术编号:38684355 阅读:9 留言:0更新日期:2023-09-02 22:57
本申请公开了一种Kubernetes系统平台下Pod数据卷动态挂载方法及装置,方法包括:接收用户在控制平面创建的Pod;用户在创建Pod时,在Pod的元数据annotations字段中写入特定的字符串键值对;接收用户在控制平面创建的CRD;CRD动态建立Pod与数据卷之间的动态挂载关系;通过CRD operator自动向Pod的元数据annotations字段中注入hostPath设置,并更新到Pod的元数据annotations字段中;将更新后的Pod的元数据annotations字段通过kube

【技术实现步骤摘要】
Kubernetes系统平台下Pod数据卷动态挂载方法及装置


[0001]本申请涉及Pod数据卷动态挂载
,具体涉及一种Kubernetes系统平台下Pod数据卷动态挂载方法及装置。

技术介绍

[0002]目前,在Kubernetes系统平台下,通常使用hostPath、PV和PVC等技术来解决Kubernetes中Pod的数据卷(即volume)的静态供给需求,使用StorageClass和CSI等技术及组件来解决数据卷的动态供给需求。
[0003]无论是静态供给还是动态供给,数据卷总是在Pod启动前准备就绪,而Pod也一定是在数据卷就绪后,才能顺利在计算节点启动并运行。这符合Kubernetes系统平台的现有设计,也符合从早期docker容器到KubernetesPod的技术演进,即容器运行时一旦启动容器,容器内将无法挂载新的数据卷。这一设计的合理性在于,就通常而言,容器内的进程一旦启动,就无需加载新的“本地”数据,无论是文件存储还是块设备,其中,所谓“本地”指的是容器内。
[0004]但是,在实际生产中,难免遇到一些并非面向云原生的应用,它们可以在应用进程不重启的情况下,重新加载、读取“本地”数据,而应用在不重启的情况下加载新的数据卷也往往是一些容器平台用户所希望的。
[0005]这种不重启应用就加载“本地”数据的需求在Kubernetes系统平台中无法得到满足。因为应用不重启,就意味着KubernetesPod不能重启,而Pod无法在不重新创建的情况下加载新的数据卷。
[0006]综上可知,在Kubernetes的现有设计和实现下,想要支持Pod数据卷的动态挂载,可能的方案是由Kubernetes平台管理员允许用户的Pod以hostPath方式挂载计算节点上的系统路径,然后当用户需要时,再将数据卷按网络文件系统的方式挂载到计算节点的系统路径上。但这种方案,面临极大的风险和维护成本,即需要平台管理员将计算节点的部分文件系统细节暴露给容器用户,以及需要平台管理员监督并维护计算节点上的系统路径的使用,以避免多租户场景下不同用户数据卷挂载的可能冲突,还要及时清理数据卷。

技术实现思路

[0007]为此,本申请提供一种Kubernetes系统平台下Pod数据卷动态挂载方法及装置,以解决现有技术存在的用户在Kubernetes系统平台上为Pod动态挂载数据卷时,会暴露平台细节以及维护成本较高的问题。
[0008]为了实现上述目的,本申请提供如下技术方案:
[0009]第一方面,一种Kubernetes系统平台下Pod数据卷动态挂载方法,包括:
[0010]接收用户在控制平面创建的Pod;用户在创建所述Pod时,在所述Pod的元数据annotations字段中写入特定的字符串键值对;
[0011]接收用户在控制平面创建的CRD;所述CRD动态建立所述Pod与数据卷之间的动态
挂载关系;
[0012]通过CRDoperator自动向所述Pod的元数据annotations字段中注入hostPath设置,并更新到所述Pod的元数据annotations字段中;
[0013]将更新后的所述Pod的元数据annotations字段通过kube

apiserver通知到监听所述Pod的计算平面;所述计算平面监听到更新后的所述Pod的元数据annotations字段后为所述Pod进行所述数据卷的动态挂载。
[0014]作为优选,所述用户在控制平面创建所述Pod时,若设置了hostPath,并且相关路径与所述CRDoperator注入的路径重叠或冲突时,所述CRDoperator会阻止用户创建Pod。
[0015]作为优选,所述数据卷为用户在控制平面创建的新数据卷或复用的已有的数据卷。
[0016]作为优选,所述计算平面通过CSI

sidecar监听Pod的元数据annotations字段是否更新。
[0017]作为优选,所述CSI

sidecar采用监听kube

apiserver的方式。
[0018]作为优选,所述CSI

sidecar监听到更新后的所述Pod的元数据annotations字段后为所述Pod进行所述数据卷的动态挂载,具体包括:
[0019]若所述Pod被标记为删除,则清理当前节点上特定文件系统路径下的所述Pod相关的已挂载数据卷;
[0020]将所述Pod的元数据annotations字段中的字符串键值对信息与当前节点特定文件系统路径下的数据卷挂载记录做对比;
[0021]若已有的挂载记录中缺少所述Pod的元数据annotations字段中描述的挂载信息,则为所述Pod进行挂载;
[0022]若所述Pod的元数据annotations字段中没有对现存挂载记录的描述,则清除相应的挂载。
[0023]第二方面,一种Kubernetes系统平台下Pod数据卷动态挂载装置,包括:
[0024]接收模块,用于接收用户在控制平面创建的Pod;用户在创建所述Pod时,在所述Pod的元数据annotations字段中写入特定的字符串键值对;
[0025]以及接收用户在控制平面创建的CRD;所述CRD动态建立所述Pod与数据卷之间的动态挂载关系;
[0026]注入模块,用于通过CRDoperator自动向所述Pod的元数据annotations字段中注入hostPath设置,并更新到所述Pod的元数据annotations字段中;
[0027]通知模块,用于将更新后的所述Pod的元数据annotations字段通过kube

apiserver通知到监听所述Pod的计算平面;所述计算平面监听到更新后的所述Pod的元数据annotations字段后为所述Pod进行所述数据卷的动态挂载。
[0028]第三方面,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现Kubernetes系统平台下Pod数据卷动态挂载方法的步骤。
[0029]第四方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现Kubernetes系统平台下Pod数据卷动态挂载的步骤。
[0030]相比现有技术,本申请至少具有以下有益效果:
[0031]本申请提供了一种Kubernetes系统平台下Pod数据卷动态挂载方法及装置,方法包括:接收用户在控制平面创建的Pod;用户在创建Pod时,在Pod的元数据annotations字段中写入特定的字符串键值对;接收用户在控制平面创建的CRD;CRD动态建立Pod与数据卷之间的动态挂载关系;通过CRDoperator自动向Pod的元数据annotations字段中注入hostPath设置,并更新到Pod的元数据annot本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Kubernetes系统平台下Pod数据卷动态挂载方法,其特征在于,包括:接收用户在控制平面创建的Pod;用户在创建所述Pod时,在所述Pod的元数据annotations字段中写入特定的字符串键值对;接收用户在控制平面创建的CRD;所述CRD动态建立所述Pod与数据卷之间的动态挂载关系;通过CRDoperator自动向所述Pod的元数据annotations字段中注入hostPath设置,并更新到所述Pod的元数据annotations字段中;将更新后的所述Pod的元数据annotations字段通过kube

apiserver通知到监听所述Pod的计算平面;所述计算平面监听到更新后的所述Pod的元数据annotations字段后为所述Pod进行所述数据卷的动态挂载。2.根据权利要求1所述的Kubernetes系统平台下Pod数据卷动态挂载方法,其特征在于,所述用户在控制平面创建所述Pod时,若设置了hostPath,并且相关路径与所述CRDoperator注入的路径重叠或冲突时,所述CRD operator会阻止用户创建Pod。3.根据权利要求1所述的Kubernetes系统平台下Pod数据卷动态挂载方法,其特征在于,所述数据卷为用户在控制平面创建的新数据卷或复用的已有的数据卷。4.根据权利要求1所述的Kubernetes系统平台下Pod数据卷动态挂载方法,其特征在于,所述计算平面通过CSI

sidecar监听Pod的元数据annotations字段是否更新。5.根据权利要求4所述的Kubernetes系统平台下Pod数据卷动态挂载方法,其特征在于,所述CSI

sidecar采用监听kube

apiserver的方式。6.根据权利要求4所述的Kubernetes系统平台下Pod数据卷动态挂载方法,其特征...

【专利技术属性】
技术研发人员:潘光明
申请(专利权)人:翼健上海信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1