System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种Kubernetes虚拟节点上容器状态同步的改进方法和系统技术方案_技高网

一种Kubernetes虚拟节点上容器状态同步的改进方法和系统技术方案

技术编号:40903893 阅读:2 留言:0更新日期:2024-04-18 14:35
本发明专利技术涉及Serverless容器技术领域,是一种Kubernetes虚拟节点上容器状态同步的改进方法和系统,具体方法包括:在底层的每个Pod中注入一个Agent,当Agent运行起来后,可以直接向上面的Kube‑Apiserver上报Pod的状态;识别底层Pod的状态,并通过Virtual Kubelet轮询机制来保证底层Pod的状态;根据底层集群中Pod的启动过程,把虚拟节点中的PodList拆分成多个队列;在虚拟节点中,把不同阶段的Pod放到到对应的队列中;通过Reconciler一次性查询本队列所有Pod的状态,并识别pod状态,执行改变策略;提取每条队列的轮询间隔时间,并对间隔时间进行动态自适应调整。本发明专利技术解决了现有技术中,轮询过程中周期性地调用Provider的API轮询每个容器的状态的时间间隔设置不合适的问题。

【技术实现步骤摘要】

本专利技术涉及serverless容器,是一种kubernetes虚拟节点上容器状态同步的改进方法和系统。


技术介绍

1、virtual kubelet是kubernetes kubelet的一种实现,它实现了kubelet的部分能力。从kube-apiserver的角度来看,virtual kubelet看起来像普通的kubelet,但其关键区别在于virtual kubelet没有在其所在的宿主机上调试容器,而是调用其他地方的api创建容器。

2、在现有已公开的专利技术技术中,如申请公开号为cn115185628a的专利公开了一种基于容器实例实现集群虚拟节点的方法及系统,所述的方法通过virtual kubelet创建虚拟节点,监听到pod的操作调用容器实例服务对应方法,创建svc从而实现外部访问容器实例上的pod。

3、上述专利底层pod的状态需通过agent向上层kube-apiserver上报,这需要进行网络通信,可能会产生额外的网络开销和延迟。


技术实现思路

1、本部分的目的在于概述本专利技术的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和专利技术名称中可能会做些简化或省略以避免使本部分、说明书摘要和专利技术名称的目的模糊,而这种简化或省略不能用于限制本专利技术的范围。

2、本专利技术所要解决的技术问题是针对现有技术中,都是周期性地调用provider的api轮询每个容器的状态。这个轮询的时间间隔,没有合适的值。间隔设置过大,会导致虚拟节点中的容器状态更新延迟,从业务上看就是serverless集群的容器启动慢。间隔设置过小,会导致provider的api压力增加,导致provider能支撑的虚拟节点数量减少。

3、为了达到上述目的,本专利技术一种kubernetes虚拟节点上容器状态同步的改进方法的技术方案包括如下步骤:

4、s1:在底层的每个pod中注入一个agent,当agent运行起来后,可以直接向上面的kube-apiserver上报pod的状态;

5、s2:识别底层pod的状态,并通过virtual kubelet轮询机制来保证底层pod的状态;

6、s3:根据底层集群中pod的启动过程,把虚拟节点中的podlist拆分成多个队列;

7、s4:在虚拟节点中,把不同阶段的pod放到到对应的队列中;

8、s5:通过reconciler一次性查询本队列所有pod的状态,并识别pod状态,执行改变策略;

9、s6:提取每条队列的轮询间隔时间,并对间隔时间进行动态自适应调整。

10、具体地,所述s1执行的前提环境包括:已经有自己的容器实例产品,即provider,并且提供了createpod、deletepod、getpodliststatus等api接口,供virtual kubelet调用。

11、具体地,s1包括如下具体步骤:

12、s11:开发虚拟节点的功能,并编译成二进制文件,制作docker镜像;

13、s12:创建一个kubernetes集群;

14、s13:利用镜像部署虚拟节点,注册到kubernetes集群中;

15、s14:在kubernetes集群中,创建一系列pod,把它调度到虚拟节点上。

16、具体地,s2中,所述virtual kubelet轮询机制包括如下具体步骤:

17、s21:注册自身为一个节点,并在kubernetes api服务器上创建对应的节点对象;

18、s22:virtual kubelet开始轮询kubernetes api服务器,以获取当前分配给它的pod;

19、s23:查询kubernetes api服务器上的调度器绑定列表;

20、s24:若有pod被分配给virtual kubelet,它会为这些pod生成对应的容器实例,并在第三方容器编排平台上创建相应的容器;

21、s25:当容器创建成功后,virtual kubelet会向kubernetesapi服务器报告pod的状态,并更新节点的状态;

22、s26:如果pod的状态发生变化,virtual kubelet会相应地更新kubernetes api服务器上的pod状态;

