技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种Kubernetes集群版本自动升级方法及系统  >  正文

一种Kubernetes集群版本自动升级方法及系统

  • 国知局
  • 2024-10-09 15:23:16

本发明涉及kubernetes集群,特别涉及一种kubernetes集群版本自动升级方法及系统。

背景技术:

1、kubernetes是一套用于自动部署、扩展和管理容器化应用程序的开源系统。kubernetes开源社区每年会进行数次版本更新,带来新的功能、改进和修复补丁。kubernetes遵循“n-2”支持政策,即最近的3个次要版本获得安全和错误修复,一个版本通常会支持14个月左右。因此,作为kubernetes使用者,系统管理员通常需要每隔一段时间对其版本进行升级。

2、在kubernetes集群中,版本升级是一个重要的任务,它可能涉及多个复杂的步骤,包括备份数据、驱逐节点、替换组件镜像、验证服务可用性等。目前kubernetes版本升级通常依赖系统管理员手动完成,其中按照升级的方式不同又分为下述两种方案:

3、1、原地升级:这种方式由系统管理员基于集群管理工具或者脚本,在原有集群上手动进行升级,常见的集群管理工具有juju、kubeadm、kops、kubespray等。例如发明专利cn113312063b基于kubernetes的软件系统快速部署升级方法,描述了这种升级方式。

4、2、替换升级:不同于原地升级,这种方式直接搭建一套新版本kubernetes集群,将原有集群上的应用迁移至新集群,然后进行新旧集群的流量切换,由新集群对外提供服务,旧集群随之弃用。

5、上述方案中的第一种方案原地升级,其虽然不会占用额外资源,但通常无法解决升级自动化的问题,即系统管理员通常需要依赖工具或者脚本,手动执行升级步骤,如:系统备份,新版本镜像文件分发,服务重启,升级后的验证等。例如发明专利cn113312063b所公开的基于kubernetes的软件系统快速部署升级方法,仅描述了升级过程中的版本更新部分,无法完成整个流程的自动化,若升级过程出现失败,往往依赖管理员人工介入,执行回滚操作。

6、上述方案中的第二种方案替换升级,其虽然升级风险相对于原地升级较小,但需要占用额外的资源搭建一套新集群,完成升级替换后旧集群随之弃用,当业务规模较大时,这种方案带来的资源浪费通常是不可忽视的。

7、因此,如何提供一种能够完成安全、自动、可控的完成kubernetes集群版本升级方法及系统,是目前亟待解决的问题。

技术实现思路

1、本发明提供了一种kubernetes集群版本自动升级方法及系统,以解决现有技术中的上述技术问题。

2、根据本发明的第一方面,提供了一种kubernetes集群版本自动升级方法。

3、其中,所述kubernetes集群版本自动升级方法,包括:

4、在kubernetes集群中以crd形式创建版本更新资源,并对所述版本更新资源配置版本更新控制器;

5、利用所述版本更新控制器监听kubernetes集群更新事件,在所述版本更新控制器监听到kubernetes集群更新事件的情况下,从所述版本更新资源获取版本更新数据;

6、根据所述版本更新数据,执行kubernetes集群的版本升级任务并反馈版本升级状态。

7、其中,所述版本更新资源包括:升级任务名称、升级任务所属命名空间、升级任务镜像、升级任务规格和升级任务状态;其中,所述升级任务规格包括:升级任务计划、升级任务步骤和目标版本信息;所述升级任务状态包括:升级当前进度、成功节点数据量和失败节点数量。

8、其中,根据所述版本更新数据,执行kubernetes集群的版本升级任务包括:根据所述版本更新数据中的升级规格和升级任务镜像,对当前kubernetes集群节点的版本镜像进行替换;并在替换成功的情况下,重启当前kubernetes集群节点。

9、此外,根据所述版本更新数据,执行kubernetes集群的版本升级任务还包括:

10、在当前kubernetes集群节点重启成功后,获取当前kubernetes集群节点的pod状态和/或控制平面组件状态;在当前kubernetes集群节点的所有pod状态和/或所有控制平面组件状态均为已启动的情况下,判定当前kubernetes集群节点版本升级成功;否之,判定当前kubernetes集群节点版本升级失败,并在kubernetes集群宿主机节点目录中查找预先备份数据,执行恢复操作;

