CN117407125A - Pod高可用实现方法、装置、设备及可读存储介质 - Google Patents
Pod高可用实现方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN117407125A CN117407125A CN202311720700.3A CN202311720700A CN117407125A CN 117407125 A CN117407125 A CN 117407125A CN 202311720700 A CN202311720700 A CN 202311720700A CN 117407125 A CN117407125 A CN 117407125A
- Authority
- CN
- China
- Prior art keywords
- pod
- storage volume
- state
- node
- target service
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000000903 blocking effect Effects 0.000 claims abstract description 98
- 230000007246 mechanism Effects 0.000 claims description 15
- 238000007726 management method Methods 0.000 description 30
- 239000000306 component Substances 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000013508 migration Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 102100033121 Transcription factor 21 Human genes 0.000 description 1
- 101710119687 Transcription factor 21 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种Pod高可用实现方法、装置、设备及可读存储介质,涉及计算机技术领域,包括当检测到目标业务应用实例Pod需要进行高可用切换时,控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态,并强制删除目标业务Pod及其存储卷关联资源;在新节点上创建新业务Pod及其存储卷关联资源,控制所述新节点与所述存储卷之间的写状态为非阻塞状态;将所述存储卷挂载至所述新业务Pod上,以使新业务Pod基于所述新节点向存储卷进行写操作。通过本申请,能够完成Pod的迁移并避免出现数据双写,以有效实现Pod的高可用。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种Pod高可用实现方法、装置、设备及可读存储介质。
背景技术
随着容器编排系统(Kubernetes,K8S)的快速发展,很多业务都已经或者正在进行容器化。其中,容器存储接口(Container Storage Interface,CSI)作为对接Kubernets的存储插件,可以灵活地实现与第三方存储进行对接,且CSI可以支持多种存储卷(Persistent Volume,PV)的访问模式(Access Modes),比如RWO模式(Read Write Once,可被一个节点写挂载)、ROX模式(Read Only Many,可被多个节点只读挂载)以及RWX(ReadWrite Many 可被多个节点写挂载。
在分布式块存储系统中,存储后端一般都实现多副本模式,因此业务层经常选用单副本并通过ROW模式挂载PV的方式来实现有状态负载(StatefulSet)。其中,由于通过使用RWO模式挂载PV来实现业务比较简单和方便,且存储后端又可以通过多副本模式来保证数据安全,因此使用RWO模式挂载PV的方式是非常常见和实用的。
但是,在Kubernetes中,当挂载PV的节点出现故障时,比如节点重启、管理网断开等,将导致业务Pod(应用实例)不能正常提供服务,并且Kubernets也不能实现Pod的自动迁移,从而造成业务不能实现高可用的问题。其中,Kubernets不能自动迁移Pod的故障原因包括:(1)如果该Pod属于StatefulSet 部署服务,那么该Pod将一直处于terminating(终止中)状态,并且无法被 Kubernetes 迁移到其他正常节点;(2)如果该Pod属于无状态负载(Deployment)部署服务,则该Pod将一直处于terminating状态下,虽然Kubernets在一定时间内可以创建一个新的Pod并且开始调度,但是由于Kubernets限制RWO模式下同一时间PV只能挂载在一个节点上,以致新的Pod无法调度成功;而如果强制启动新的Pod,则可能造成数据双写,进而导致出现数据不一致的问题。
发明内容
本申请提供一种Pod高可用实现方法、装置、设备及可读存储介质,能够完成Pod的迁移并避免出现数据双写,以有效实现Pod的高可用。
第一方面,本申请实施例提供一种Pod高可用实现方法,所述Pod高可用实现方法包括以下步骤:
当检测到目标业务应用实例Pod需要进行高可用切换时,控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态,并强制删除目标业务Pod及其存储卷关联资源;
在新节点上创建新业务Pod及其存储卷关联资源,控制所述新节点与所述存储卷之间的写状态为非阻塞状态;
将所述存储卷挂载至所述新业务Pod上,以使新业务Pod基于所述新节点向存储卷进行写操作。
结合第一方面,在一种实施方式中,在所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态的步骤之前,还包括:
判断所述旧节点与所述存储卷之间的写状态是否为阻塞状态;
若所述旧节点与所述存储卷之间的写状态为阻塞状态,则执行所述强制删除目标业务Pod及其存储卷关联资源的步骤;
若所述旧节点与所述存储卷之间的写状态为非阻塞状态,则执行所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态的步骤。
结合第一方面,在一种实施方式中,在所述控制所述新节点与所述存储卷之间的写状态为非阻塞状态的步骤之前,还包括:
判断新节点与所述存储卷之间的写状态是否为阻塞状态;
若所述新节点与所述存储卷之间的写状态为阻塞状态,则执行所述控制所述新节点与所述存储卷之间的写状态为非阻塞状态的步骤;
若所述新节点与所述存储卷之间的写状态为非阻塞状态,则执行所述将所述存储卷挂载至所述新业务Pod上的步骤。
结合第一方面,在一种实施方式中,所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态,包括:
基于订阅通知机制控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态。
结合第一方面,在一种实施方式中,在所述当检测到目标业务应用实例Pod需要进行高可用切换时,禁止目标业务Pod所在的旧节点向存储卷写数据的步骤之前,还包括:
当接收到目标业务Pod状态以及旧节点状态时,根据所述目标业务Pod状态以及旧节点状态判断目标业务是否属于高可用场景;
若所述目标业务属于高可用场景,则判定目标业务Pod需要进行高可用切换;
若所述目标业务不属于高可用场景,则判定目标业务Pod不需要进行高可用切换。
第二方面,本申请实施例提供了一种Pod高可用实现装置,所述Pod高可用实现装置包括:业务控制器、存储集群、容器存储接口CSI和容器编排系统Kubernetes;
所述业务控制器用于当检测到目标业务应用实例Pod需要进行高可用切换时,通过所述CSI和所述存储集群控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态,并强制删除目标业务Pod及其存储卷关联资源;
所述Kubernetes用于在新节点上创建新业务Pod及其存储卷关联资源,通过所述CSI和所述存储集群控制所述新节点与所述存储卷之间的写状态为非阻塞状态;
所述CSI用于将所述存储卷挂载至所述新业务Pod上,以使新业务Pod基于所述新节点向存储卷进行写操作。
结合第二方面,在一种实施方式中,所述CSI还用于判断所述旧节点与所述存储卷之间的写状态是否为阻塞状态;
若所述旧节点与所述存储卷之间的写状态为阻塞状态,则通过所述所述业务控制器执行所述强制删除目标业务Pod及其存储卷关联资源的步骤;
若所述旧节点与所述存储卷之间的写状态为非阻塞状态,则通过所述CSI和所述存储集群执行所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态的步骤。
结合第二方面,在一种实施方式中,所述CSI还用于判断新节点与所述存储卷之间的写状态是否为阻塞状态;
若所述新节点与所述存储卷之间的写状态为阻塞状态,则通过所述CSI和所述存储集群执行所述控制所述新节点与所述存储卷之间的写状态为非阻塞状态的步骤;
若所述新节点与所述存储卷之间的写状态为非阻塞状态,则通过所述所述CSI执行所述将所述存储卷挂载至所述新业务Pod上的步骤。
第三方面,本申请实施例提供了一种Pod高可用实现设备,所述Pod高可用实现设备包括处理器、存储器以及存储在所述存储器上并可被所述处理器执行的Pod高可用实现程序,其中所述Pod高可用实现程序被所述处理器执行时,实现如前述的Pod高可用实现方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有Pod高可用实现程序,其中所述Pod高可用实现程序被处理器执行时,实现如前述的Pod高可用实现方法的步骤。
本申请实施例提供的技术方案带来的有益效果包括:
在目标业务所在节点的管理网发生故障时,对于需要进行高可用切换的目标业务Pod,通过控制该目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态,以保证该旧节点上的Pod不能再向存储卷写数据,并强制删除目标业务Pod及其存储卷关联资源;同时,在新节点上创建新业务Pod及其存储卷关联资源,控制新节点与存储卷之间的写状态为非阻塞状态,以保证新节点上的Pod能向存储卷写数据;将所述存储卷挂载至新业务Pod上,以完成Pod的迁移和调度,使新业务Pod基于新节点向存储卷进行写操作,进而避免两个节点上的Pod都可以向存储卷写数据,防止出现数据双写问题,从而有效实现Pod的高可用。
附图说明
图1为本申请Pod高可用实现方法实施例的流程示意图;
图2为本申请实施例在管理网故障场景下写状态更新的流程时序示意图;
图3为本申请实施例管理网故障场景下Pod切换示意图;
图4为本申请实施例方案中涉及的Pod高可用实现设备的硬件结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,对本申请中的部分技术术语进行解释说明,以便于本领域技术人员理解本申请。
存储集群:一组联机磁盘系统,可以在需要的时候提供并管理大量的数据存储空间,使得客户端能在集群中的任何一个节点上访问到所有的数据。
存储管理接口:一组存储集群为用户提供的管理接口,可以对存储集群做各种配置操作。
管理网:主要用于存储管理接口的执行,对存储集群进行各种管理和配置操作。
业务网:主要用于存储客户端写数据。
存储网关:一种把本地环境和云存储服务连接起来的硬件或软件装置,允许业务使用熟悉的协议(例如iSCSI或NVMEoF)来连接远程的云存储。
无状态负载(Deployment):Kubernetes中的Deployment是一个高级工作负载控制器,用于部署、更新和扩容无状态应用;Deployment主要用于无状态应用,比如web服务、API服务或其他无状态服务。
有状态负载(StatefulSet):Kubernetes中的StatefulSet 是一个高级工作负载控制器,用于部署、扩展和管理有状态的应用程序,其主要特点是为每个创建的Pod分配一个稳定且唯一的主机名(如app-0、app-1),并确保这些Pod是按顺序部署和缩放的;StatefulSets专门用于管理有状态的应用场景,例如数据库以及需要持久化数据存储的服务。
业务控制器(Operators):Kubernetes Operators是一种软件扩展,使用户能够自动创建、配置和管理复杂的状态应用。
API服务器(kube-apiserver):kube-apiserver是Kubernetes系统中的核心组件之一,其是主要负责处理存储集群中的所有API(Application Programming Interface,应用程序编程接口)请求,并提供 Kubernetes集群的核心功能。
Watcher/Notify机制:该机制是分布式存储系统中的一种常见的订阅通知机制,Watcher(观察者)是存储集群中的一个客户端,其监控分布式存储系统中一个特定对象的更改;Notify(通知)机制允许Watcher接收数据对象更改的实时通知,Watcher/Notify机制可以实现多个客户端同时对同一个对象操作时具有最新的状态信息。
VolumeAttachment(存储卷关联):其是 Kubernetes 中的一个 API 对象,表示某个节点上已附加或待附加的存储卷。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
第一方面,本申请实施例提供一种Pod高可用实现方法。
一实施例中,参照图1,图1为本申请Pod高可用实现方法实施例的流程示意图。如图1所示,Pod高可用实现方法包括以下步骤:
步骤S10:当检测到目标业务应用实例Pod需要进行高可用切换时,控制目标业务Pod所在的旧节点与存储卷PV间的写状态为阻塞状态,并强制删除目标业务Pod及其存储卷关联资源。
示范性的,在Kubernets中仅有1个PV,且该PV只能挂载到一个Pod里;其中,每个节点上的Pod与该PV间的写状态均存储于存储集群的存储网关上,由于存储集群中往往包含多个存储网关,因此同一个写状态可能会存储于多个存储网关上。比如,存储集群中包括存储网关1、存储网关2以及存储网关3,节点1上的Pod1与PV之间的写状态为阻塞状态,且该阻塞状态分别存储于存储网关1和存储网关2上;节点2上的Pod2与PV之间的写状态为非阻塞状态,且该非阻塞状态分别存储于存储网关2和存储网关3上。其中,阻塞状态表示不能进行读写,非阻塞状态表示可以正常进行读写。
在本实施例中,参见图2所示,使业务控制器一直对Kubernetes API服务器中的各个业务Pod所在节点的状态和业务Pod的状态进行监听,API服务器向业务控制器反馈各个业务Pod所在节点的状态和业务Pod的状态;参见图3所示,当监听到某一目标业务Pod所在节点的管理网发生故障(即管理网处于不连通状态)时,业务控制器会根据该目标业务Pod所在节点的状态和目标业务Pod的状态来判断目标业务Pod是否需要进行高可用切换。如果判断结果为需要进行高可用切换,则会调用存储管理接口,以通过存储管理接口控制存储集群中目标业务Pod所在的节点(此时该节点为旧节点)与其所挂载的PV间的写状态为阻塞状态,进而使得目标业务Pod无法通过该旧节点向PV进行写操作。
应当理解的是,参见图3所示,在调用存储管理接口成功之后,业务控制器会使API服务器将新的业务Pod调度到新节点(即健康节点)上;但由于此时旧节点(即故障节点)的管理网是不连通的,以致新业务Pod需挂载的PV不能正常卸载,也即通过传统正常的删除流程无法成功删除旧业务Pod(即目标业务Pod);而如果旧业务Pod不能删除,则会导致Kubernets的调度器不能在健康节点上启动新业务Pod。因此,本实施将通过API服务器强制删除目标业务Pod以及与该目标业务Pod相关的存储卷关联VolumeAttachment资源。
步骤S20:在新节点上创建新业务Pod及其存储卷关联资源,控制所述新节点与所述存储卷之间的写状态为非阻塞状态。
示范性的,本实施例中,在目标业务Pod所在的旧节点与PV间的写状态被调整为阻塞状态且强制删除旧节点上目标业务Pod及其对应的VolumeAttachment资源后,Kubernets调度器就可以将业务Pod调度至新节点上,也即通过Kubernets中的控制管理器在新节点上创建一个新业务Pod及其对应的VolumeAttachment资源。
本实施例中的容器存储接口CSI包括CSI外部组件和CSI驱动器。其中,CSI外部组件在监听到新业务Pod的创建事件时,将通过CSI驱动器调用ControllerPublishVolume接口(即图2中的目标接口,该接口用于将一个已创建的PV挂载到指定的节点上)和存储集群中的存储管理接口来对新节点与PV之间的写状态进行设置,也即将新节点与PV之间的写状态设置为非阻塞状态,以使得PV能够挂载至新节点上的新业务Pod里,进而使得新业务Pod可以向PV进行写操作。
步骤S30:将所述存储卷挂载至所述新业务Pod上,以使新业务Pod基于所述新节点向存储卷进行写操作。
示范性的,在本实施例中,CSI外部组件监听到有新业务Pod创建之后,会调用一些CSI驱动器中的接口来实现Pod中PV的挂载,其中在调用CSI驱动器的ControllerPublishVolume接口时,需要确保管理网是连通的,并且保证新节点上的新业务Pod可以对其所挂载的PV进行写操作。具体的,在新节点与PV之间的写状态为非阻塞状态时,通过ControllerPublishVolume接口将PV挂载至新业务Pod及其VolumeAttachment资源上,以使新业务Pod能够通过该新节点向PV进行写操作。
本实施例中,在目标业务所在节点的管理网发生故障时,对于需要进行高可用切换的目标业务Pod,通过控制该目标业务Pod所在的旧节点与PV间的读写状态为阻塞状态,以保证该旧节点上的Pod不能再向PV写数据,并强制删除目标业务Pod及其VolumeAttachment资源;同时,在新节点上创建新业务Pod及其VolumeAttachment资源,控制新节点与PV之间的读写状态为非阻塞状态,以保证新节点上的Pod能向PV写数据;将PV挂载至新业务Pod上,以完成Pod的迁移和调度,使新业务Pod基于新节点向PV进行写操作,进而避免两个节点上的Pod都可以向PV写数据,防止出现数据双写问题,从而有效实现Pod的高可用。
进一步地,一实施例中,在所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态的步骤之前,还包括:
判断所述旧节点与所述存储卷之间的写状态是否为阻塞状态;
若所述旧节点与所述存储卷之间的写状态为阻塞状态,则执行所述强制删除目标业务Pod及其存储卷关联资源的步骤;
若所述旧节点与所述存储卷之间的写状态为非阻塞状态,则执行所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态的步骤。
示范性的,可以理解的是,只有在旧节点恢复正常之后,Kubernets才会通过CSI驱动器上的ControllerUnpublishVolume接口(该接口用于从指定节点上卸载指定的PV)去删除该旧节点上面残余的目标业务Pod等资源,且虽然管理网发生故障,但是业务网是可以正常运行的,以致Kubernets中的Pod信息虽然被删除,但旧节点上的目标业务Pod仍然能够正常运行,使得在目标业务Pod之中挂载的目录仍然可以正常向存储集群中的PV写数据。而CSI外部组件往往是通过异步的方式来监听VolumeAttachment删除事件,以禁止上述目标业务Pod之中挂载的目录向存储集群中的PV写数据;但该种方式可能造成旧节点还在删除目标业务Pod,新节点上的新业务Pod已经创建起来了,从而导致两个节点上的Pod都可以对PV进行写数据。
而由于Pod采用RWO访问模式,即PV只能被一个Pod挂载进行写操作;因此,若Kubernets在健康节点上强制启动一个新的Pod,那么就可能出现故障节点上的业务Pod和新节点上的业务Pod对应的两个存储客户端能同时对一个PV进行写数据的场景。但分布式块存储系统中的PV在格式化成文件系统之后,是一个单机版的文件系统,也即不能有两个存储客户端同时对同一个PV进行写数据,否则会造成该PV的数据不一致,也即出现因双写而导致数据不一致的问题。
本实施例中,为了解决PV的双写问题,将在强制删除目标业务Pod和VolumeAttachment资源之前,调用存储管理接口来设置旧节点对应的存储客户端与所挂载的PV间的写状态为阻塞状态,从而保证该旧节点不能写数据。具体的,判断旧节点与PV之间的写状态是否为阻塞状态;如果是,则直接强制删除目标业务Pod及其VolumeAttachment资源;如果不是,则需要先将旧节点与PV间的写状态更新为阻塞状态后,再强制删除目标业务Pod及其VolumeAttachment资源。
进一步地,一实施例中,所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态,包括:
基于订阅通知机制控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态。
示范性的,需要说明的是,与节点对应的存储客户端与PV间的写状态(即阻塞状态或非阻塞状态)会被记录至存储网关之中。由于存储网关中往往会存储多个写状态,因此当目标业务Pod需要进行高可用切换,也即其所在节点的管理网处于不连通状态时,若其中某一个存储网关所在的节点跟该目标业务Pod在同一个节点,那么将会出现因管理网不连通而导致调用接口失败的问题出现,进而造成无法实现对旧节点与存储卷间写状态的更新。
本实施例中,为了实现对存旧节点与PV间写状态的更新,将通过业务网来设置写状态。具体的,当目标业务Pod所在的旧节点与PV间的写状态需要更新为阻塞状态时,存储管理接口可以通过订阅通知机制来通知所有存储了旧节点与PV间写状态的存储网关,以使得所有存储网关对其所存储的旧节点与PV间的写状态更新为阻塞状态。其中,订阅通知机制可以优选为Watcher/Notify机制,也可以是其他能够基于业务网实现写状态更新通知的机制,具体采用哪种机制可根据实际需求确定,在此不作限定。
由于存储管理接口调用新节点和存储集群的订阅通知机制都是走业务网,而不是管理网,因此不存在不连通问题,进而能够有效实现对旧节点与PV间写状态的更新。
进一步地,一实施例中,在所述控制所述新节点与所述存储卷之间的写状态为非阻塞状态的步骤之前,还包括:
判断新节点与所述存储卷之间的写状态是否为阻塞状态;
若所述新节点与所述存储卷之间的写状态为阻塞状态,则执行所述控制所述新节点与所述存储卷之间的写状态为非阻塞状态的步骤;
若所述新节点与所述存储卷之间的写状态为非阻塞状态,则执行所述将所述存储卷挂载至所述新业务Pod上的步骤。
示范性的,在本实施例中,CSI外部组件监听到有新业务Pod创建之后,将会通过调用CSI驱动器的ControllerPublishVolume接口来调用存储管理接口,以判断新节点与PV之间的写状态是否为阻塞状态;如果是阻塞状态,则通过调用存储管理接口向存储集群发送设置客户端挂载指定卷为非阻塞状态的请求,以通过存储集群将新节点与PV之间的写状态更新为非阻塞状态;如果是非阻塞状态,则直接返回成功,并将PV挂载至新业务Pod及其VolumeAttachment资源上。
进一步地,一实施例中,在所述当检测到目标业务应用实例Pod需要进行高可用切换时,禁止目标业务Pod所在的旧节点向存储卷写数据的步骤之前,还包括:
当接收到目标业务Pod状态以及旧节点状态时,根据所述目标业务Pod状态以及旧节点状态判断目标业务是否属于高可用场景;
若所述目标业务属于高可用场景,则判定目标业务Pod需要进行高可用切换;
若所述目标业务不属于高可用场景,则判定目标业务Pod不需要进行高可用切换。
示范性的,在本实施例中,当业务控制器接收到目标业务Pod状态以及旧节点状态时,根据目标业务Pod状态以及旧节点状态判断目标业务是否属于高可用场景业务,如果属于高可用场景业务,则判定目标业务Pod需要进行高可用切换,而如果目标业务不属于高可用场景,则判定目标业务Pod不需要进行高可用切换。其中,属于高可用场景需要同时满足以下条件:业务Pod进入terminating状态;业务Pod所在的节点处于NotReady状态(即未就绪状态),NotReady表示健康性检查失败,该方案中考虑的场景为节点重启或者节点所处的管理网断开;业务Pod使用第三方存储的CSI挂载卷,该方案中的存储可以为分布式存储或者开源分布式存储等。需要说明的是,以上条件的设置仅是实施例的呈现,高可用场景的具体条件设定可以根据实际需求确定,在此不作限定。
第二方面,本申请实施例还提供一种Pod高可用实现装置。
一实施例中,Pod高可用实现装置包括:业务控制器、存储集群、容器存储接口CSI和容器编排系统Kubernetes;
所述业务控制器用于当检测到目标业务应用实例Pod需要进行高可用切换时,通过所述CSI和所述存储集群控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态,并强制删除目标业务Pod及其存储卷关联资源;
所述Kubernetes用于在新节点上创建新业务Pod及其存储卷关联资源,通过所述CSI和所述存储集群控制所述新节点与所述存储卷之间的写状态为非阻塞状态;
所述CSI用于将所述存储卷挂载至所述新业务Pod上,以使新业务Pod基于所述新节点向存储卷进行写操作。
进一步地,一实施例中,所述CSI还用于判断所述旧节点与所述存储卷之间的写状态是否为阻塞状态;
若所述旧节点与所述存储卷之间的写状态为阻塞状态,则通过所述所述业务控制器执行所述强制删除目标业务Pod及其存储卷关联资源的步骤;
若所述旧节点与所述存储卷之间的写状态为非阻塞状态,则通过所述CSI和所述存储集群执行所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态的步骤。
进一步地,一实施例中,所述CSI还用于判断新节点与所述存储卷之间的写状态是否为阻塞状态;
若所述新节点与所述存储卷之间的写状态为阻塞状态,则通过所述CSI和所述存储集群执行所述控制所述新节点与所述存储卷之间的写状态为非阻塞状态的步骤;
若所述新节点与所述存储卷之间的写状态为非阻塞状态,则通过所述所述CSI执行所述将所述存储卷挂载至所述新业务Pod上的步骤。
进一步地,一实施例中,所述CSI具体用于:基于订阅通知机制控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态。
进一步地,一实施例中,所述业务控制器还用于:
当接收到目标业务Pod状态以及旧节点状态时,根据所述目标业务Pod状态以及旧节点状态判断目标业务是否属于高可用场景;
若所述目标业务属于高可用场景,则判定目标业务Pod需要进行高可用切换;
若所述目标业务不属于高可用场景,则判定目标业务Pod不需要进行高可用切换。
其中,上述Pod高可用实现装置中各个部分的功能实现与上述Pod高可用实现方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
第三方面,本申请实施例提供一种Pod高可用实现设备,Pod高可用实现设备可以是个人计算机(personal computer,PC)、笔记本电脑、服务器等具有数据处理功能的设备。
参照图4,图4为本申请实施例方案中涉及的Pod高可用实现设备的硬件结构示意图。本申请实施例中,Pod高可用实现设备可以包括处理器、存储器、通信接口以及通信总线。
其中,通信总线可以是任何类型的,用于实现处理器、存储器以及通信接口互连。
通信接口包括输入/输出(input/output,I/O)接口、物理接口和逻辑接口等用于实现Pod高可用实现设备内部的器件互连的接口,以及用于实现Pod高可用实现设备与其他设备(例如其他计算设备或用户设备)互连的接口。物理接口可以是以太网接口、光纤接口、ATM接口等;用户设备可以是显示屏(Display)、键盘(Keyboard)等。
存储器可以是各种类型的存储介质,例如随机存取存储器 (randomaccessmemory,RAM)、只读存储器(read-only memory,ROM)、非易失性RAM(non-volatileRAM,NVRAM)、闪存、光存储器、硬盘、可编程ROM(programmable ROM,PROM)、可擦除PROM(erasable PROM,EPROM)、电可擦除PROM(electrically erasable PROM,EEPROM)等。
处理器可以是通用处理器,通用处理器可以调用存储器中存储的Pod高可用实现程序,并执行本申请实施例提供的Pod高可用实现方法。例如,通用处理器可以是中央处理器(central processing unit,CPU)。其中,Pod高可用实现程序被调用时所执行的方法可参照本申请Pod高可用实现方法的各个实施例,此处不再赘述。
本领域技术人员可以理解,图4中示出的硬件结构并不构成对本申请的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
第四方面,本申请实施例还提供一种计算机可读存储介质。
本申请可读存储介质上存储有Pod高可用实现程序,其中所述Pod高可用实现程序被处理器执行时,实现如上述的Pod高可用实现方法的步骤。
其中,Pod高可用实现程序被执行时所实现的方法可参照本申请Pod高可用实现方法的各个实施例,此处不再赘述。
需要说明的是,上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。术语“第一”、“第二”和“第三”等描述,是用于区分不同的对象等,其不代表先后顺序,也不限定“第一”、“第二”和“第三”是不同的类型。
在本申请实施例的描述中,“示例性的”、“例如”或者“举例来说”等用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
在本申请实施例描述的一些流程中,包含了按照特定顺序出现的多个操作或步骤,但是应该理解,这些操作或步骤可以不按照其在本申请实施例中出现的顺序来执行或并行执行,操作的序号仅用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作或步骤可以按顺序执行或并行执行,并且这些操作或步骤可以进行组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本申请各个实施例所述的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种Pod高可用实现方法,其特征在于,所述Pod高可用实现方法包括以下步骤:
当检测到目标业务应用实例Pod需要进行高可用切换时,控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态,并强制删除目标业务Pod及其存储卷关联资源;
在新节点上创建新业务Pod及其存储卷关联资源,控制所述新节点与所述存储卷之间的写状态为非阻塞状态;
将所述存储卷挂载至所述新业务Pod上,以使新业务Pod基于所述新节点向存储卷进行写操作。
2.如权利要求1所述的Pod高可用实现方法,其特征在于,在所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态的步骤之前,还包括:
判断所述旧节点与所述存储卷之间的写状态是否为阻塞状态;
若所述旧节点与所述存储卷之间的写状态为阻塞状态,则执行所述强制删除目标业务Pod及其存储卷关联资源的步骤;
若所述旧节点与所述存储卷之间的写状态为非阻塞状态,则执行所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态的步骤。
3.如权利要求1所述的Pod高可用实现方法,其特征在于,在所述控制所述新节点与所述存储卷之间的写状态为非阻塞状态的步骤之前,还包括:
判断新节点与所述存储卷之间的写状态是否为阻塞状态;
若所述新节点与所述存储卷之间的写状态为阻塞状态,则执行所述控制所述新节点与所述存储卷之间的写状态为非阻塞状态的步骤;
若所述新节点与所述存储卷之间的写状态为非阻塞状态,则执行所述将所述存储卷挂载至所述新业务Pod上的步骤。
4.如权利要求1所述的Pod高可用实现方法,其特征在于,所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态,包括:
基于订阅通知机制控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态。
5.如权利要求1所述的Pod高可用实现方法,其特征在于,在所述当检测到目标业务应用实例Pod需要进行高可用切换时,禁止目标业务Pod所在的旧节点向存储卷写数据的步骤之前,还包括:
当接收到目标业务Pod状态以及旧节点状态时,根据所述目标业务Pod状态以及旧节点状态判断目标业务是否属于高可用场景;
若所述目标业务属于高可用场景,则判定目标业务Pod需要进行高可用切换;
若所述目标业务不属于高可用场景,则判定目标业务Pod不需要进行高可用切换。
6.一种Pod高可用实现装置,其特征在于,所述Pod高可用实现装置包括:业务控制器、存储集群、容器存储接口CSI和容器编排系统Kubernetes;
所述业务控制器用于当检测到目标业务应用实例Pod需要进行高可用切换时,通过所述CSI和所述存储集群控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态,并强制删除目标业务Pod及其存储卷关联资源;
所述Kubernetes用于在新节点上创建新业务Pod及其存储卷关联资源,通过所述CSI和所述存储集群控制所述新节点与所述存储卷之间的写状态为非阻塞状态;
所述CSI用于将所述存储卷挂载至所述新业务Pod上,以使新业务Pod基于所述新节点向存储卷进行写操作。
7.如权利要求6所述的Pod高可用实现装置,其特征在于:
所述CSI还用于判断所述旧节点与所述存储卷之间的写状态是否为阻塞状态;
若所述旧节点与所述存储卷之间的写状态为阻塞状态,则通过所述所述业务控制器执行所述强制删除目标业务Pod及其存储卷关联资源的步骤;
若所述旧节点与所述存储卷之间的写状态为非阻塞状态,则通过所述CSI和所述存储集群执行所述控制目标业务Pod所在的旧节点与存储卷间的写状态为阻塞状态的步骤。
8.如权利要求6所述的Pod高可用实现装置,其特征在于:
所述CSI还用于判断新节点与所述存储卷之间的写状态是否为阻塞状态;
若所述新节点与所述存储卷之间的写状态为阻塞状态,则通过所述CSI和所述存储集群执行所述控制所述新节点与所述存储卷之间的写状态为非阻塞状态的步骤;
若所述新节点与所述存储卷之间的写状态为非阻塞状态,则通过所述所述CSI执行所述将所述存储卷挂载至所述新业务Pod上的步骤。
9.一种Pod高可用实现设备,其特征在于,所述Pod高可用实现设备包括处理器、存储器以及存储在所述存储器上并可被所述处理器执行的Pod高可用实现程序,其中所述Pod高可用实现程序被所述处理器执行时,实现如权利要求1至5中任一项所述的Pod高可用实现方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有Pod高可用实现程序,其中所述Pod高可用实现程序被处理器执行时,实现如权利要求1至5中任一项所述的Pod高可用实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311720700.3A CN117407125B (zh) | 2023-12-14 | 2023-12-14 | Pod高可用实现方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311720700.3A CN117407125B (zh) | 2023-12-14 | 2023-12-14 | Pod高可用实现方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117407125A true CN117407125A (zh) | 2024-01-16 |
CN117407125B CN117407125B (zh) | 2024-04-16 |
Family
ID=89491202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311720700.3A Active CN117407125B (zh) | 2023-12-14 | 2023-12-14 | Pod高可用实现方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117407125B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130151694A1 (en) * | 2011-12-13 | 2013-06-13 | Iinternational Business Machines Corporation | Correlating event streams from independent processes in a complex business system using metadata associated with the transport interconnections |
US9817721B1 (en) * | 2014-03-14 | 2017-11-14 | Sanmina Corporation | High availability management techniques for cluster resources |
US20190095253A1 (en) * | 2017-09-22 | 2019-03-28 | Vmware, Inc. | Cluster updating using temporary update-monitor pod |
CN111290834A (zh) * | 2020-01-21 | 2020-06-16 | 苏州浪潮智能科技有限公司 | 一种基于云管理平台实现业务高可用的方法、装置及设备 |
CN114064414A (zh) * | 2021-11-25 | 2022-02-18 | 北京志凌海纳科技有限公司 | 一种高可用的集群状态监控方法及系统 |
US20220276929A1 (en) * | 2021-02-26 | 2022-09-01 | EMC IP Holding Company LLC | Container-based stateful application resilience to node failure |
US20230222006A1 (en) * | 2020-06-12 | 2023-07-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Container Orchestration System |
US20230229477A1 (en) * | 2022-01-18 | 2023-07-20 | Vmware, Inc. | Upgrade of cell sites with reduced downtime in telco node cluster running containerized applications |
CN116560795A (zh) * | 2023-04-28 | 2023-08-08 | 济南浪潮数据技术有限公司 | 一种分布式块存储系统的复制方法及相关装置 |
CN116860527A (zh) * | 2023-07-10 | 2023-10-10 | 江苏博云科技股份有限公司 | 在Kubernetes环境下使用本地存储的容器的迁移方法 |
CN117170820A (zh) * | 2023-10-13 | 2023-12-05 | 苏州元脑智能科技有限公司 | 集群节点的配置共享方法、系统、终端及存储介质 |
-
2023
- 2023-12-14 CN CN202311720700.3A patent/CN117407125B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130151694A1 (en) * | 2011-12-13 | 2013-06-13 | Iinternational Business Machines Corporation | Correlating event streams from independent processes in a complex business system using metadata associated with the transport interconnections |
US9817721B1 (en) * | 2014-03-14 | 2017-11-14 | Sanmina Corporation | High availability management techniques for cluster resources |
US20190095253A1 (en) * | 2017-09-22 | 2019-03-28 | Vmware, Inc. | Cluster updating using temporary update-monitor pod |
CN111290834A (zh) * | 2020-01-21 | 2020-06-16 | 苏州浪潮智能科技有限公司 | 一种基于云管理平台实现业务高可用的方法、装置及设备 |
US20230222006A1 (en) * | 2020-06-12 | 2023-07-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Container Orchestration System |
US20220276929A1 (en) * | 2021-02-26 | 2022-09-01 | EMC IP Holding Company LLC | Container-based stateful application resilience to node failure |
CN114064414A (zh) * | 2021-11-25 | 2022-02-18 | 北京志凌海纳科技有限公司 | 一种高可用的集群状态监控方法及系统 |
US20230229477A1 (en) * | 2022-01-18 | 2023-07-20 | Vmware, Inc. | Upgrade of cell sites with reduced downtime in telco node cluster running containerized applications |
CN116560795A (zh) * | 2023-04-28 | 2023-08-08 | 济南浪潮数据技术有限公司 | 一种分布式块存储系统的复制方法及相关装置 |
CN116860527A (zh) * | 2023-07-10 | 2023-10-10 | 江苏博云科技股份有限公司 | 在Kubernetes环境下使用本地存储的容器的迁移方法 |
CN117170820A (zh) * | 2023-10-13 | 2023-12-05 | 苏州元脑智能科技有限公司 | 集群节点的配置共享方法、系统、终端及存储介质 |
Non-Patent Citations (1)
Title |
---|
平凡;陈莉君;: "基于Kubernetes的动态负载均衡机制研究与设计", 计算机与数字工程, no. 01, 20 January 2020 (2020-01-20) * |
Also Published As
Publication number | Publication date |
---|---|
CN117407125B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11226847B2 (en) | Implementing an application manifest in a node-specific manner using an intent-based orchestrator | |
US11579932B2 (en) | Tiered backup archival in multi-tenant cloud computing system | |
CN109491776B (zh) | 任务编排方法和系统 | |
CN111338854B (zh) | 基于Kubernetes集群快速恢复数据的方法及系统 | |
CN111385114B (zh) | Vnf服务实例化方法及装置 | |
CN111290834B (zh) | 一种基于云管理平台实现业务高可用的方法、装置及设备 | |
EP3200393B1 (en) | Method and device for virtual network function management | |
US9253265B2 (en) | Hot pluggable extensions for access management system | |
CN113296792B (zh) | 存储方法、装置、设备、存储介质和系统 | |
CN105700939A (zh) | 一种分布式系统中多线程同步的方法和系统 | |
CN112291298B (zh) | 异构系统的数据传输方法、装置、计算机设备和存储介质 | |
CN109213571B (zh) | 一种内存共享方法、容器管理平台及计算机可读存储介质 | |
CN106657167B (zh) | 管理服务器、服务器集群、以及管理方法 | |
US20220283846A1 (en) | Pod deployment method and apparatus | |
CN113626286A (zh) | 多集群实例处理方法、装置、电子设备及存储介质 | |
US20100332532A1 (en) | Distributed directory environment using clustered ldap servers | |
US20080263183A1 (en) | Management of Kernel configurations for nodes in a clustered system | |
CN111966466A (zh) | 一种容器管理方法、设备以及介质 | |
CN111147274B (zh) | 为集群解决方案创建高度可用的仲裁集的系统和方法 | |
CN116627721A (zh) | 基于混合云的云原生数据库恢复方法、设备及存储介质 | |
CN114510464A (zh) | 一种高可用数据库的管理方法和管理系统 | |
CN112799588B (zh) | 使用外部存储加载容器集群应用数据时的数据存储方法 | |
CN117407125B (zh) | Pod高可用实现方法、装置、设备及可读存储介质 | |
CN114598711B (zh) | 一种数据迁移方法、装置、设备及介质 | |
CN113342511A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |