一种自动化更新Kubernetes调度器的方法与流程

文档序号:37591235发布日期:2024-04-18 12:23阅读:9来源:国知局
一种自动化更新Kubernetes调度器的方法与流程

本发明属于kubernetes云平台领域,具体的说是一种自动化更新kubernetes调度器的方法。


背景技术:

1、目前生产环境一般以单调度器方式部署,以规避多调度器因为状态不共享带来的资源竞争问题,调度器是操作系统中的一个重要功能部件,主要负责将系统中的任务或进程调度到各个cpu上去执行,而kubernetes调度器以静态pod方式部署,由kubelet守护进程管理,当manifest配置文件变更时,kubelet会重新拉起调度器容器组,所以更新时需手动更改配置文件,从而触发新的调度器pod拉起。目前业界常规方式是ssh登录到对应节点,更新调度器的manifest文件以调整调度器的镜像和配置内容,但是这种方式方式缺乏任务状态管理,且难以处理大量节点。

2、如授权公告号为cn111352717b的中国专利公开了一种实现kubernetes自定义调度器的方法,其特征是,将pod事件存入到队列中,并根据pod资源yaml配置中的“schedulername”字段过滤掉不需要调度的pod;指定应用创建的pod绑定到指定工作节点的配置;将管理员配置的pod绑定节点的配置格式化之后,提交到etcd集群中;将statefulset资源提交到kubernetes集群中;判断是否需要调度该pod;本发明涉及容器编排技术领域。该实现kubernetes自定义调度器的方法,当pod重建时,该statefulset创建的pod依然会调度到该节点之上运行,保证挂载在工作节点上的数据pod依然能够读取到,当要将指定pod绑定到新的工作节点之上时,通过容器云平台修改绑定配置,自定义调度器会根据该pod新的绑定配置,将pod绑定到新的工作节点之上运行,能够满足实际的使用需求。

3、如申请公开号为cn116841718a的中国专利公开了基于kubernetes的物理资源调度方法及调度器,本发明包括:通过获取kubernetes集群中的调度信息,调度信息包括待调度pod的pod信息以及各节点的负载信息;然后遍历各节点,将待调度pod的pod信息以及当前节点的负载信息输入至调度评价模型,得到调度评价模型输出的待调度pod被调度至当前节点时的评价信息;最好基于各节点对应的评价信息,对待调度pod进行调度。该方法引入了当前节点的负载信息,避免了只考虑硬件资源而导致的节点上物理资源出现异常的情况,保证了kubernetes集群的安全运行,提高了kubernetes集群的稳定性。

4、以上现有技术均存在以下问题:1)无法自动化、规模化处理,无法满足大量的调度器更新需求;2)调度器更新缺乏保障机制;3)依赖ssh。


技术实现思路

1、针对现有技术的不足,本发明提出了一种自动化更新kubernetes调度器的方法,基于job方式更新调度器,生成作业任务的描述文件,仅在master节点运行,且增加滚动更新调度器、调度器更新回滚保障机制,减少更新过程对集群稳定性的影响。

2、为实现上述目的,本发明提供如下技术方案:

3、一种自动化更新kubernetes调度器的方法,包括:

4、步骤s1:配置apiserver虚拟机,部署高可用kubernetes集群;

5、步骤s2:配置job controller,利用job controller生成master节点的kubernetes jobs并提交到apiserver部署的kubernetes集群;

6、步骤s3:kubernetes集群中的kubelet检测到新的job配置文件,滚动更新机制拉起job配置文件对应的pod并执行更新调度器逻辑;

7、步骤s4:检查job状态,验证更新结果。

8、具体的,所述步骤s1中高可用kubernetes集群包括3个master节点。

9、具体的,所述步骤s2的具体步骤包括:

10、步骤s201:获取master节点信息;

11、步骤s202:生成job描述信息,并对绑定的节点进行限制;

12、步骤s203:根据不同的灰度策略提交任务。

13、具体的,所述步骤s202中对绑定的节点进行限制的具体方法包括:

14、步骤s2021:对于有label标注的节点使用nodeselector限定job执行范围;

15、步骤s2022:没有label标注的集群,通过api查询master节点列表,然后通过nodename限定job的执行范围。

16、具体的,所述步骤s203的具体步骤包括:

17、步骤s2031:根据需求和策略,确定要使用的灰度策略;

18、步骤s2032:使用yaml或json配置文件创建一个kubernetes jobs;

19、步骤s2033:使用dockerfile构建新的docker镜像,为新的docker镜像添加标签,并将构建的docker镜像推送到一个可访问的dockerregistry;

20、步骤s2034:在kubernetes jobs的配置文件中,更新容器镜像的引用,指向新的docker镜像,并根据灰度策略,更新部署目标、端口号的配置参数;

21、步骤s2035:使用kubectl命令或kubernetesapi将更新后的kubernetes jobs提交到apiserver部署的kubernetes集群。

22、具体的,所述步骤s3的具体步骤包括:

23、步骤s301:检测新的job配置文件,分析文件内容并根据定义的pod布局和策略以创建和启动新的pod;

24、步骤s302:增加滚动更新机制,在滚动更新机制中,kubelet将新的pod添加到kubernetes集群中,同时将旧的pod进行替换或删除;

25、步骤s303:拉起job配置文件对应的pod;

26、步骤s304:启动pod,容器执行相应的更新调度器逻辑。

27、具体的,所述步骤s4的具体步骤包括:

28、步骤s401:使用kubernetesapi或kubectl命令获取更新后job的状态;

29、步骤s402:分析获取到的job状态信息,检查是否有错误或异常;

30、步骤s403:根据job配置文件中的定义,验证更新后的调度器运行状态;

31、步骤s404:验证更新结果,进行性测试测试和验证操作;

32、步骤s405:清理不再需要的临时文件或资源,持续监控调度器的性能和集群的状态。

33、具体的,所述步骤s402中状态信息包括:job的名称、描述、执行策略、依赖项。

34、具体的,一种自动化更新kubernetes调度器的方法,其特征在于,包括:jobcontroller模块、jobs模块,

35、所述job controller模块,用于生成作业任务的描述文件,并提交到apiserver;

36、所述jobs模块,用于执行升级调度器的逻辑。

37、具体的,所述job controller模块包括:状态管理单元、任务调度单元、任务执行单元、更新管理单元,

38、所述状态管理单元,用于维护job的状态信息;

39、所述任务调度单元,用于根据定义的执行策略和依赖关系,负责确定job执行的具体任务和顺序;

40、所述任务执行单元,用于与kubernetes api交互,创建、启动和监控pod来执行任务;

41、所述更新管理单元,用于分析新的job配置文件,根据滚动更新机制逐步引入新的版本,并协调任务的滚动升级过程。

42、与现有技术相比,本发明的有益效果是:

43、1.本发明提出一种自动化更新kubernetes调度器的方法,并进行了架构、运行步骤和流程上的优化改进,系统具备流程简单,投资运行费用低廉,生产工作成本低的优点。

44、2.本发明提出一种自动化更新kubernetes调度器的方法,基于kubernetes job实现升级调度器逻辑,不依赖ssh,适用于不能使用ssh的环境,支持查看任务进度信息和状态。

45、3.本发明提出一种自动化更新kubernetes调度器的方法,增加作业状态管理、灰度更新和操作回滚功能,更新过程更加可靠,减少更新失败带来的影响,同时,更新方式采用自动化更新,适用于大规模更新场景。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1