11、在当前kubernetes集群节点重启成功后,在当前kubernetes集群节点中部署测试服务,并利用所述测试服务对所述kubernetes集群节点进行测试,在测试结果为当前kubernetes集群节点所有功能均能正常启动或运行的情况下,判定当前kubernetes集群节点版本升级成功;否之,判定当前kubernetes集群节点版本升级失败,并在kubernetes集群宿主机节点目录中查找预先备份数据,执行恢复操作。

12、其中,在根据所述版本更新数据中的升级规格和升级任务镜像,对当前kubernetes集群节点的版本镜像进行替换时,根据所述升级任务计划中的计划时间或节点数量,定时执行kubernetes集群节点的版本镜像替换操作或并行执行多个kubernetes集群节点的版本镜像替换操作。

13、根据本发明的第二方面,提供了一种kubernetes集群版本自动升级系统。

14、其中,所述kubernetes集群版本自动升级系统,包括:

15、自定义部署模块,用于在kubernetes集群中以crd形式创建版本更新资源,并对所述版本更新资源配置版本更新控制器;

16、任务监听模块,用于利用所述版本更新控制器监听kubernetes集群更新事件,在所述版本更新控制器监听到kubernetes集群更新事件的情况下,从所述版本更新资源获取版本更新数据;

17、版本升级模块,用于根据所述版本更新数据,执行kubernetes集群的版本升级任务并反馈版本升级状态。

18、其中,所述版本更新资源包括:升级任务名称、升级任务所属命名空间、升级任务镜像、升级任务规格和升级任务状态;其中,所述升级任务规格包括:升级任务计划、升级任务步骤和目标版本信息;所述升级任务状态包括:升级当前进度、成功节点数据量和失败节点数量。

19、其中,所述版本升级模块在根据所述版本更新数据,执行kubernetes集群的版本升级任务时,根据所述版本更新数据中的升级规格和升级任务镜像,对当前kubernetes集群节点的版本镜像进行替换;并在替换成功的情况下,重启当前kubernetes集群节点。

20、此外,所述版本升级模块在根据所述版本更新数据,执行kubernetes集群的版本升级任务时,在当前kubernetes集群节点重启成功后,获取当前kubernetes集群节点的pod状态和/或控制平面组件状态;在当前kubernetes集群节点的所有pod状态和/或所有控制平面组件状态均为已启动的情况下,判定当前kubernetes集群节点版本升级成功;否之,判定当前kubernetes集群节点版本升级失败,并在kubernetes集群宿主机节点目录中查找预先备份数据,执行恢复操作;在当前kubernetes集群节点重启成功后,在当前kubernetes集群节点中部署测试服务,并利用所述测试服务对所述kubernetes集群节点进行测试,在测试结果为当前kubernetes集群节点所有功能均能正常启动或运行的情况下,判定当前kubernetes集群节点版本升级成功;否之,判定当前kubernetes集群节点版本升级失败,并在kubernetes集群宿主机节点目录中查找预先备份数据,执行恢复操作。

21、其中,所述版本升级模块在根据所述版本更新数据中的升级规格和升级任务镜像,对当前kubernetes集群节点的版本镜像进行替换时,根据所述升级任务计划中的计划时间或节点数量,定时执行kubernetes集群节点的版本镜像替换操作或并行执行多个kubernetes集群节点的版本镜像替换操作。

22、本发明提供的技术方案可以包括以下有益效果:

23、本发明通过引入自定义资源和任务控制器,自动化集群版本升级的各个步骤,减少了手工操作出错的风险,从而降低了管理集群的成本,此外,通过规范化和自动化的升级流程,确保了每次升级都按照相同的步骤和标准进行,提高了升级的可靠性和一致性,减少了意外情况和故障风险。

24、另外,本发明由于是基于自定义资源进行开展的,因此,可允许用户根据自己的需求和环境定制升级计划和流程,可灵活地配置升级步骤和策略,以满足特定的业务需求和安全标准。而通过自动化的升级、验证和恢复等步骤,确保了升级过程对集群的影响最小化,保持集群的稳定性和可用性。即使在升级过程中出现问题,也能够快速恢复到之前的状态,减少对业务的影响。

25、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

本文地址:https://www.jishuxx.com/zhuanli/20241009/308558.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。