CN114356214B - 一种针对kubernetes系统提供本地存储卷的方法及系统 - Google Patents

一种针对kubernetes系统提供本地存储卷的方法及系统 Download PDF

Info

Publication number
CN114356214B
CN114356214B CN202111445581.6A CN202111445581A CN114356214B CN 114356214 B CN114356214 B CN 114356214B CN 202111445581 A CN202111445581 A CN 202111445581A CN 114356214 B CN114356214 B CN 114356214B
Authority
CN
China
Prior art keywords
storage volume
local storage
pod
orchestrator
target node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111445581.6A
Other languages
English (en)
Other versions
CN114356214A (zh
Inventor
王洪磊
揭震
马超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sina Technology China Co Ltd
Original Assignee
Sina Technology China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sina Technology China Co Ltd filed Critical Sina Technology China Co Ltd
Priority to CN202111445581.6A priority Critical patent/CN114356214B/zh
Publication of CN114356214A publication Critical patent/CN114356214A/zh
Application granted granted Critical
Publication of CN114356214B publication Critical patent/CN114356214B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出一种针对kubernetes系统提供本地存储卷的方法及系统。方法包括:Deployment编排器在启用自身Pod的容器前,向K8s组件发送本地存储卷提供请求,请求携带有用于提供本地存储卷的注解信息。K8s组件确定Deployment编排器的Pod所属的目标节点,并基于注解信息生成目标节点对应的目标存储卷提供任务。存储卷控制器对K8s组件生成的存储卷提供任务进行监听,并在监听到目标节对应的目标存储卷提供任务后,将目标存储卷提供任务发送至目标节点的节点代理。目标节点的节点代理控制目标节点为所述Deployment编排器的Pod提供本地存储卷。本发明的方案能够主动为pod提供本地存储卷资源,以实现对非pod持久化数据的存储,从而减少容器服务网络拉取数据的次数,进而降低服务延迟。

Description

一种针对kubernetes系统提供本地存储卷的方法及系统
技术领域
本文件涉及互联网应用技术领域,尤其涉及一种针对kubernetes系统提供本地存储卷的方法及系统。
背景技术
kubernetes是用于管理云平台中多个主机上的容器化的编排工具,为应用提供了容器化部署,并支持容器规划、更新和维护。容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,不需要与其余的应用堆栈组合,这使得从研发测试再到生产的过程中都能提供一致的运行环境。
Pod是kubernetes的最小单元,一个Pod可以设置有一个或多个容器。在实际应用中,容器服务所产生的一些数据并不是Pod的持久化数据,这就导致这些数据丢失后如果被再次用到,需要通过网络进行拉取。目前,这种方式下存在以下问题:
1)因为数据的传递需要经过网路,导致延时不稳定。
2)不能满足高io要求的业务场景,比如分布式数据存储等。
3)如果拉取的数据分散在非常多的小文件时,目前kubernetes不具备自动加载的能力,通常是在容器启动前完成数据准备工作。
发明内容
本发明实施例目的是提出一种kubernetes系统提供本地存储卷的方法及系统,能够主动为pod提供本地存储卷资源,以实现对pod的非持久化数据的存储,从而减少容器服务网络拉取数据的次数,进而降低服务延迟。
为解决上述技术问题,本说明书实施例是这样实现的:
第一方面,提出了一种针对kubernetes系统提供本地存储卷的方法,所述kubernetes系统包括:Deployment编排器、K8s组件、存储卷控制器和节点代理,所述方法包括:
所述Deployment编排器在启用自身Pod的容器前,向所述K8s组件发送本地存储卷提供请求,所述本地存储卷提供请求携带有用于为所述Deployment编排器的Pod提供本地存储卷的注解信息;
所述K8s组件基于所述本地存储卷提供请求,确定所述Deployment编排器的Pod所属的目标节点,并基于所述注解信息生成所述目标节点对应的目标存储卷提供任务;
所述存储卷控制器对所述K8s组件生成的存储卷提供任务进行监听,并在监听到所述目标节对应的目标存储卷提供任务后,将所述目标存储卷提供任务发送至所述目标节点的节点代理;
所述目标节点的节点代理基于接收到的所述目标存储卷提供任务,控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷。
第二方面,提出了一种kubernetes系统,包括:Deployment编排器、K8s组件、存储卷控制器和节点代理,其中:
所述Deployment编排器在启用自身Pod的容器前,向所述K8s组件发送本地存储卷提供请求,所述本地存储卷提供请求携带有用于为所述Deployment编排器的Pod提供本地存储卷的注解信息;
所述K8s组件基于所述本地存储卷提供请求,确定所述Deployment编排器的Pod所属的目标节点,并基于所述注解信息生成所述目标节点对应的目标存储卷提供任务;
所述存储卷控制器对所述K8s组件生成的存储卷提供任务进行监听,并在监听到所述目标节对应的目标存储卷提供任务后,将所述目标存储卷提供任务发送至所述目标节点的节点代理;
所述目标节点的节点代理基于接收到的所述目标存储卷提供任务,控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷。
基于本申请实施例的方案,kubernetes系统的Deployment能够主动向K8s组件申请对自身Pod提供本地存储卷,并注解提供本地存储卷所需要的相关信息。之后,K8s组件将各个Deployment发起的本地存储卷提供请求转换成对应节点的任务分配给节点代理,由节点代理控制节点按照注解完成本地存储卷的提供,从而存储Deployment下的Pod的非持久化数据,以减少容器运行服务时需要网络拉取数据的次数,进而有效降低服务的延迟,甚至是服务因网络拉取失败而终止的概率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的针对kubernetes系统提供本地存储卷的方法的第一种流程示意图。
图2为本发明实施例的针对kubernetes系统提供本地存储卷的方法的第二种流程示意图。
图3为本发明实施例的kubernetes系统的结构示意图。
图4为本发明实施例的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
如前所述,在kubernetes的实际应用中,容器的服务产生的一些数据并不是Pod的持久化数据,这就导致这些数据丢失后如果被再次用到,需要通过网络进行拉取,进而导致服务延时不稳定甚至发生中断。
有鉴于此,本申请旨在提出一种能够主动为pod提供本地存储卷资源的技术方案,以实现对pod的非持久化数据的存储,从而减少容器服务网络拉取数据的次数。
下面对本申请所涉及的一些kubernetes知识进行介绍。
Kubernetes是一种声明式系统(和指令式系统相对),这就意味着我们无法给它发出命令。我们不能说:“运行这个容器”。我们能做的只能是——描述我们需要的东西,然后等Kubernetes根据现有内容,同步为预期内容。
打个比方,我们可以说:“我要一个40英尺高的有黄色门的蓝色容器”,Kubernetes会为我们查找这种容器,如果找不到,就会创建一个;如果已经有了,但它是绿色红门的,Kubernetes就会帮我们上色;如果已经有了完全符合要求的容器,因为现有内容和预期内容一致,所以Kubernetes什么都不会做。回到软件容器的话题,我们可以说:“我想要一个名字叫web的Pod,其中应该有单独的容器,运行的是nginx镜像”。
如果这个Pod不存在,Kubernetes会创建出来。如果符合我们要求的Pod已经存在,Kubernetes无需进行任何动作。
在上述基础上,Kubernetes的ReplicaSet可以对web应用进行伸缩,来满足多容器或Pod的运行需要。
有了ReplicaSet,我们就可以告诉Kubernetes:“我需要一个叫做web的ReplicaSet,其中包含3个Pod,这些Pod符合如下规范:……”,Kubernetes会根据这个指令来确认,是不是刚好有三个符合规范的Pod。如果我们从头开始,就会创建这3个Pod。如果已经有了3个Pod,什么事都不会发生。
我们可以修改现存ReplicaSet的副本数量,以此来完成伸缩。Kubernetes会根据伸缩指令来创建或删除Pod,让Pod数量符合要求。高可用方面,因为Kubernetes会持续的对集群进行监控,确保无论什么情况下都保有指定数量的运行实例。如果节点当机,恰好其中有一个web所属的Pod,Kubernetes会另外创建一个Pod来替换它。如果节点没有当机,不过是有一段时间无法联系或者没有响应,那么它再次恢复可用之后,就会多出一个Pod,Kubernetes会中止一个Pod来保证数量符合要求。
Kubernetes中的Deployment编排器负责驱动的ReplicaSet。这里,Deployment并不会直接负责Pod的创建和删除。它会把这些工作委托给一个或多个ReplicaSet。在我们创建Deployment的时候,它会用自己的Pod规范创建一个ReplicaSet。当更新一个Deployment并修改副本数量时,它会把更新内容传递给下游的ReplicaSet。
在本申请实施例中,Deployment侧的Pod规范包含了为Pod分配本地存储卷资源。
图1是本发明实施例针对kubernetes系统提供本地存储卷的方法的流程图,图1所示的方法可以由下文对应的系统执行,具体包括如下步骤:
S102,Deployment编排器在启用自身Pod的容器前,向K8s组件发送本地存储卷提供请求,本地存储卷提供请求携带有用于为Deployment编排器的Pod提供本地存储卷的注解信息。
应理解,这里所述的本地存储卷用于Pod的非持久化数据,Pod中的容器在提供服务时,如果需要用到Pod的非持久化数据,则可以向本地存储卷获取,而不采用网络拉取的方式。
本地存储卷的注解信息可以是提供本地存储卷所需要用到的信息,比如:本地存储卷的服务ID,Deployment编排器ID等,以及本地存储卷同步Pod的非持久化数据所采用的机制等,这里本文不作具体限定。
在实际应用中,如果Deployment编排器对应的容器服务经常要使用到Pod的非持久化数据,则可以为该Deployment编排器配置自主向K8s组件发送本地存储卷提供请求的功能。
S104,K8s组件基于本地存储卷提供请求,确定Deployment编排器的Pod所属的目标节点,并基于注解信息生成目标节点对应的目标存储卷提供任务。
在kubernetes架构下,同一Deployment编排器下的Pod可以来自kubernetes中不同的节点。Kubernetes的节点可以是一个虚拟机或者物理机器,作为Pod的载体。
本申请实施例中,K8s组件可以视为一个调度中心,负责收集各个Deployment编排器提交的本地存储卷提供请求,并将其配置成各自对应节点的存储卷提供任务。
S106,存储卷控制器对K8s组件生成的存储卷提供任务进行监听,并在监听到目标节对应的目标存储卷提供任务后,将目标存储卷提供任务发送至目标节点的节点代理。
本申请实施例中,存储卷控制器负责将K8s组件生成的存储卷提供任务分配对应节点的节点代理,由节点代理负责完成本地存储卷的提供。
S108,目标节点的节点代理基于接收到的目标存储卷提供任务,控制目标节点为Deployment编排器的Pod提供本地存储卷。
具体地,目标节点的节点代理接收到的目标存储卷提供任务后,检查目标节点是否已经存在Deployment编排器的Pod的本地存储卷;如果不存在,则控制目标节点创建本地存储卷,并提供至Deployment编排器的Pod;如果存在,则控制目标节点沿用该已经存在的本地存储卷,以作为该目标存储卷提供任务所需提供的本地存储卷。
在上述基础之上,注解信息指示有Deployment编排器的Pod的本地存储卷是否支持数据删除;目标节点的节点代理在控制目标节点为Deployment编排器的Pod提供本地存储卷的过程中,若检查出目标节点已经存在Deployment编排器的Pod的本地存储卷,且注解信息指示该已经存在的本地存储卷支持数据删除,则可以删除掉该已经存在的本地存储卷中的数据。
应理解,本申请实施例的Deployment编排器在自身Pod的本地存储卷完成提供后,即可启用自身Pod的容器以进行服务。在实际应用中,目标节点为Deployment编排器的Pod提供本地存储卷后,可以通过发送通知消息的方式来向所属Deployment编排器告知本地存储卷已经完成提供。
基于本申请实施例的方法,kubernetes系统的Deployment能够主动向K8s组件申请对自身Pod提供本地存储卷,并注解提供本地存储卷所需要的相关信息。之后,K8s组件将各个Deployment发起的本地存储卷提供请求转换成对应节点的任务分配给节点代理,由节点代理控制节点按照注解完成本地存储卷的提供,从而存储Deployment下的Pod的非持久化数据,以减少容器运行服务时需要网络拉取数据的次数,进而有效降低服务的延迟,甚至是服务因网络拉取失败而终止的概率。
应理解,提供的本地存储卷用于同步对应Pod中的非持久化数据。在实际应用中,本申请实施例的方法可以通过数据镜像备份工具,备份Deployment编排器的Pod的非持久化数据。当目标节点为Deployment编排器的Pod提供本地存储卷后,所属的节点代理可以使用数据镜像备份工具,将备份的非持久化数据直接同步至目标节点的本地存储卷中,从而支持后续容器的服务运行。
比如,以rsync(一种数据镜像备份工具)为例。目标节点的节点代理在控制目标节点提供本地本地存储卷后,可以获取Deployment编排器最新的rsync配置文件,并将rsync配置文件发送至目标节点,以控制目标节点启用rsyncd服务,按照rsync配置文件,将rsync备份的Deployment编排器的Pod的非持久数据同步至提供的本地存储卷中。
这里,Deployment编排器可以在注解信息中注明其Pod的本地存储卷的数据同步方式,比如说是主动数据同步方式和被动数据同步方式。在主动数据同步方式下,目标节点的节点代理在控制目标节点为所述Deployment编排器的Pod提供本地存储卷后,可以直接将数据镜像备份工具备份的Deployment编排器的Pod的非持久化数据同步至提供的本地存储卷中;在被动数据同步方式下,目标节点的节点代理在控制目标节点为Deployment编排器的Pod提供本地存储卷后,则需要基于针对该提供的本地存储卷的数据同步指令,将数据镜像备份工具备份的Deployment编排器的Pod的非持久化数据同步至提供的本地存储卷中。
这里需要说明的是,如果目标节点之前已经为Deployment编排器的Pod创建提供了本地存储卷,也可以采用上述主动数据同步方式或被动数据同步方式,对继续沿用的本地存储卷进行数据同步。此外,rsync提供的是持续性的数据同步服务,后续只要是触发了数据同步条件(比如距上一次数据同步的时长达到rsync配置的数据同步间隔时长要求),就会自动对目标节点的本地存储卷进行数据同步。
下面结合实际的应用场景,对本申请实施例的方法进行示例性介绍。
本应用场景的kubernetes系统使用hostpath(一种存储卷)作为Pod的非持久化数据的本地存储介质。kubernetes系统中的各模块功能如图2所示,包括:
Deployment(编排器):
本应用场景中,Deployment通过prestart指令为其Pod发起本地存储卷提供请求。prestart是deoloyment启动容器之前的指令,携带用于为其Pod提供本地存储卷的注解信息。Deployment在确认prestart指令执行完成之后才会启动Pod中的容器,这样可以避免本地存储卷和对应数据未准备好就提供服务,避免业务发生异常。
其中,注解信息可以指明hostpath提供后是否直接进行数据同步,以及当前节点已经存在为Pod提供的hostpath时,是否可以对hostpath中的数据进行删除等。
K8s(组件):
如图2的步骤1所示,deployment提交prestart指令到k8s,k8s将deployment的本地存储卷提供请求记录至自身的etcd中,并为deployment描述的pod分配相对应的节点node,也就是将deployment的本地存储卷提供请求转换成node执行的hostpath提供任务。这样本系统的hostpathcontroller可以读取到node的hostpath提供任务,并调用node上的agent执行hostpath提供流程。
Hostpathcontroller(Hostpath存储卷控制器):
如图2的步骤2所示,Hostpathcontroller是一个扩展了k8s的组件,这个组件通过k8s的incluster方式部署到k8s,并给这个组件授予可以读取k8s和deployment的权限。
Hostpathcontroller持续监听k8s是否产生node的hostpath提供任务,并对node的hostpath提供任务的注解信息进行合法性检查,比如是否包含有k8s未要求的非法字符等。同时,检查通过后,联系对应node的nodeagent,以通过nodeagent向node下发hostpath提供指令。这里需要说明的是,hostpath提供指令除了提供hostpath外,还可以控制node对hostpath执行同步数据。
hostpath提供指令包含有Deployment针对hostpath的注解,比如:
1)Hostpath.controller.io/hostpath:”/data1/example/a”//需要node提供的hostpath
2)Hostpath.controller.io/sync-cmd:”rsync-avz--port=873example.com::rsync-data/data1/example/b”//需要node执行的同步数据的指令
3)Hostpath.controller.io/delete_hostpath:”no”//禁止删除已经存在的hostpath的数据。
Nodeagent(节点代理):
如图2的步骤3所示Nodeagent接收hostpathcontroller分配的hostpath提供任务,将对应的hostpath提供指令下发至Node。
Node提供hostpath的流程如下:
检测是否已经存在hostpath。
如果不存在hostpath,则创建并提供hostpath。
如果存在hostpath,且hostpath提供指令的注解明确禁止删除已经存在的hostpath的数据,则直接沿用hostpath即可;如果存在hostpath,且hoostpath提供指令的注解明确可以删除已经存在的hostpath的数据,则清除hostpath中的旧数据后再沿用。
之后,对hostpath进行数据同步,导入Pod的非持久化数据。
Node可以通过周期发送rsync检查指令,检测Node数据同步目录的rsync数据是否已经同步完成了,比如当连续2次检查数据都是一样的,则判断同步完成了。
如图2的步骤4所示,数据同步完成之后,Node向所属deployment的prestart状态队列写入hostpath提供完成的通知消息。这里prestart状态队列中可以限定只能存储一个通知消息,只有上个通知消息被读取之后,才能写入其他新的通知消息。
具体地,如图2的步骤9所示,nodeagent连接到stackstack,执行hostpathcontroller发过来到指令。如图2的步骤10所示,prestart状态队列提供一个http服务,供deployment来拉取hostpath提供完成的状态数据,之后deployment就可以继续启动自身Pod中的容器。
Gitlab:
如图2的步骤5所示,Gitlab存储hostpathcontroller发送过来的rsync配置,等待saltmaster获取最新的rsync配置文件。
Saltmaster:
如图2的步骤6所示,Saltmaster连接到gitlab,同步rsync配置文件到本地,供saltstack使用。
Saltstack:
Saltstack同步saltmaster的rsync配置文件到node,同时重启rsyncd服务,以执行nodeagent的提供hostpath的指令。检查是否已经存在了hostpath,如果存在了就抹除已经存在的,如果不存在就创建新的,并设置好hostpath权限。
同步saltmaster的rsync配置文件到node,同时重启rsyncd服务。
执行nodeagent的提供hostpath的指令。检查是否已经存在了hostpath,如果存在了就抹除已经存在的,如果不存在就创建新的,并设置好hostpath权限。
执行rsync同步数据指令或者等待被动推送数据。
以上应用场景是对本申请实施例方法的示例性介绍。在不脱离本文上述原理基础之上,还可以进行适当的变化,比如本申请实施例还可以为Pod创建emptyDir存储卷以存储非持久化数据,由于远离相同,这里不再举例赘述。
图3是本申请的一个实施例kubernetes系统300的结构图,包括:Deployment编排器310、K8s组件320、存储卷控制器330和节点代理340,其中:
所述Deployment编排器310在启用自身Pod的容器前,向所述K8s组件320发送本地存储卷提供请求,所述本地存储卷提供请求携带有用于为所述Deployment编排器310的Pod提供本地存储卷的注解信息。
所述K8s组件320基于所述本地存储卷提供请求,确定所述Deployment编排器310的Pod所属的目标节点,并基于所述注解信息生成所述目标节点对应的目标存储卷提供任务。
所述存储卷控制器330对所述K8s组件320生成的存储卷提供任务进行监听,并在监听到所述目标节对应的目标存储卷提供任务后,将所述目标存储卷提供任务发送至所述目标节点的节点代理340。
所述目标节点340的节点代理基于接收到的所述目标存储卷提供任务,控制所述目标节点为所述Deployment编排器310的Pod提供本地存储卷。
本申请实施例的kubernetes系统中,kubernetes系统的Deployment能够主动向K8s组件申请对自身Pod提供本地存储卷,并注解提供本地存储卷所需要的相关信息。之后,K8s组件将各个Deployment发起的本地存储卷提供请求转换成对应节点的任务分配给节点代理,由节点代理控制节点按照注解完成本地存储卷的提供,从而存储Deployment下的Pod的非持久化数据,以减少容器运行服务时需要网络拉取数据的次数,进而有效降低服务的延迟,甚至是服务因网络拉取失败而终止的概率。
可选地,所述目标节点的节点代理基于接收到的所述目标存储卷提供任务,检查所述目标节点是否已经存在所述Deployment编排器的Pod的本地存储卷;如果目标节点不存在所述Deployment编排器的Pod的本地存储卷,则控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷。如果目标节点已经存在所述Deployment编排器的Pod的本地存储卷,则目标节点沿用已经存在的本地存储卷,以作为所述目标存储卷提供任务所需提供的本地存储卷提供本地存储卷。
可选地,所述注解信息指示有所述Deployment编排器的Pod的本地存储卷是否支持数据删除。所述目标节点的节点代理在控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷的过程中,若检查出所述目标节点已经存在所述Deployment编排器的Pod的本地存储卷,且所述注解信息指示该已经存在的本地存储卷支持数据删除,则删除掉该已经存在的本地存储卷中的数据。
可选地,所述kubernetes系统基于本地的数据镜像备份工具,备份所述Deployment编排器的Pod的非持久化数据;所述目标节点的节点代理在控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷后,将所述数据镜像备份工具备份的所述Deployment编排器的Pod的非持久化数据同步至提供的本地存储卷中。
可选地,所述注解信息还指示有所述Deployment编排器的Pod的本地存储卷的数据同步方式,数据同步方式包括主动数据同步方式和被动数据同步方式;其中,在所述主动数据同步方式下,所述目标节点的节点代理在控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷后,直接将所述数据镜像备份工具备份的所述Deployment编排器的Pod的非持久化数据同步至提供的本地存储卷中;在所述被动数据同步方式下,所述目标节点的节点代理在控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷后,基于针对该提供的本地存储卷的数据同步指令,将所述数据镜像备份工具备份的所述Deployment编排器的Pod的非持久化数据同步至提供的本地存储卷中。
其中,所述数据镜像备份工具为rsync;所述目标节点的节点代理获取所述Deployment编排器最新的rsync配置文件,并将rsync配置文件发送至所述目标节点,以控制所述目标节点启用rsyncd服务,按照所述rsync配置文件,将所述rsync备份的所述Deployment编排器的Pod的非持久数据同步至提供的本地存储卷中。
可选地,所述目标节点在为所述Deployment编排器的Pod提供本地存储卷后,向所述Deployment编排器发送本地存储卷完成提供的通知消息;所述Deployment编排器基于所述通知消息,启用自身Pod的容器。
提供本地存储卷本地存储卷完成提供的通知消息可选地,所述本地存储卷提供请求用于提供hostpath存储卷或emptyDir存储卷。
显然,本说明书实施例的kubernetes系统可以作为图1和图2所示方法的执行主体,因此可以实现该方法在图1和图2中所示的步骤和相应的功能。由于原理相同,本文不再具体赘述。
图4是本说明书的一个实施例电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
其中,处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成kubernetes系统。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
控制Deployment编排器在启用自身Pod的容器前,向所述K8s组件发送本地存储卷提供请求,所述本地存储卷提供请求携带有用于为所述Deployment编排器的Pod提供本地存储卷的注解信息。
控制K8s组件基于所述本地存储卷提供请求,确定所述Deployment编排器的Pod所属的目标节点,并基于所述注解信息生成所述目标节点对应的目标存储卷提供任务。
控制存储卷控制器对所述K8s组件生成的存储卷提供任务进行监听,并在监听到所述目标节对应的目标存储卷提供任务后,将所述目标存储卷提供任务发送至所述目标节点的节点代理。
控制目标节点的节点代理基于接收到的所述目标存储卷提供任务,控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷。
基于本发明实施例的电子设备,kubernetes系统的Deployment能够主动向K8s组件申请对自身Pod提供本地存储卷,并注解提供本地存储卷所需要的相关信息。之后,K8s组件将各个Deployment发起的本地存储卷提供请求转换成对应节点的任务分配给节点代理,由节点代理控制节点按照注解完成本地存储卷的提供,从而存储Deployment下的Pod的非持久化数据,以减少容器运行服务时需要网络拉取数据的次数,进而有效降低服务的延迟,甚至是服务因网络拉取失败而终止的概率。
上述如本说明书图1所示实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
应理解,本说明书实施例的电子设备可以实现图1和图2所示的实施例的功能。由于原理相同,本文不再赘述。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
此外,本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令。
其中,上述该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例中的方法,并具体用于执行成员对象所实施的步骤:
控制Deployment编排器在启用自身Pod的容器前,向所述K8s组件发送本地存储卷提供请求,所述本地存储卷提供请求携带有用于为所述Deployment编排器的Pod提供本地存储卷的注解信息。
控制K8s组件基于所述本地存储卷提供请求,确定所述Deployment编排器的Pod所属的目标节点,并基于所述注解信息生成所述目标节点对应的目标存储卷提供任务。
控制存储卷控制器对所述K8s组件生成的存储卷提供任务进行监听,并在监听到所述目标节对应的目标存储卷提供任务后,将所述目标存储卷提供任务发送至所述目标节点的节点代理。
控制目标节点的节点代理基于接收到的所述目标存储卷提供任务,控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷。
本领域相关负责人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域相关负责人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。此外,本领域普通相关负责人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。

Claims (10)

1.一种针对kubernetes系统提供本地存储卷的方法,其特征在于,所述kubernetes系统包括:Deployment编排器、K8s组件、存储卷控制器和节点代理,所述方法包括:
所述Deployment编排器在启用自身Pod的容器前,向所述K8s组件发送本地存储卷提供请求,所述本地存储卷提供请求携带有用于为所述Deployment编排器的Pod提供本地存储卷的注解信息;
所述K8s组件基于所述本地存储卷提供请求,确定所述Deployment编排器的Pod所属的目标节点,并基于所述注解信息生成所述目标节点对应的目标存储卷提供任务;
所述存储卷控制器对所述K8s组件生成的存储卷提供任务进行监听,并在监听到所述目标节点对应的目标存储卷提供任务后,将所述目标存储卷提供任务发送至所述目标节点的节点代理;
所述目标节点的节点代理基于接收到的所述目标存储卷提供任务,控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷。
2.如权利要求1所述的方法, 其特征在于,
所述目标节点的节点代理基于接收到的所述目标存储卷提供任务,控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷,包括:
所述目标节点的节点代理基于接收到的所述目标存储卷提供任务,检查所述目标节点是否已经存在所述Deployment编排器的Pod的本地存储卷;
若不存在,则控制所述目标节点创建本地存储卷并提供至所述Deployment编排器的Pod;
若存在,则控制所述目标节点沿用已经存在的本地存储卷,作为所述目标存储卷提供任务所需提供的本地存储卷。
3.如权利要求2所述的方法,其特征在于,
所述注解信息指示有所述Deployment编排器的Pod的本地存储卷是否支持数据删除;
其中,所述目标节点的节点代理在控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷的过程中,若检查出所述目标节点已经存在所述Deployment编排器的Pod的本地存储卷,且所述注解信息指示该已经存在的本地存储卷支持数据删除,则删除掉该已经存在的本地存储卷中的数据。
4.如权利要求1所述的方法,其特征在于,
所述kubernetes系统基于本地的数据镜像备份工具,备份所述Deployment编排器的Pod的非持久化数据;
所述方法还包括:
所述目标节点的节点代理在控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷后,将所述数据镜像备份工具备份的所述Deployment编排器的Pod的非持久化数据同步至提供的本地存储卷中。
5.如权利要求4所述的方法,其特征在于,
所述注解信息还指示有所述Deployment编排器的Pod的本地存储卷的数据同步方式,数据同步方式包括主动数据同步方式和被动数据同步方式;
其中,在所述主动数据同步方式下,所述目标节点的节点代理在控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷后,直接将所述数据镜像备份工具备份的所述Deployment编排器的Pod的非持久化数据同步至提供的本地存储卷中;在所述被动数据同步方式下,所述目标节点的节点代理在控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷后,基于针对该提供的本地存储卷的数据同步指令,将所述数据镜像备份工具备份的所述Deployment编排器的Pod的非持久化数据同步至提供的本地存储卷中。
6.如权利要求4所述的方法,其特征在于,
所述数据镜像备份工具为rsync;
所述目标节点的节点代理在控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷后,将所述数据镜像备份工具备份的所述Deployment编排器的Pod的非持久化数据同步至提供的本地存储卷中,包括:
所述目标节点的节点代理获取所述Deployment编排器最新的rsync配置文件,并将rsync配置文件发送至所述目标节点,以控制所述目标节点启用rsyncd服务,按照所述rsync配置文件,将所述rsync备份的所述Deployment编排器的Pod的非持久数据同步至提供的本地存储卷中。
7.如权利要求1所述的方法, 其特征在于,还包括:
所述目标节点在为所述Deployment编排器的Pod提供本地存储卷后,向所述Deployment编排器发送本地存储卷完成提供的通知消息;以及,
所述Deployment编排器基于所述通知消息,启用自身Pod的容器。
8.一种kubernetes系统,其特征在于,包括:Deployment编排器、K8s组件、存储卷控制器和节点代理,其中:
所述Deployment编排器在启用自身Pod的容器前,向所述K8s组件发送本地存储卷提供请求,所述本地存储卷提供请求携带有用于为所述Deployment编排器的Pod提供本地存储卷的注解信息;
所述K8s组件基于所述本地存储卷提供请求,确定所述Deployment编排器的Pod所属的目标节点,并基于所述注解信息生成所述目标节点对应的目标存储卷提供任务;
所述存储卷控制器对所述K8s组件生成的存储卷提供任务进行监听,并在监听到所述目标节点对应的目标存储卷提供任务后,将所述目标存储卷提供任务发送至所述目标节点的节点代理;
所述目标节点的节点代理基于接收到的所述目标存储卷提供任务,控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷。
9.如权利要求8所述的系统, 其特征在于,
所述kubernetes系统基于本地的数据镜像备份工具,备份所述Deployment编排器的Pod的非持久化数据;所述目标节点的节点代理在控制所述目标节点为所述Deployment编排器的Pod提供本地存储卷后,将所述数据镜像备份工具备份的所述Deployment编排器的Pod的非持久化数据同步至创建的本地存储卷中。
10.如权利要求8所述的系统, 其特征在于,
所述目标节点在为所述Deployment编排器的Pod提供本地存储卷后,向所述Deployment编排器发送本地存储卷完成提供的通知消息;以及,
所述Deployment编排器基于所述通知消息,启用自身Pod的容器。
CN202111445581.6A 2021-11-30 2021-11-30 一种针对kubernetes系统提供本地存储卷的方法及系统 Active CN114356214B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111445581.6A CN114356214B (zh) 2021-11-30 2021-11-30 一种针对kubernetes系统提供本地存储卷的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111445581.6A CN114356214B (zh) 2021-11-30 2021-11-30 一种针对kubernetes系统提供本地存储卷的方法及系统

