CN116360834A - 基于OSTree的Kubernetes集群原地升级方法及系统 - Google Patents
基于OSTree的Kubernetes集群原地升级方法及系统 Download PDFInfo
- Publication number
- CN116360834A CN116360834A CN202310347744.XA CN202310347744A CN116360834A CN 116360834 A CN116360834 A CN 116360834A CN 202310347744 A CN202310347744 A CN 202310347744A CN 116360834 A CN116360834 A CN 116360834A
- Authority
- CN
- China
- Prior art keywords
- upgrade
- upgrading
- node
- controller
- kubernetes
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000011065 in-situ storage Methods 0.000 title claims abstract description 28
- 239000000306 component Substances 0.000 claims abstract description 60
- 239000008358 core component Substances 0.000 claims abstract description 9
- 238000003860 storage Methods 0.000 claims description 18
- 230000002159 abnormal effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000012423 maintenance Methods 0.000 description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000000889 atomisation Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 229910052751 metal Inorganic materials 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出了一种基于OSTree的Kubernetes集群原地升级方法及系统,该升级方法包括:将运行在Kubernetes集群中的升级控制器进行升级,升级控制器以Deployment的形式部署;在升级控制器升级至新版本后,新版本的升级控制器对CNI组件进行升级;升级Kubernetes的核心相关组件,核心相关组件至少包括Master节点上的核心组件;在核心相关组件升级完成的情况下,引入OSTree升级每个节点的kubelet和操作系统,kubelet是操作系统软件包的一部分。
Description
技术领域
本申请涉及分布式系统技术领域,尤其涉及一种基于OSTree的Kubernetes集群原地升级方法及系统。
背景技术
Kubernetes(K8S)是一个全新的基于容器技术的分布式架构解决方案,Kubernetes用于自动部署、扩缩和管理容器化应用程序的开源系统,是目前应用最广泛的云原生支撑平台,Kubernetes的所有组件均需要不断升级以修复软件bug和安全漏洞,作为一个Kubernetes是一个包含多个组件的分布式系统,Kubernetes的升级过程需要遵循特定的顺序和步骤,以避免组件间的版本不兼容。依赖人工手动进行升级操作面临易出错、高耗时的问题;此外,大部分用来支撑线上云原生业务系统的Kubernetes集群通常要求其升级过程不干扰、不中断上层业务,并且通常只有有限的升级时间窗口,因此需要在升级每个节点前做好节点负载的迁移,同时要有升级遇到异常后的回滚方案;再者,除Kubernetes的组件升级外,节点的操作系统也同样需要时常升级以修复操作系统的bug和安全漏洞;最后,考虑到裸金属部署场景下无额外的物理节点供替换式升级,Kubernetes需支持节点的原地升级。
于现有技术中,Kubernetes的升级可采用如下方式进行升级:(1)手动升级就是完全由运维人员来控制升级顺序,并执行升级操作。其缺点是耗时耗力,并且容易出错。Kubernetes集群的升级过程需要按组件逐个节点升级,是一个相对串行化的过程。因此如果由运维人员手动执行,需要全程看管,耗费较多时间和精力。此外,整个过程必须按照一定的顺序进行,否则可能因组件之间的版本不兼容而使整个集群不可用,影响甚至中断上层业务。(2)半自动升级指可支持Kubernetes部分或全部组件的自动化升级,但无法兼顾操作系统升级的方案。这种升级技术一定程度上解决了手动升级耗时及易出错的问题,但操作系统的升级依然需要依赖运维人员手动执行。而内核或者一些依赖库的升级要求重启节点或者重启节点上Kubernetes组件,因此手动升级操作系统依然可能是一个繁琐且耗时的工作。(3)替换式自动升级指其升级过程需要依赖额外节点,采用先部署一个目标新版本的节点加入集群,之后再从集群移除一个当前旧版本的节点,来逐个替换式升级节点的方案。由于新部署的节点可以使用新版本的操作系统版本,因此这个技术解决了半自动升级技术中操作系统同步升级的问题。然而,这种升级方式需要借由一个额外的节点,在例如裸金属部署的场景下,很难临时调度出来额外的物理服务器资源,面临实际落地执行的难度。
基于现有技术中Kubernetes的升级的存在的缺陷,亟需要提出一种无人看管、不影响业务、同时支持回滚的Kubernetes集群原地升级方法。
发明内容
为了解决现有技术中无法兼顾无人看管的自动化式进行Kubernetes升级操作的同时,兼顾升级前迁移负载以不中断上层业务以及具备升级失败随时回滚的能力,以及节点操作系统的升级和不依赖额外节点的原地升级等问题,本申请提出了一种基于OSTree的Kubernetes集群原地升级方法及系统。
于本申请的第一方面提出了一种基于OSTree的Kubernetes集群原地升级方法,该方法包括:
将运行在Kubernetes集群中的升级控制器进行升级,升级控制器以Deployment的形式部署;
在升级控制器升级至新版本后,新版本的升级控制器对CNI组件进行升级;
升级Kubernetes的核心相关组件,核心相关组件至少包括Master节点上的核心组件;
在核心相关组件升级完成的情况下,引入OSTree作为Kubernetes集群的节点升级每个节点的kubelet和操作系统软件包,所述kubelet是操作系统软件包的一部分。
于上述第一方面的一种可能实现方式中,对运行在Kubernetes集群中的升级控制器进行升级包括:
当前运行的升级控制器创建一个管理资源更新任务的控制器;
根据将新版本对应的Deployment资源执行资源更新对应的kubectl apply命令,将新版本对应的Deployment资源更新至当前Kubernetes集群中。
于上述第一方面的一种可能实现方式中,新版本的升级控制器对CNI组件进行升级包括:
当前运行的升级控制器创建一个管理CNI更新任务的控制器;
根据将新版本对应的新版本CNI组件对应的YAML执行CNI更新对应的kubectlapply命令,将新版本CNI组件对应的YAML更新至当前Kubernetes集群中。
于上述第一方面的一种可能实现方式中,升级Kubernetes的核心相关组件包括:
基于kubeadm命令行工具,顺序依次升级控制平面节点;
在最后一个控制平面节点升级完成的情况下,顺序依次升级负载节点;
命令行的命令均通过预先创建的一个调度到此节点的管理节点升级更新任务的控制器来实现的,并在被升级节点上本地运行。
于上述第一方面的一种可能实现方式中,升级操作系统包括:
在升级控制器重启待升级节点后,创建一个被调度至待升级节点的Pod运行升级命令;
根据升级命令,在每个待升级节点的本地执行操作系统的升级;
于上述第一方面的一种可能实现方式中,重启待升级节点前包括:
升级控制器排干述待升级节点上的负载,并将负载通过Kubernetes的调度迁移至其他预设节点上。
于上述第一方面的一种可能实现方式中,基于OSTree的操作系统的镜像地址,镜像地址的版本用于实现异常回滚。
本申请的第二方面提供了一种基于OSTree的Kubernetes集群原地升级系统,应用于如前述的基于OSTree的Kubernetes集群原地升级方法中,的系统包括:
第一升级单元,用于将运行在Kubernetes集群中的升级控制器进行升级,升级控制器以Deployment的形式部署;
第二升级单元,用于在升级控制器升级至新版本后,新版本的升级控制器会对CNI组件进行升级;
第三升级单元,用于升级Kubernetes的核心相关组件,核心相关组件至少包括Master节点上的核心组件;
第四升级单元,用于在核心相关组件升级完成的情况下,引入OSTree作为Kubernetes集群的节点升级每个节点的kubelet和操作系统软件包,所述kubelet是操作系统软件包的一部分。
本申请的第三方面提供了一种电子设备,包括:
存储器,存储器用于存储处理程序;
处理器,处理器执行处理程序时实现如前任意一项的基于OSTree的Kubernetes集群原地升级方法。
本申请的第四方面一种可读存储介质,可读存储介质上存储有处理程序,处理程序被处理器执行时实现如前述任意一项的基于OSTree的Kubernetes集群原地升级方法。
本发明提出的技术方案,至少具备以下有益技术效果:
本申请通过在Kubernetes内部署运行一个升级控制器,实现了Kubernetes集群的无人看管的自动化升级,避免依赖外部控制器,升级控制器所实现的自动化升级过程,采用的是对节点逐个滚动升级的方式,通过先排干节点负载,再重启节点,最后恢复节点的负载调度,实现了对Kubernetes集群负载业务零中断;整个升级过程遵循逐个节点滚动升级,不需要额外的节点资源,不影响、不中断上层业务;整个升级过程在原地节点实现,避免依赖额外的节点资源;基于OSTree的无人看管、不影响业务、支持回滚的Kubernetes集群原地升级技术。
进一步的,使用OSTree作为Kubernetes节点操作系统来管理、升级节点操作系统软件包具备原子化升级特点,同时支持在升级失败时及时回滚系统,以避免节点因升级失败而长时间无法恢复的情况出现。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1根据本申请的实施例,示出了一种基于OSTree的Kubernetes集群原地升级方法的流程示意图;
图2根据本申请的实施例,示出了一种基于OSTree的Kubernetes集群原地升级系统框图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
OSTree是一个用于对基于Linux的操作系统进行版本更新的系统,它可以被视为“面向操作系统二进制文件的git”。就像git可以随意切换和回滚代码的历史版本,OSTree可以很方便地切换操作系统的历史版本,实现原子化升级、回滚的功能。不同于传统的Linux包管理系统,OSTree并不能直接安装或者升级某个包,而是控制整个操作系统所有包的整体化升级。这样的做法能更精确的掌控每个节点所运行操作系统的版本和内容,尽可能减少运维过程可能出现的差错。
目前使用OSTree的Linux发行版有Fedora CoreOS、Photon OS等。本专利的技术目前主要应用在Fedora CoreOS上,但对其他OSTree的Linux发行版同样适用。
为了解决现有技术中Kubernetes集群的升级需要依赖外部控制器,升级过程中业务需要暂停上层业务,升级过程出现意外无法回滚也无法使得集群恢复至升级前的状态等问题,本申请提出了一种基于OSTree的Kubernetes集群原地升级方法及系统。本申请提出的技术方案将升级控制器部署运行于集群内,实现控制器的自升级,应对未知的升级操作步骤,结合OSTree实现节点操作系统的同步自动化升级,原地升级,避免依赖额外的节点资源。
具体地,如图1所示,根据本申请的实施例示出了一种基于OSTree的Kubernetes集群原地升级方法的流程示意图,该方法具体可以包括:
步骤S1:将运行在Kubernetes集群中的升级控制器进行升级,升级控制器以Deployment的形式部署。可以理解的是,Kubernetes集群升级过程首先是将升级控制器自身升级到相应的新版本,后续的升级步骤交由升级后的新版本的升级控制器来控制,在每个版本发布时,无法预计后续版本是否对升级过程有一些附属操作或要求,Kubernetes集群的每次升级首选升级升级控制器本身,可以将这些附属操作或要求实现在新版本的升级控制器中,从而满足升级操作的要求。
可以理解的是,Deployment的升级都会将整个Pod重建,势必会对业务造成一定的影响,而本实施例中的升级控制器作为容器级别,其自身升级到相应的新版本变动的范围非常可控,只会将需要升级的升级控制器内做重建,其余容器包括网络、挂载盘等都不会受到影响。
步骤S2:在升级控制器升级至新版本后,新版本的升级控制器对CNI组件进行升级。可以理解的是,在升级控制器完成升级至新版本后,新版本的升级控制器会通过Kubernetes API来更新升级CNI(container network interface,容器网络接口)组件的资源对象。
于本申请的一些实施例中,升级CNI组件优先于Kubernetes的核心相关组件,从而可以避免当前CNI组件无法兼容新版本Kubernetes的情况出现。
步骤S3:升级Kubernetes的核心相关组件,核心相关组件至少包括Master节点上的核心组件。可以理解的是,Kubernetes包含Master节点和Node节点上的组件,Master节点负责集群调度、对外接口、访问控制、对象的生命周期维护等工作;Node节点负责维护容器的生命周期,例如创建、删除、停止Docker容器,负责容器的服务抽象和负载均衡等工作。其中Master节点上运行着三个核心组件包括用于暴露kubernetes API的API Server,负责资源调度的进程Scheduler,集群里资源对象的自动化控制中心Controller Mananger,Node节点上运行两个核心组件包括Kubelet,Kuberbetes Service资源的载体Kube-Proxy,Kubelet是操作系统软件包套件的一部分。
于本申请的一些实施例中,核心相关组件可以包括包括kube-apiserver、kube-controller-manager、kube-scheduler和kube-proxy组件,核心相关组件的升级可以基于本地节点进行升级。
步骤S4:在核心相关组件升级完成的情况下,引入OSTree作为Kubernetes集群的节点升级每个节点的kubelet和操作系统软件包,kubelet是操作系统软件包的一部分。可以理解的是,Kubernetes已经完成了除kubelet外的升级,尚未升级的有每个节点的kubelet和操作系统,Kubelet负责本Node节点上的Pod的创建、修改、监控、删除等Pod的全生命周期管理,Kubelet实时向API Server发送所在计算节点(Node)的信息;kubelet通过软件包的形式发布和安装,升级kubelet实际上包含在操作系统的升级中。
可以理解的是,Kubernetes集群中可以包含多种类型的资源对象例如,Pod、Label、Service、Replication Controller等,所有的资源对象都可以kubectl工具进行增、删、改、查等操作,并将其持久化存储。
于本申请的一些实施例中,由于操作系统可以使用的OSTree,因此新版本的kubelet以及所有需要升级的其他软件包都会包含在一个OSTree升级包中,操作系统的升级与每个节点的kubelet同时进行。
可以理解的是,Kubelet负责维护pod(应用实例)集合,原地升级通过原地替换kubelet组件的方式对节点进行版本升级,从而保证了节点上的Pod不会因为集群升级而重建,确保了业务的连贯性。
于本申请的一些实施例中,升级升级控制器及其CNI的升级均可以通过kubernetes的Job(管理任务的控制器)创建一个或多个Pod执行kubectl apply命令,kubectl apply命令可以接受JSON和YAML格式的描述文件,进而将相关更新的请求提交给kubernetes做更新。
于上述步骤S1中,对运行在Kubernetes集群中的升级控制器进行升级包括:
当前运行的升级控制器创建一个管理资源更新任务的控制器;
根据将新版本对应的Deployment资源执行资源更新对应的kubectl apply命令,将新版本对应的Deployment资源更新至当前Kubernetes集群中。
可以理解的是,由于升级控制器是运行在Kubernetes集群中的一个Deployment,包括:对Deployment部署组的管理对Pod应用实例的管理等,在S1的升级流程中,用户可根据需求对Kubernetes集群中任一部署组Deployment的容器镜像更新,为了将其升级到新版本,将当前版本的升级控制器即通过创建一个管理资源更新任务的控制器即KubernetesJob来执行升级控制器升级的kubectl apply命令,在需要进行应用镜像版本升级时,将Deployment资源更新到Kubernetes集群中。
于本申请的一实施例中,升级升级控制器的过程中通过Kubernetes API请求接口服务器删除指定应用实例和创建应用实例,来更新这个Deployment对象。
于上述步骤S2中,新版本的升级控制器对CNI组件进行升级包括:
当前运行的升级控制器创建一个管理CNI更新任务的控制器;
根据将新版本对应的新版本CNI组件对应的YAML执行CNI更新对应的kubectlapply命令,将新版本CNI组件对应的YAML更新至当前Kubernetes集群中。
可以理解的是,在升级控制器完成升级后,新版本的升级控制器会对CNI组件进行升级。其过程类似升级控制器自身的升级过程,即通过创建一个管理CNI更新任务的控制器Kubernetes Job来执行包括输入的CNI更新资源的文件名或控制台,进行CNI更新的资源配置,将新版本CNI组件对应的YAML格式的描述文件部署文件更新到Kubernete,依赖Kubernetes对Deployment和DaemonSet的更新支持,来实现新旧版本的交替更新。
于上述步骤S3中,升级Kubernetes的核心相关组件包括:
基于kubeadm命令行工具,顺序依次升级控制平面节点;
在最后一个控制平面节点升级完成的情况下,顺序依次升级负载节点;
命令行的命令均通过预先创建的一个调度到此节点的管理节点升级更新任务的控制器来实现的,并在被升级节点上本地运行。
可以理解的是,一个Kubernetes集群至少包括一组工作节点和一个控制平面节点,Kubernetes集群工作节点托管运行容器化应用程序的pod,控制平面节点管理集群中的工作节点和Pod。
可以理解的是,升级Kubernetes的核心相关组件可以利用官方的kubeadm命令行工具,遵循先控制平面节点、后负载节点的顺序,对于第一个被升级的控制平面节点,执行kubeadm upgrade apply命令,第一个被升级的控制平面节点升级完成后,随后对其他控制平面节点依次执行kubeadm upgrade node命令,当控制平面节点升级完成后,对所有的负载节点依次执行kubeadm upgrade node命令执行负载节点的升级。
于上述步骤S4中,升级操作系统包括:
在升级控制器重启待升级节点后,创建一个被调度至待升级节点的Pod运行升级命令;
根据升级命令,在每个待升级节点的本地执行操作系统的升级。
可以理解的是,kubeadm命令行工具的命令均需要在被升级节点上本地运行即原地升级,升级命令也都是通过创建一个调度到此节点的Kubernetes Job来实现的。
可以理解的是,OSTree只支持记录和部署完整的(可引导的)文件系统树,OSTree的升级需要在每个节点的本地执行即原地升级,需要通过重启节点才能生效,OSTree的升级同样采用创建一个被调度到该节点的Pod来运行升级命令的方式。
于本申请的一些实施例中,重启待升级节点前包括:升级控制器排干述待升级节点上的负载,并将负载通过Kubernetes的调度迁移至其他预设节点上。
可以理解的是,为了避免影响甚至中断上层业务,在重启待升级节点前,升级控制器会先排干(drain)节点上的负载,将这些负载通过Kubernetes的调度迁移到其他节点上,在待升级节点完成排干后,升级控制器才会重启待升级节点。
于本申请的一些实施例中,操作系统的升级命令中包括:基于OSTree的操作系统的镜像地址,镜像地址的版本用于实现异常回滚。可以理解的是,OSTree的升级命令为rpm-ostree rebase—experimental ostree-unverified-registry:<image>,其中<image>是新版本OSTree镜像的地址,此地址并非固定值,而是随镜像仓库地址及OSTree版本的不同而不同,当出现异常需要回滚时,只需将镜像地址替换为老版本对应的镜像地址即可,可以使用相同的命令实现系统升级异常时的回滚。
在本申请的一些实施例中,还提供了一种基于OSTree的Kubernetes集群原地升级系统,应用于上述实施例中所涉及的原地升级方法中,其中图2示出了一种基于OSTree的Kubernetes集群原地升级系统结构示意图,该种原地升级系统包括:
第一升级单元01,用于将运行在Kubernetes集群中的升级控制器进行升级,所述升级控制器以Deployment的形式部署;
第二升级单元02,用于在所述升级控制器升级至新版本后,所述新版本的升级控制器会对CNI组件进行升级;
第三升级单元03,用于升级Kubernetes的核心相关组件,所述核心相关组件至少包括Master节点上的核心组件;
第四升级单元04,用于在核心相关组件升级完成的情况下,引入OSTree作为Kubernetes集群的节点升级每个节点的kubelet和操作系统软件包,kubelet是操作系统软件包的一部分。
可以理解的是,上述基于OSTree的Kubernetes集群原地升级系统中的各个功能模块执行与前述实施例中基于OSTree的Kubernetes集群原地升级方法相同的步骤流程,在此不做赘述。
在本申请的一些实施例中,还提供了一种电子设备。该种电子设备中包含存储器和处理器,其中存储器用于对处理程序进行存储,处理器则根据指令对处理程序进行执行。当处理器对处理程序进行执行时,使得前述实施例中的基于OSTree的Kubernetes集群原地升级方法得以实现。
本申请提出的技术方案涉及方法、装置、系统、芯片、电子设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种基于OSTree的Kubernetes集群原地升级方法,其特征在于,所述的方法包括:
将运行在Kubernetes集群中的升级控制器进行升级,所述升级控制器以Deployment的形式部署;
在所述升级控制器升级至新版本后,所述新版本的升级控制器对CNI组件进行升级;
升级Kubernetes的核心相关组件,所述核心相关组件至少包括Master节点上的核心组件;
在所述核心相关组件升级完成的情况下,引入OSTree作为Kubernetes集群的节点升级每个节点的kubelet和操作系统软件包,所述kubelet是操作系统软件包的一部分。
2.根据权利要求所述的一种基于OSTree的Kubernetes集群原地升级方法,其特征在于,对运行在Kubernetes集群中的升级控制器进行升级包括:
当前运行的升级控制器创建一个管理资源更新任务的控制器;
根据将新版本对应的Deployment资源执行资源更新对应的kubectl apply命令,将新版本对应的Deployment资源更新至当前Kubernetes集群中。
3.根据权利要求1所述的一种基于OSTree的Kubernetes集群原地升级方法,其特征在于,所述新版本的所述升级控制器对CNI组件进行升级包括:
当前运行的升级控制器创建一个管理CNI更新任务的控制器;
根据将新版本对应的新版本CNI组件对应的YAML执行CNI更新对应的kubectl apply命令,将新版本CNI组件对应的YAML更新至当前Kubernetes集群中。
4.根据权利要求1所述的一种基于OSTree的Kubernetes集群原地升级方法,其特征在于,升级Kubernetes的所述核心相关组件包括:
基于kubeadm命令行工具,顺序依次升级控制平面节点;
在最后一个所述控制平面节点升级完成的情况下,顺序依次升级负载节点;
所述命令行的命令均通过预先创建的一个调度到此节点的管理节点升级更新任务的控制器来实现的,并在被升级节点上本地运行。
5.根据权利要求1所述的一种基于OSTree的Kubernetes集群原地升级方法,其特征在于,升级所述操作系统包括:
在所述升级控制器重启待升级节点后,创建一个被调度至所述待升级节点的Pod运行升级命令;
根据所述升级命令,在每个待升级节点的本地执行操作系统的升级。
6.根据权利要求5所述的一种基于OSTree的Kubernetes集群原地升级方法,其特征在于,重启所述待升级节点前包括:
所述升级控制器排干所述述待升级节点上的负载,并将所述负载通过Kubernetes的调度迁移至其他预设节点上。
7.根据权利要求5所述的一种基于OSTree的Kubernetes集群原地升级方法,其特征在于,所述操作系统的升级命令中包括:基于OSTree的所述操作系统的镜像地址,所述镜像地址的版本用于实现异常回滚。
8.一种基于OSTree的Kubernetes集群原地升级系统,应用于如权利要求1-7任一所述的基于OSTree的Kubernetes集群原地升级方法中,所述的系统包括:
第一升级单元,用于将运行在Kubernetes集群中的升级控制器进行升级,所述升级控制器以Deployment的形式部署;
第二升级单元,用于在所述升级控制器升级至新版本后,所述新版本的升级控制器会对CNI组件进行升级;
第三升级单元,用于升级Kubernetes的核心相关组件,所述核心相关组件至少包括Master节点上的核心组件;
第四升级单元,用于在所述核心相关组件升级完成的情况下,引入OSTree作为Kubernetes集群的节点升级每个节点的kubelet和操作系统软件包,所述kubelet是操作系统软件包的一部分。
9.一种电子设备,其特征在于,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现如权利要求1至7中任意一项所述的基于OSTree的Kubernetes集群原地升级方法。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如权利要求1至7中任意一项所述的基于OSTree的Kubernetes集群原地升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310347744.XA CN116360834A (zh) | 2023-04-03 | 2023-04-03 | 基于OSTree的Kubernetes集群原地升级方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310347744.XA CN116360834A (zh) | 2023-04-03 | 2023-04-03 | 基于OSTree的Kubernetes集群原地升级方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116360834A true CN116360834A (zh) | 2023-06-30 |
Family
ID=86904506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310347744.XA Pending CN116360834A (zh) | 2023-04-03 | 2023-04-03 | 基于OSTree的Kubernetes集群原地升级方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116360834A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116866180A (zh) * | 2023-07-04 | 2023-10-10 | 北京志凌海纳科技有限公司 | 集群升级的测试方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200073957A1 (en) * | 2018-08-29 | 2020-03-05 | Red Hat, Inc. | Preserving symbolic links and paths in a file system using an intermediate file system structure |
CN112947976A (zh) * | 2021-04-26 | 2021-06-11 | 统信软件技术有限公司 | 一种操作系统升级方法、计算设备及存储介质 |
CN115658235A (zh) * | 2022-11-07 | 2023-01-31 | 统信软件技术有限公司 | 一种集群部署方法、计算设备及存储介质 |
-
2023
- 2023-04-03 CN CN202310347744.XA patent/CN116360834A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200073957A1 (en) * | 2018-08-29 | 2020-03-05 | Red Hat, Inc. | Preserving symbolic links and paths in a file system using an intermediate file system structure |
CN112947976A (zh) * | 2021-04-26 | 2021-06-11 | 统信软件技术有限公司 | 一种操作系统升级方法、计算设备及存储介质 |
CN115658235A (zh) * | 2022-11-07 | 2023-01-31 | 统信软件技术有限公司 | 一种集群部署方法、计算设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116866180A (zh) * | 2023-07-04 | 2023-10-10 | 北京志凌海纳科技有限公司 | 集群升级的测试方法及系统 |
CN116866180B (zh) * | 2023-07-04 | 2024-03-01 | 北京志凌海纳科技有限公司 | 集群升级的测试方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9471365B2 (en) | Techniques for performing virtual machine software upgrades using virtual disk swapping | |
EP2946293B1 (en) | Healing cloud services during upgrades | |
JP5367074B2 (ja) | 仮想マシンとアプリケーション・ライフ・サイクルの同期 | |
US8286154B2 (en) | Apparatus and method for live loading of version upgrades in a process control environment | |
US8464246B2 (en) | Automation of mainframe software deployment | |
US20140007092A1 (en) | Automatic transfer of workload configuration | |
US10715594B2 (en) | Systems and methods for update propagation between nodes in a distributed system | |
US11327738B2 (en) | Software and firmware updates in a combined single pane of glass interface | |
CN104823160A (zh) | 虚拟机-保留主机更新 | |
US20210311711A1 (en) | Desired state model for managing lifecycle of virtualization software | |
CN112434008A (zh) | 分布式数据库升级方法、设备及介质 | |
CN112925609B (zh) | OpenStack云平台升级方法及装置 | |
CN116360834A (zh) | 基于OSTree的Kubernetes集群原地升级方法及系统 | |
US20230161643A1 (en) | Lifecycle management for workloads on heterogeneous infrastructure | |
CN110764785B (zh) | 基于开源组件的电力行业云平台工具链及云平台运维方法 | |
CN116149713B (zh) | 一种树型异构网络下的各级设备的程序升级方法及装置 | |
US20230342181A1 (en) | Validation of combined software/firmware updates | |
CN115543393B (zh) | 升级方法、电子设备及存储介质 | |
CN111427588A (zh) | 中止固件包的安装 | |
US11347497B1 (en) | Uniform software and firmware management of clusters of heterogeneous server hardware | |
CN112559006A (zh) | 企业客户端自动升级方法、系统、设备及存储介质 | |
KR102423056B1 (ko) | 부팅 디스크 변경 방법 및 시스템 | |
CN106843952B (zh) | 更新应用中功能模块的方法与装置 | |
CN115277813B (zh) | 超融合集群主机资源控制方法、系统、设备和可读介质 | |
US11853275B2 (en) | Upgrading a database management system deployed in a cloud platform |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20230630 |