23、s27:virtual kubelet在时间间隔内,重复执行上述步骤。

24、具体地,s26中,所述pod的状态的变化包括:完成、失败或异常。

25、具体地,s3中,所述底层集群中pod的启动过程包括:创建中(pending)、调度中(scheduling)、镜像拉取中(imagepulling)、启动中(starting)、运行中(running)。

26、具体地,s5中,所述识别pod状态,执行改变策略包括:当本队列的pod的状态发生改变时,把它从本队列移出,放入到对应的队列中去。

27、具体地,s6中,所述每条队列的轮询间隔时间包括:ti={t1,t2...tn},其中,由于每个阶段的pod转换到下一个阶段的时间会不一样,所以每条队列的轮询间隔时间也是不一样。

28、具体地,s6中,动态适应性调整包括:

29、s61:计算时间间隔为x内,本队列的pod转换到下一阶段的平均时间计算公式为:

30、s62:根据平均时间对轮询间隔时间进行动态适应性调整。

31、s63:当底层集群的真实pod的状态发生改变时,虚拟节点中的pod也能相对同时地保持状态的同步。

32、另外,本专利技术一种kubernetes虚拟节点上容器状态同步的改进系统包括如下模块:

33、pod agent模块、virtual kubelet模块、podlist拆分模块、pod分发模块、reconciler模块、动态调整模块;

34、所述pod agent模块用于在每个底层pod中注入的agent,负责向上层的kube-apiserver上报pod的状态;

35、所述virtual kubelet模块通过轮询机制,监测底层pod的状态变化,并保持其与虚拟节点对应的pod状态一致;

36、所述podlist拆分模块根据底层集群中pod的启动过程,将虚拟节点中的podlist拆分成多个队列,每个队列包含不同阶段的pod;

37、所述pod分发模块将不同阶段的pod根据其状态放入对应的队列中。

38、所述reconciler模块用于查询每个队列中所有pod的状态,并识别pod状态,执行相应的改变策略。

39、所述动态调整模块用于提取每个队列的轮询间隔时间,并对间隔时间进行动态自适应调整,以优化系统性能。

40、与现有技术相比,本专利技术的技术效果如下:

41、1、本本文档来自技高网...

【技术保护点】

1.一种Kubernetes虚拟节点上容器状态同步的改进方法,其特征在于:所述方法包括如下具体步骤:

2.根据权利要求1所述的一种Kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,S1执行的前提环境包括:已经有自己的容器实例产品,并且提供了CreatePod、DeletePod、GetPodListStatus等API接口,供virtual kubelet调用。

3.根据权利要求1所述的一种Kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,S1包括如下具体步骤:

4.根据权利要求1所述的一种Kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,S2中,所述Virtual Kubelet轮询机制包括如下具体步骤:

5.根据权利要求1所述的一种Kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,S26中,所述Pod的状态的变化包括:完成、失败或异常。

6.根据权利要求1所述的一种Kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,S3中,所述底层集群中Pod的启动过程包括:创建中、调度中、镜像拉取中、启动中、运行中。

7.根据权利要求1所述的一种Kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,S5中,所述识别pod状态,执行改变策略包括:当本队列的Pod的状态发生改变时,把它从本队列移出,放入到对应的队列中去。

8.根据权利要求7所述的一种Kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,S6中,所述每条队列的轮询间隔时间包括:Ti={T1,T2...Tn},其中,由于每个阶段的Pod转换到下一个阶段的时间会不一样,所以每条队列的轮询间隔时间也是不一样。

9.根据权利要求1所述的一种Kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,S6中,动态适应性调整包括:

10.一种Kubernetes虚拟节点上容器状态同步的改进系统,其基于如权利要求1-9任一项所述的一种Kubernetes虚拟节点上容器状态同步的改进方法实现,其特征在于,所述系统包括以下模块:

...

【技术特征摘要】

1.一种kubernetes虚拟节点上容器状态同步的改进方法,其特征在于:所述方法包括如下具体步骤:

2.根据权利要求1所述的一种kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,s1执行的前提环境包括:已经有自己的容器实例产品,并且提供了createpod、deletepod、getpodliststatus等api接口,供virtual kubelet调用。

3.根据权利要求1所述的一种kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,s1包括如下具体步骤:

4.根据权利要求1所述的一种kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,s2中,所述virtual kubelet轮询机制包括如下具体步骤:

5.根据权利要求1所述的一种kubernetes虚拟节点上容器状态同步的改进方法,其特征在于,s26中,所述pod的状态的变化包括:完成、失败或异常。

6.根据权利要求1所述的一种kubernetes虚拟节点上容器状态同步的改进方...

【专利技术属性】
技术研发人员:彭世柱
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1