CN117270916B - 一种基于Istio的Sidecar热更新方法及装置 - Google Patents
一种基于Istio的Sidecar热更新方法及装置 Download PDFInfo
- Publication number
- CN117270916B CN117270916B CN202311550160.9A CN202311550160A CN117270916B CN 117270916 B CN117270916 B CN 117270916B CN 202311550160 A CN202311550160 A CN 202311550160A CN 117270916 B CN117270916 B CN 117270916B
- Authority
- CN
- China
- Prior art keywords
- sidecar
- updated
- container
- target
- new version
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000002360 preparation method Methods 0.000 claims abstract description 26
- 239000003795 chemical substances by application Substances 0.000 claims description 62
- 238000003860 storage Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 9
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 6
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 230000015654 memory Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 239000000243 solution Substances 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005067 remediation Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
-
- 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
-
- 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种基于Istio的Sidecar热更新方法及装置,该方法包括:响应更新触发操作,通过目标接口进入待更新Sidecar容器,并执行升级命令,其中,所述升级命令用于通知Sidecar Agent进行热更新;通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品;通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新。本申请能够托管热更新Sidecar的制品,解决了原来Sidecar更新必须重建的问题。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于Istio的Sidecar热更新方法及装置。
背景技术
随着服务网格理念的广泛推广,Istio也越来越多地被用于生产环境中,用于以非侵入式的方式对服务进行高性能治理。
但是每次Istio更新,都会要求Sidecar进行更新,而更新的唯一方式就是重建容器组,这导致每次更新繁琐,并且重建容器组有风险,影响Istio持续升级。
发明内容
有鉴于此,本申请实施例提供了一种基于Istio的Sidecar热更新方法、装置、电子设备及存储介质,能够托管热更新Sidecar的制品,解决了原来Sidecar更新必须重建的问题。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种基于Istio的Sidecar热更新方法,包括以下步骤:
响应更新触发操作,通过目标接口进入待更新Sidecar容器,并执行升级命令,其中,所述升级命令用于通知Sidecar Agent进行热更新;
通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品;
通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新。
在一种可能的实施方式中,所述更新触发操作为管理组件检测到所述目标资源,所述响应于更新触发操作,通过目标接口进入待更新Sidecar容器之前,所述方法还包括:
创建目标资源,其中,所述目标资源指定了所述待更新Sidecar容器对应的容器列表。
在一种可能的实施方式中,所述通过目标接口进入待更新Sidecar容器,并执行升级命令,包括:
对所述容器列表中的每个所述待更新Sidecar容器依次使用Kubernetes execAPI,以进入对应的所述待更新Sidecar容器;
针对所述待更新Sidecar容器,执行所述升级命令,以通知所述Sidecar Agent进行热更新。
在一种可能的实施方式中,所述通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品,包括:
通过所述Sidecar Agent拉取所述待更新Sidecar容器对应的新版本envoy制品。
在一种可能的实施方式中,所述通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新,包括:
通过所述Sidecar Agent启动所述新版本envoy制品;
通知旧版本envoy制品进行排水处理。
在一种可能的实施方式中,所述方法还包括:
向管理组件发送升级完成信息;
若升级失败,向所述管理组件发送错误信息。
在一种可能的实施方式中,所述通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品之前,所述方法还包括:
为所述新版本目标制品建立备份制品;
当完成热更新后,响应于目标条件的触发操作,基于所述备份制品对已更新Sidecar容器进行回滚,其中,所述目标条件包括:所述新版本目标制品异常、接收到回滚指令。
第二方面,本申请实施例还提供一种基于Istio的Sidecar热更新装置,所述装置包括:
执行模块,用于响应更新触发操作,通过目标接口进入待更新Sidecar容器,并执行升级命令,其中,所述升级命令用于通知Sidecar Agent进行热更新;
获取模块,用于通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品;
替换模块,用于通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行第一方面任一项所述的基于Istio的Sidecar热更新方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行第一方面任一项所述的基于Istio的Sidecar热更新方法。
本申请实施例具有以下有益效果:
通过对Istio Sidecar进行扩展,增加目标资源,并使用Kubernetes exec API对Istio Sidecar执行升级命令,从而拉取新版本的Sidecar制品、启动新版本envoy的同时对旧版本的envoy进行排水。这样,可以托管热更新Sidecar的制品,解决了原来Sidecar更新必须重建的问题,简化更新难度,消除重建容器所带来的风险。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本申请实施例提供的步骤S101-S103的流程示意图;
图2是本申请实施例提供的步骤S201-S202的流程示意图;
图3是本申请实施例提供的步骤S301-S302的流程示意图;
图4是本申请实施例提供的步骤S401-S402的流程示意图;
图5是本申请实施例提供的基于Istio的Sidecar热更新装置的结构示意图;
图6是本申请实施例提供的电子设备的组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语是为了描述本申请实施例的目的,不是在限制本申请。
参见图1,图1是本申请实施例提供的基于Istio的Sidecar热更新方法步骤S101-S103的流程示意图,将结合图1示出的步骤S101-S103进行说明。
步骤S101,响应更新触发操作,通过目标接口进入待更新Sidecar容器,并执行升级命令,其中,所述升级命令用于通知Sidecar Agent进行热更新;
步骤S102,通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品;
步骤S103,通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新。
上述基于Istio的Sidecar热更新方法,通过对Istio Sidecar进行扩展,增加目标资源,并使用Kubernetes exec API对Istio Sidecar执行升级命令,从而拉取新版本的Sidecar制品、启动新版本envoy的同时对旧版本的envoy进行排水。这样,可以托管热更新Sidecar的制品,解决了原来Sidecar更新必须重建的问题,简化更新难度,消除重建容器所带来的风险。
下面分别对本申请实施例的上述示例性的各步骤进行说明。
在步骤S101中,响应更新触发操作,通过目标接口进入待更新Sidecar容器,并执行升级命令,其中,所述升级命令用于通知Sidecar Agent进行热更新。
在步骤S102中,通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品。
在步骤S103中,通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新。
步骤S101-S103描述了热更新的过程,该过程可以拆分为几个步骤,并对其进行解释:
(1)响应更新触发操作: 当有更新请求或触发条件满足时,系统开始准备进行更新操作。
(2)通过目标接口进入待更新Sidecar容器: 使用特定的接口或通道来访问或连接到待更新的Sidecar容器。这里的“目标接口”可能是容器的一个入口点或者是与容器通信的一种方式。
(3)执行升级命令: 在待更新的Sidecar容器内部,执行一个命令或操作来通知Sidecar Agent进行热更新。
(4)Sidecar Agent获取新版本目标制品: Sidecar Agent被通知后,它会获取或下载新版本的目标制品(可能是应用、库或其他组件)。
(5)使用新版本目标制品替换旧版本: Sidecar Agent用获取到的新版本目标制品替换待更新Sidecar容器中的旧版本制品。
通过上述步骤,待更新的Sidecar容器就完成了热更新过程。这种热更新方式可以在不中断容器服务的情况下,完成容器的版本升级或更新,确保系统的连续性和可用性。
在一些实施例中,所述更新触发操作为管理组件检测到所述目标资源,所述响应于更新触发操作,通过目标接口进入待更新Sidecar容器之前,所述方法还包括:
创建目标资源,其中,所述目标资源指定了所述待更新Sidecar容器对应的容器列表。
Istio是一个开放服务网格,它提供了一种连接、管理和保护微服务的统一方法。它支持管理服务之间的流量,执行访问策略以及汇总遥测数据,所有这些都无需更改微服务代码。Istio支持HTTP、gRPC、WebSocket、MongoDB和TCP通信的自动负载平衡,可以通过丰富的路由规则、重试、故障转移和故障注入来细粒度地控制流量行为。此外,Istio还具有可配置的策略层和API,支持访问控制、速率限制和配额功能。它还提供了群集内所有流量的自动指标、日志和跟踪,包括群集入口和出口。在安全性方面,Istio通过强大的基于身份的身份验证和授权来确保群集中服务间通信的安全性。
Istio Sidecar是Istio服务网格中的一个组件,它负责将网格中所有服务之间的通信流量代理到Sidecar代理,以便进行流量管理、安全性和遥测数据的收集。在Istio中,每个服务都会在其容器外部创建一个额外的Sidecar代理容器,该容器可以与主服务容器相互通信。当服务间的请求消息时,Sidecar代理会将这些请求消息从入口或出口的角度进行拦截、处理和转发,从而实现对服务间通信的细粒度控制。Istio Sidecar还提供了许多功能,例如自动负载均衡、访问控制、速率限制、故障转移、服务发现、服务认证等。这些功能可以帮助开发人员更好地管理和保护微服务之间的通信。
这里,理组件首先检测到目标资源。这个目标资源似乎是指向或关联到一组容器的列表,这些容器可能是需要进行更新的Sidecar容器。
在响应于这个更新触发操作并通过目标接口进入待更新的Sidecar容器之前,该方法还包括创建一个目标资源。这个创建的目标资源明确指定了与待更新Sidecar容器相关的容器列表。
这样,通过先创建和指定容器列表的目标资源,管理组件能够更精确地知道哪些容器需要更新,并有针对性地执行后续的更新操作。
简而言之,这个过程首先通过检测目标资源来触发更新,然后创建一个明确指定待更新容器列表的新目标资源,为后续的热更新操作提供准确的目标信息。
在一些实施例中,参见图2,图2是本申请实施例提供的步骤S201-S202的流程示意图,所述通过目标接口进入待更新Sidecar容器,并执行升级命令,可以通过步骤S201-S202实现,将结合各步骤进行说明。
在步骤S201中,对所述容器列表中的每个所述待更新Sidecar容器依次使用Kubernetes exec API,以进入对应的所述待更新Sidecar容器。
在步骤S202中,针对所述待更新Sidecar容器,执行所述升级命令,以通知所述Sidecar Agent进行热更新。
步骤S201-S202进一步细化了如何对容器列表中的每个待更新Sidecar容器进行更新的过程:
(1)使用Kubernetes exec API进入待更新Sidecar容器: 对容器列表中的每一个待更新的Sidecar容器,使用Kubernetes的exec API来进入或连接到这些容器。Kubernetes的exec API允许用户远程执行命令在运行的容器中。
(2)执行升级命令通知Sidecar Agent进行热更新: 在成功进入每个待更新的Sidecar容器后,执行升级命令来通知Sidecar Agent开始热更新过程。
通过这两个步骤,可以确保容器列表中的每个待更新Sidecar容器都会依次得到更新。使用Kubernetes exec API是一种有效的方式,能够在不直接登录到容器内部的情况下,远程执行命令,使得更新过程更为自动化和高效。
在一些实施例中,所述通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品,包括:
通过所述Sidecar Agent拉取所述待更新Sidecar容器对应的新版本envoy制品。
这里,描述的是Sidecar Agent的一个操作,即拉取待更新Sidecar容器所需的新版本envoy制品。
“拉取”通常指的是从某个远程仓库或存储位置下载文件或数据。在这里,SidecarAgent被指示去拉取或下载与待更新Sidecar容器相匹配的新版本的envoy制品。
Envoy是一个高性能的代理服务器,经常被用作Service Mesh中的数据平面组件。所以,拉取新的版本可能是为了更新或升级这个代理服务器的功能或修复其中的问题。
Envoy具有以下特点:
非侵入的架构:Envoy是和应用服务并行运行的,透明地代理应用服务发出/接收的流量。应用服务只需要和Envoy通信,无需知道其他微服务应用在哪里。
基于ModernC++11实现,性能优异。
L3/L4过滤器架构:Envoy的核心是一个L3/L4代理,然后通过插件式的过滤器链条来执行TCP/UDP的相关任务,例如TCP转发,TLS认证等工作。
HTTP L7过滤器架构:HTTP在现代应用体系里是地位非常特殊的应用层协议,所以Envoy内置了一个非常核心的过滤器:http_connection_manager。
简而言之,为了让待更新的Sidecar容器能够使用新的或更新后的envoy制品,Sidecar Agent被指示去远程拉取这些制品。
在一些实施例中,参见图3,图3是本申请实施例提供的步骤S301-S302的流程示意图,所述通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新,可以通过步骤S301-S302实现,将结合各步骤进行说明。
在步骤S301中,通过所述Sidecar Agent启动所述新版本envoy制品。
在步骤S302中,通知旧版本envoy制品进行排水处理。
步骤S301-S302详细说明了如何使用新版本目标制品替换待更新Sidecar容器中的旧版本制品以完成热更新的过程:
(1)通过Sidecar Agent启动新版本envoy制品: Sidecar Agent首先启动新版本的envoy制品。这通常意味着新版本的envoy开始监听并接收请求,但此时旧版本的envoy仍然在运行。
(2)通知旧版本envoy制品进行排水处理: “排水处理”通常是指在更新过程中,逐渐停止旧版本组件的服务,将流量切换到新版本组件,确保平滑过渡。在这里,旧版本的envoy被通知进行排水处理,这意味着它开始逐渐停止处理新的请求,而新的envoy制品开始接管请求处理。
这两个步骤确保了从旧版本到新版本的平滑过渡,没有中断服务。这种热更新方式能够在不中断用户请求的情况下,完成软件的版本升级或更新,提高系统的可用性和连续性。
在一些实施例中,参见图4,图4是本申请实施例提供的步骤S401-S402的流程示意图,所述方法还可以执行步骤S401-S402实现,将结合各步骤进行说明。
在步骤S401中,向管理组件发送升级完成信息。
在步骤S402中,若升级失败,向所述管理组件发送错误信息。
步骤S401-S402描述了升级过程中的两个关键通知步骤:
(1)发送升级完成信息: 当升级或更新成功完成后,系统会向管理组件发送一个升级完成的信息或通知。这可以让管理组件知道升级过程已经顺利结束,可以采取后续的操作,例如记录日志、更新状态等。
(2)发送错误信息: 如果在升级过程中发生错误导致升级失败,系统会向管理组件发送一个错误信息或通知。这可以让管理组件迅速了解升级失败的情况,采取相应的措施,例如进行回滚、记录错误日志等。
这两个通知机制很重要,因为它们能够确保管理组件始终了解升级的状态,无论是成功还是失败,都可以做出相应的响应和操作。
在一些实施例中,所述通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品之前,所述方法还包括:
为所述新版本目标制品建立备份制品;
当完成热更新后,响应于目标条件的触发操作,基于所述备份制品对已更新Sidecar容器进行回滚,其中,所述目标条件包括:所述新版本目标制品异常、接收到回滚指令。
该实施例进一步细化了热更新过程中的备份和回滚机制:
(1)为新版本目标制品建立备份制品: 在通过Sidecar Agent获取待更新Sidecar容器对应的新版本目标制品之前,首先对新版本目标制品进行备份。这可以确保在发生问题时,有一个可用的备份制品来恢复或回滚到。
(2)完成热更新后的回滚机制: 当热更新完成后,系统处于一种可以监测新版本目标制品状态和外部环境的状态。如果满足某些目标条件,例如新版本目标制品出现异常或接收到明确的回滚指令,系统会触发回滚操作。
(3)基于备份制品进行回滚: 当回滚操作被触发时,系统会使用之前建立的备份制品对已更新的Sidecar容器进行回滚,恢复到更新前的状态。
这种备份和回滚机制为热更新过程增加了额外的保障,确保在更新出现问题时,可以迅速恢复到之前稳定的状态,降低因更新导致的风险。
综上所述,通过本申请实施例具有以下有益效果:
通过对Istio Sidecar进行扩展,增加目标资源,并使用Kubernetes exec API对Istio Sidecar执行升级命令,从而拉取新版本的Sidecar制品、启动新版本envoy的同时对旧版本的envoy进行排水。这样,可以托管热更新Sidecar的制品,解决了原来Sidecar更新必须重建的问题,简化更新难度,消除重建容器所带来的风险。
基于同一发明构思,本申请实施例中还提供了与第一实施例中基于Istio的Sidecar热更新方法对应的基于Istio的Sidecar热更新装置,由于本申请实施例中的装置解决问题的原理与上述基于Istio的Sidecar热更新方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图5所示,图5是本申请实施例提供的基于Istio的Sidecar热更新装置500的结构示意图。基于Istio的Sidecar热更新装置500包括:
执行模块501,用于响应更新触发操作,通过目标接口进入待更新Sidecar容器,并执行升级命令,其中,所述升级命令用于通知Sidecar Agent进行热更新;
获取模块502,用于通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品;
替换模块503,用于通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新。
本领域技术人员应当理解,图5所示的基于Istio的Sidecar热更新装置500中的各单元的实现功能可参照前述基于Istio的Sidecar热更新方法的相关描述而理解。图5所示的基于Istio的Sidecar热更新装置500中的各单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现。
在一种可能的实施方式中,所述更新触发操作为管理组件检测到所述目标资源,执行模块501响应于更新触发操作,通过目标接口进入待更新Sidecar容器之前,还包括:
创建目标资源,其中,所述目标资源指定了所述待更新Sidecar容器对应的容器列表。
在一种可能的实施方式中,执行模块501通过目标接口进入待更新Sidecar容器,并执行升级命令,包括:
对所述容器列表中的每个所述待更新Sidecar容器依次使用Kubernetes execAPI,以进入对应的所述待更新Sidecar容器;
针对所述待更新Sidecar容器,执行所述升级命令,以通知所述Sidecar Agent进行热更新。
在一种可能的实施方式中,获取模块502通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品,包括:
通过所述Sidecar Agent拉取所述待更新Sidecar容器对应的新版本envoy制品。
在一种可能的实施方式中,替换模块503通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新,包括:
通过所述Sidecar Agent启动所述新版本envoy制品;
通知旧版本envoy制品进行排水处理。
在一种可能的实施方式中,替换模块503还包括:
向管理组件发送升级完成信息;
若升级失败,向所述管理组件发送错误信息。
上述基于Istio的Sidecar热更新装置通过对Istio Sidecar进行扩展,增加目标资源,并使用Kubernetes exec API对Istio Sidecar执行升级命令,从而拉取新版本的Sidecar制品、启动新版本envoy的同时对旧版本的envoy进行排水。这样,可以托管热更新Sidecar的制品,解决了原来Sidecar更新必须重建的问题,简化更新难度,消除重建容器所带来的风险。
如图6所示,图6为本申请实施例提供的电子设备600的组成结构示意图,所述电子设备600,包括:
处理器601、存储介质602和总线603,所述存储介质602存储有所述处理器601可执行的机器可读指令,当电子设备600运行时,所述处理器601与所述存储介质602之间通过总线603通信,所述处理器601执行所述机器可读指令,以执行以下步骤:
响应更新触发操作,通过目标接口进入待更新Sidecar容器,并执行升级命令,其中,所述升级命令用于通知Sidecar Agent进行热更新;
通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品;
通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新。
在一种可能的实施方式中,所述更新触发操作为管理组件检测到所述目标资源,所述处理器601执行所述机器可读指令,响应于更新触发操作,通过目标接口进入待更新Sidecar容器之前,还包括:
创建目标资源,其中,所述目标资源指定了所述待更新Sidecar容器对应的容器列表。
在一种可能的实施方式中,所述处理器601执行所述机器可读指令,通过目标接口进入待更新Sidecar容器,并执行升级命令,包括:
对所述容器列表中的每个所述待更新Sidecar容器依次使用Kubernetes execAPI,以进入对应的所述待更新Sidecar容器;
针对所述待更新Sidecar容器,执行所述升级命令,以通知所述Sidecar Agent进行热更新。
在一种可能的实施方式中,所述处理器601执行所述机器可读指令,通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品,包括:
通过所述Sidecar Agent拉取所述待更新Sidecar容器对应的新版本envoy制品。
在一种可能的实施方式中,所述处理器601执行所述机器可读指令,通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新,包括:
通过所述Sidecar Agent启动所述新版本envoy制品;
通知旧版本envoy制品进行排水处理。
在一种可能的实施方式中,所述处理器601执行所述机器可读指令,还包括:
向管理组件发送升级完成信息;
若升级失败,向所述管理组件发送错误信息。
实际应用时,所述电子设备600中的各个组件通过总线603耦合在一起。可理解,总线603用于实现这些组件之间的连接通信。总线603除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线603。
上述电子设备通过对Istio Sidecar进行扩展,增加目标资源,并使用Kubernetesexec API对Istio Sidecar执行升级命令,从而拉取新版本的Sidecar制品、启动新版本envoy的同时对旧版本的envoy进行排水。这样,可以托管热更新Sidecar的制品,解决了原来Sidecar更新必须重建的问题,简化更新难度,消除重建容器所带来的风险。
本申请实施例还提供了一种计算机可读存储介质,所述存储介质存储有可执行指令,当所述可执行指令被至少一个处理器601执行时,实现以下步骤:
响应更新触发操作,通过目标接口进入待更新Sidecar容器,并执行升级命令,其中,所述升级命令用于通知Sidecar Agent进行热更新;
通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品;
通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新。
在一种可能的实施方式中,所述更新触发操作为管理组件检测到所述目标资源,所述响应于更新触发操作,通过目标接口进入待更新Sidecar容器之前,所述方法还包括:
创建目标资源,其中,所述目标资源指定了所述待更新Sidecar容器对应的容器列表。
在一种可能的实施方式中,所述通过目标接口进入待更新Sidecar容器,并执行升级命令,包括:
对所述容器列表中的每个所述待更新Sidecar容器依次使用Kubernetes execAPI,以进入对应的所述待更新Sidecar容器;
针对所述待更新Sidecar容器,执行所述升级命令,以通知所述Sidecar Agent进行热更新。
在一种可能的实施方式中,所述通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品,包括:
通过所述Sidecar Agent拉取所述待更新Sidecar容器对应的新版本envoy制品。
在一种可能的实施方式中,所述通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新,包括:
通过所述Sidecar Agent启动所述新版本envoy制品;
通知旧版本envoy制品进行排水处理。
在一种可能的实施方式中,所述可执行指令被至少一个处理器601执行时,还包括:
向管理组件发送升级完成信息;
若升级失败,向所述管理组件发送错误信息。
在一些实施例中,存储介质可以是磁性随机存取存储器(FRAM,FerromagneticRandom Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read-Only Memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,HyperTextMarkupLanguage)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
上述计算机可读存储介质通过对Istio Sidecar进行扩展,增加目标资源,并使用Kubernetes exec API对Istio Sidecar执行升级命令,从而拉取新版本的Sidecar制品、启动新版本envoy的同时对旧版本的envoy进行排水。这样,可以托管热更新Sidecar的制品,解决了原来Sidecar更新必须重建的问题,简化更新难度,消除重建容器所带来的风险。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和电子设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,平台服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种基于Istio的Sidecar热更新方法,其特征在于,包括以下步骤:
响应更新触发操作,通过目标接口进入待更新Sidecar容器,并执行升级命令,其中,所述升级命令用于通知Sidecar Agent进行热更新;
通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品;
通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新;
所述通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品,包括:
通过所述Sidecar Agent拉取所述待更新Sidecar容器对应的新版本envoy制品;
所述通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新,包括:
通过所述Sidecar Agent启动所述新版本envoy制品;
通知旧版本envoy制品进行排水处理。
2.根据权利要求1所述的方法,其特征在于,所述更新触发操作为管理组件检测到目标资源,所述响应于更新触发操作,通过目标接口进入待更新Sidecar容器之前,所述方法还包括:
创建目标资源,其中,所述目标资源指定了所述待更新Sidecar容器对应的容器列表。
3.根据权利要求2所述的方法,其特征在于,所述通过目标接口进入待更新Sidecar容器,并执行升级命令,包括:
对所述容器列表中的每个所述待更新Sidecar容器依次使用Kubernetes exec API,以进入对应的所述待更新Sidecar容器;
针对所述待更新Sidecar容器,执行所述升级命令,以通知所述Sidecar Agent进行热更新。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
向管理组件发送升级完成信息;
若升级失败,向所述管理组件发送错误信息。
5.根据权利要求1所述的方法,其特征在于,所述通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品之前,所述方法还包括:
为所述新版本目标制品建立备份制品;
当完成热更新后,响应于目标条件的触发操作,基于所述备份制品对已更新Sidecar容器进行回滚,其中,所述目标条件包括:所述新版本目标制品异常、接收到回滚指令。
6.一种基于Istio的Sidecar热更新装置,其特征在于,所述装置包括:
执行模块,用于响应更新触发操作,通过目标接口进入待更新Sidecar容器,并执行升级命令,其中,所述升级命令用于通知Sidecar Agent进行热更新;
获取模块,用于通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品;所述通过所述Sidecar Agent获取所述待更新Sidecar容器对应的新版本目标制品,包括:通过所述Sidecar Agent拉取所述待更新Sidecar容器对应的新版本envoy制品;
替换模块,用于通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新;所述通过所述新版本目标制品替换所述待更新Sidecar容器中的旧版本目标制品以完成热更新,包括:通过所述Sidecar Agent启动所述新版本envoy制品;通知旧版本envoy制品进行排水处理。
7.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至5任一项所述的基于Istio的Sidecar热更新方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至5任一项所述的基于Istio的Sidecar热更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311550160.9A CN117270916B (zh) | 2023-11-21 | 2023-11-21 | 一种基于Istio的Sidecar热更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311550160.9A CN117270916B (zh) | 2023-11-21 | 2023-11-21 | 一种基于Istio的Sidecar热更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117270916A CN117270916A (zh) | 2023-12-22 |
CN117270916B true CN117270916B (zh) | 2024-02-06 |
Family
ID=89216275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311550160.9A Active CN117270916B (zh) | 2023-11-21 | 2023-11-21 | 一种基于Istio的Sidecar热更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117270916B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596762A (zh) * | 2020-12-16 | 2021-04-02 | 中国建设银行股份有限公司 | 一种滚动升级方法及装置 |
CN114443239A (zh) * | 2020-11-04 | 2022-05-06 | 中移物联网有限公司 | 一种注入容器的方法及装置 |
CN115658348A (zh) * | 2022-11-07 | 2023-01-31 | 北京瑞莱智慧科技有限公司 | 微服务调用方法、相关装置及存储介质 |
CN116795483A (zh) * | 2022-10-26 | 2023-09-22 | 中移(苏州)软件技术有限公司 | 一种资源处理方法和装置、及存储介质 |
CN116954810A (zh) * | 2022-04-15 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 容器应用实例的创建方法、系统、存储介质及程序产品 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11625281B2 (en) * | 2020-02-03 | 2023-04-11 | International Business Machines Corporation | Serverless platform request routing |
-
2023
- 2023-11-21 CN CN202311550160.9A patent/CN117270916B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114443239A (zh) * | 2020-11-04 | 2022-05-06 | 中移物联网有限公司 | 一种注入容器的方法及装置 |
CN112596762A (zh) * | 2020-12-16 | 2021-04-02 | 中国建设银行股份有限公司 | 一种滚动升级方法及装置 |
CN116954810A (zh) * | 2022-04-15 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 容器应用实例的创建方法、系统、存储介质及程序产品 |
CN116795483A (zh) * | 2022-10-26 | 2023-09-22 | 中移(苏州)软件技术有限公司 | 一种资源处理方法和装置、及存储介质 |
CN115658348A (zh) * | 2022-11-07 | 2023-01-31 | 北京瑞莱智慧科技有限公司 | 微服务调用方法、相关装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
面向微服务软件开发方法研究进展;吴化尧;邓文俊;;计算机研究与发展(03);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117270916A (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9529602B1 (en) | Systems and methods for internet recovery and service | |
US11392461B2 (en) | Method and apparatus for processing information | |
US8997088B2 (en) | Methods and systems for automated deployment of software applications on heterogeneous cloud environments | |
US9419856B1 (en) | Network device configuration deployment pipeline | |
US7698391B2 (en) | Performing a provisioning operation associated with a software application on a subset of the nodes on which the software application is to operate | |
KR101970839B1 (ko) | 서비스의 2차 위치에서의 작업의 재생 기법 | |
US9665452B2 (en) | Systems and methods for smart diagnoses and triage of failures with identity continuity | |
US9870282B2 (en) | Systems and methods for providing service and support to computing devices with boot failure | |
KR20160044484A (ko) | 클라우드 배치 기반구조 검증 엔진 | |
US9697013B2 (en) | Systems and methods for providing technical support and exporting diagnostic data | |
US9798606B2 (en) | Systems and methods for smart diagnosis using hosted resources with intelligent altering of boot order | |
JP2006338069A (ja) | コンポーネントソフトウェアの運用方法および運用基盤 | |
CN113595788B (zh) | 一种基于插件的api网关管理方法及装置 | |
CN109361542A (zh) | 客户端的故障处理方法、装置、系统、终端和服务器 | |
US20170373957A1 (en) | Minimized installation of point of presence software agents by use of pre-installed browser | |
CN110268378B (zh) | 创建数据备份的方法、存储介质和虚拟服务器 | |
US9959127B2 (en) | Systems and methods for exporting diagnostic data and securing privileges in a service operating system | |
US9465643B1 (en) | Systems and methods for monitoring a primary operating system (OS) and/or migrating data using an OS hypervisor | |
Bouchenak et al. | From autonomic to self-self behaviors: The jade experience | |
US10102008B2 (en) | Managed boot process system | |
CN117270916B (zh) | 一种基于Istio的Sidecar热更新方法及装置 | |
CN112732412A (zh) | 一种服务配置文件处理方法、装置、存储介质及电子设备 | |
CN117560271A (zh) | 一种节点故障处理方法和装置 | |
CN117056115A (zh) | 应用程序的修复方法和装置、存储介质及电子设备 | |
CN106708541A (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 |