Publications (2)

Publication Number Publication Date
CN114356214A CN114356214A (zh) 2022-04-15
CN114356214B true CN114356214B (zh) 2023-12-01

Family

ID=81096639

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111445581.6A Active CN114356214B (zh) 2021-11-30 2021-11-30 一种针对kubernetes系统提供本地存储卷的方法及系统

Country Status (1)

Country Link
CN (1) CN114356214B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491776A (zh) * 2018-11-06 2019-03-19 北京百度网讯科技有限公司 任务编排方法和系统
CN110427249A (zh) * 2019-07-26 2019-11-08 重庆紫光华山智安科技有限公司 任务分配方法、pod初始化方法及相关装置
CN111880902A (zh) * 2020-07-29 2020-11-03 北京浪潮数据技术有限公司 一种pod创建方法、装置、设备及可读存储介质
CN112015517A (zh) * 2020-08-05 2020-12-01 北京链飞未来科技有限公司 一种基于k8s集群的区块链节点动态迁移方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491776A (zh) * 2018-11-06 2019-03-19 北京百度网讯科技有限公司 任务编排方法和系统
CN110427249A (zh) * 2019-07-26 2019-11-08 重庆紫光华山智安科技有限公司 任务分配方法、pod初始化方法及相关装置
CN111880902A (zh) * 2020-07-29 2020-11-03 北京浪潮数据技术有限公司 一种pod创建方法、装置、设备及可读存储介质
CN112015517A (zh) * 2020-08-05 2020-12-01 北京链飞未来科技有限公司 一种基于k8s集群的区块链节点动态迁移方法和系统

Also Published As

Publication number Publication date
CN114356214A (zh) 2022-04-15

Similar Documents

Publication Publication Date Title
US10237118B2 (en) Efficient application build/deployment for distributed container cloud platform
CN109491776B (zh) 任务编排方法和系统
CN113296792B (zh) 存储方法、装置、设备、存储介质和系统
US20180143856A1 (en) Flexible job management for distributed container cloud platform
US9152491B2 (en) Job continuation management apparatus, job continuation management method and job continuation management program
US8473702B2 (en) Information processing apparatus, execution environment transferring method and program thereof
US11675622B2 (en) Leader election with lifetime term
CN113282564B (zh) 数据存储方法、系统、节点和存储介质
CN113467873A (zh) 虚拟机的调度方法、装置、电子设备及存储介质
CN111464603B (zh) 一种服务器扩容方法及扩容系统
KR20150111608A (ko) 가상화 서버의 이중화를 위한 제어 방법 및 이를 위한 가상화 제어 장치
CN112052230A (zh) 多机房数据同步方法、计算设备及存储介质
CN111694639A (zh) 进程容器地址的更新方法、装置和电子设备
US10169440B2 (en) Synchronous data replication in a content management system
CN111506388B (zh) 容器性能探测方法、容器管理平台及计算机存储介质
CN114356214B (zh) 一种针对kubernetes系统提供本地存储卷的方法及系统
CN109002263B (zh) 存储容量的调整方法及装置
CN112035062A (zh) 云计算的本地存储的迁移方法、计算机设备及存储介质
JP6287308B2 (ja) レプリケーション制御システム、レプリケーション制御方法、及び、レプリケーション制御プログラム
CN114172903B (zh) slurm调度系统的节点扩容方法、装置、设备和介质
CN114827177A (zh) 一种分布式文件系统的部署方法、装置及电子设备
CN114615263A (zh) 集群在线迁移方法、装置、设备及存储介质
CN113342511A (zh) 一种分布式任务管理系统及方法
CN112749042B (zh) 一种应用运行方法和装置
CN111767113A (zh) 一种用于实现容器驱逐的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20230309

Address after: Room 501-502, 5/F, Sina Headquarters Scientific Research Building, Block N-1 and N-2, Zhongguancun Software Park, Dongbei Wangxi Road, Haidian District, Beijing, 100193

Applicant after: Sina Technology (China) Co.,Ltd.

Address before: 100080 7th floor, Sina headquarters scientific research building, plot n-1 and n-2, Zhongguancun Software Park Phase II (West Expansion), Dongbeiwang West Road, Haidian District, Beijing

Applicant before: Sina.com Technology (China) Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant