CN112035215B - 节点集群的节点自治方法、系统、装置及电子设备 - Google Patents

节点集群的节点自治方法、系统、装置及电子设备 Download PDF

Info

Publication number
CN112035215B
CN112035215B CN202010895817.5A CN202010895817A CN112035215B CN 112035215 B CN112035215 B CN 112035215B CN 202010895817 A CN202010895817 A CN 202010895817A CN 112035215 B CN112035215 B CN 112035215B
Authority
CN
China
Prior art keywords
node
access request
master node
proxy
slave
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
Application number
CN202010895817.5A
Other languages
English (en)
Other versions
CN112035215A (zh
Inventor
张鑫宇
陈凯悦
罗晓东
陶凛然
王继罗
洪志国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010895817.5A priority Critical patent/CN112035215B/zh
Publication of CN112035215A publication Critical patent/CN112035215A/zh
Application granted granted Critical
Publication of CN112035215B publication Critical patent/CN112035215B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/59Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请提供了一种节点集群的节点自治方法、系统、装置、电子设备及计算机可读存储介质;涉及云计算技术领域的虚拟化和容器技术;方法包括:对准备向主节点发送的访问请求进行代理处理,并将生成的代理访问请求发送至主节点;当根据代理访问请求向主节点请求失败时,获取从节点已经存储的响应数据;其中,已经存储的响应数据是根据历史代理访问请求向主节点请求成功时从主节点获取的数据;根据已经存储的响应数据,在从节点的软件容器中运行数据业务。通过本申请,能够提升从节点的容灾能力,实现软件容器的边缘自治。

Description

节点集群的节点自治方法、系统、装置及电子设备
技术领域
本申请涉及云计算技术,尤其涉及一种节点集群的节点自治方法、系统、装置、电子设备及计算机可读存储介质。
背景技术
容器技术涉及云计算技术领域,是指通过虚拟化技术来隔离运行在主机上不同进程,从而实现进程之间、进程和宿主操作系统之间相互隔离、且互不影响的技术。为了对多个主机中的软件容器进行综合管控,通常会构建包括主节点和多个从节点的节点集群,其中,从节点即为运行有软件容器的主机。
在节点集群中,从节点会与主节点进行交互,进而根据从主节点中获取的数据,对本地的软件容器进行管理。然而,从节点与主节点之间的网络环境可能较为复杂,导致会出现通信质量不佳甚至断网的情况,在这些情况下,从节点本地的软件容器无法正常运行。
针对于此,相关技术并未提供有效的解决方案。
发明内容
本申请实施例提供一种节点集群的节点自治方法、系统、装置、电子设备及计算机可读存储介质,能够提升从节点的容灾能力,实现从节点中的软件容器的边缘自治。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种节点集群的节点自治方法,所述节点集群包括主节点和多个从节点;
所述节点自治方法包括:
对准备向所述主节点发送的访问请求进行代理处理,并将生成的代理访问请求发送至所述主节点;
当根据所述代理访问请求向所述主节点请求失败时,获取所述从节点已经存储的响应数据;
其中,所述已经存储的响应数据是根据历史代理访问请求向所述主节点请求成功时从所述主节点获取的数据;
根据所述已经存储的响应数据,在所述从节点的软件容器中运行数据业务。
本申请实施例提供一种节点集群的节点自治系统,所述节点集群包括主节点和多个从节点;其中,
所述从节点用于:
对准备向所述主节点发送的访问请求进行代理处理,并将生成的代理访问请求发送至所述主节点;
当根据所述代理访问请求向所述主节点请求失败时,获取所述从节点已经存储的响应数据;
其中,所述已经存储的响应数据是根据历史代理访问请求向所述主节点请求成功时从所述主节点获取的数据;
根据所述已经存储的响应数据,在所述从节点的软件容器中运行数据业务。
本申请实施例提供一种节点集群的节点自治装置,所述节点集群包括主节点和多个从节点;
所述节点自治装置包括:
代理模块,用于对准备向所述主节点发送的访问请求进行代理处理,并将生成的代理访问请求发送至所述主节点;
存储数据获取模块,用于当根据所述代理访问请求向所述主节点请求失败时,获取所述从节点已经存储的响应数据;
其中,所述已经存储的响应数据是根据历史代理访问请求向所述主节点请求成功时从所述主节点获取的数据;
业务运行模块,用于根据所述已经存储的响应数据,在所述从节点的软件容器中运行数据业务。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的节点集群的节点自治方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的节点集群的节点自治方法。
本申请实施例具有以下有益效果:
对准备向主节点发送的访问请求进行代理处理,并当根据生成的代理访问请求向主节点请求失败时,获取已经存储的响应数据,该响应数据是根据历史代理访问请求向主节点请求成功时得到的,如此,就算因为网络原因或其他原因导致请求失败,也能够根据已经存储的响应数据,在从节点的软件容器中运行数据业务,提升了从节点的容灾能力,实现了软件容器的边缘自治。
附图说明
图1是本申请实施例提供的节点集群的节点自治系统的一个可选的架构示意图;
图2是本申请实施例提供的服务器的一个可选的架构示意图;
图3A是本申请实施例提供的节点集群的节点自治方法的一个可选的流程示意图;
图3B是本申请实施例提供的节点集群的节点自治方法的一个可选的流程示意图;
图3C是本申请实施例提供的节点集群的节点自治方法的一个可选的流程示意图;
图3D是本申请实施例提供的节点集群的节点自治方法的一个可选的流程示意图;
图3E是本申请实施例提供的节点集群的节点自治方法的一个可选的流程示意图;
图4是本申请实施例提供的边缘计算的一个可选的架构示意图;
图5是本申请实施例提供的节点集群的一个可选的架构示意图;
图6是本申请实施例提供的代理存储组件的一个可选的架构示意图;
图7是本申请实施例提供的将代理存储组件的地址信息添加至路由组件的一个可选的流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。在以下的描述中,涉及到的术语“多个”是指至少两个。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)云技术(Cloud Technology):在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
2)云计算(Cloud Computing):一种计算模式,将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
3)虚拟化技术(Virtualization Technology):在计算机领域中,指计算元件在虚拟的基础上而不是真实的基础上运行。例如,在虚拟机(Virtual Machine Monitor)技术中,虚拟层作为应用级别的软件而存在,不涉及操作系统内核,虚拟层会给每个虚拟机模拟一套独立的硬件设备,包含中央处理器(Central Processing Unit,CPU)、内存、主板、显卡、网卡等硬件资源,在其上安装特定的操作系统,最终应用程序便运行在该操作系统中。
4)容器(Container)技术:通过虚拟化技术来隔离运行在主机上不同进程,从而实现进程之间、进程和宿主操作系统之间相互隔离、且互不影响的技术。这种相互孤立的进程即为软件容器,它有自己的一套文件系统资源和从属进程。
5)节点集群:融合云计算技术、虚拟化技术及容器技术构建的集群,由多个节点组成,根据所实现功能的不同,可以将多个节点划分为主节点和从节点,主节点用于对从节点进行管控,从节点用于在软件容器中运行数据业务,如计算业务或存储业务等。其中,节点可以是物理机器,也可以是通过虚拟化技术构建的虚拟机。
6)微服务架构:一种云原生架构方法,其中单个应用程序由许多松散耦合、且可独立部署的轻量服务组成,这些可独立部署的服务即为微服务。
7)数字证书(Digital Certificate):在通信技术中用于标识各方身份信息的数字认证文件,数字证书用于在建立通信连接时,进行身份的验证、鉴权。数字证书的类型根据所应用的通信协议而定,例如在超文本传输安全协议(Hyper Text Transfer Protocolover SecureSocket Layer,HTTPS)中,根据安全套接层(Secure Socket Layer,SSL)证书来进行身份的验证、鉴权。
本申请实施例提供一种节点集群的节点自治方法、系统、装置、电子设备及计算机可读存储介质,能够提升从节点的容灾能力,实现软件容器的边缘自治。下面说明本申请实施例提供的电子设备的示例性应用,本申请实施例提供的电子设备可以实施为笔记本电脑,平板电脑,台式计算机等各种类型的终端设备,也可以实施为服务器。下面,将说明电子设备实施为服务器时的示例性应用。
参见图1,图1是本申请实施例提供的节点集群的节点自治系统100的一个可选的架构示意图,节点集群200包括多个服务器,服务器300-1被配置为主节点,服务器300-2、300-3和300-4被配置为节点集群中的从节点,这些从节点位于同一个局域网中,主节点通过网络400连接从节点。另外,节点集群200通过网络500与终端设备600连接。其中,网络400可以是广域网或者局域网,又或者是二者的组合,网络500同理。
在节点集群200的运行过程中,以服务器300-2为例,服务器300-2可以对准备向服务器300-1发送的访问请求进行代理处理,并将生成的代理访问请求发送至服务器300-1。当根据代理访问请求向服务器300-1请求成功时,服务器300-2根据从服务器300-1获取到的响应数据,在软件容器中运行数据业务,并对该响应数据进行存储处理,如进行缓存;当根据代理访问请求向服务器300-1请求失败时,服务器300-2根据已经存储的响应数据,在软件容器中运行数据业务,该已经存储的响应数据是服务器300-2根据历史代理访问请求向服务器300-1请求成功时,从服务器300-1获取的数据。服务器300-3和服务器300-4向服务器300-1请求的过程,与服务器300-2同理,在此不做赘述。
对于节点集群200来说,其内的从节点可以根据运行的数据业务,提供数据服务,数据服务包括本地数据服务和对外数据服务。在图1中,以从节点提供对外数据服务为例,示出了终端设备600对节点集群200中的从节点进行数据调用,从而得到的显示于图形界面610中的购物应用页面,该购物应用页面包括用户信息、消息列表和购物车等模块。其中,不同的模块可以由不同的从节点来提供数据服务,例如,用户信息可以是通过调用服务器300-2提供的数据服务得到的,消息列表可以是通过调用服务器300-3提供的数据服务得到的,购物车可以是通过调用服务器300-4提供的数据服务得到的,即该购物应用由节点集群200中的从节点来提供微服务。对于位于同一局域网的从节点来说,也可以彼此调用本地数据服务,例如,服务器300-3可以从服务器300-2中获取用户信息,从而在本地查询与该用户信息对应的消息列表。当然,这里仅是对从节点所提供的数据服务进行示例说明,并不构成对本申请实施例的限定,例如从节点还可在支付应用或即时通信应用中提供数据服务。
除了服务器外,电子设备也可以实施为终端设备,例如,可以将终端设备配置为节点集群200中的从节点,该终端设备可以在自身的图形界面中,显示运行数据业务后得到的结果,也可以为属于同一局域网的其他从节点、或者节点集群200外的终端设备提供数据服务。
在一些实施例中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。节点集群中的主节点与从节点之间、从节点与从节点之间、以及节点集群与节点集群外的终端设备之间,均可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
以本申请实施例提供的电子设备是服务器为例说明,参见图2,图2是本申请实施例提供的服务器300(例如可以是图1中的服务器300-2、300-3或300-4)的结构示意图,图2所示的服务器300包括:至少一个处理器310、存储器340和至少一个网络接口320。服务器300中的各个组件通过总线系统330耦合在一起。可理解,总线系统330用于实现这些组件之间的连接通信。总线系统330除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统330。
处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器340可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器340可选地包括在物理位置上远离处理器310的一个或多个存储设备。
存储器340包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器340旨在包括任意适合类型的存储器。
在一些实施例中,存储器340能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统341,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块342,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等。
在一些实施例中,本申请实施例提供的节点集群的节点自治装置可以采用软件方式实现,图2示出了存储在存储器340中的节点集群的节点自治装置343,其可以是程序和插件等形式的软件,包括以下软件模块:代理模块3431、存储数据获取模块3432及业务运行模块3433,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的节点集群的节点自治装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的节点集群的节点自治方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application SpecificIntegrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
在一些实施例中,对于电子设备是终端设备的情况,在图2的基础上,还可以包括其他的结构。例如,还包括用户接口,用户接口包括使得能够呈现媒体内容的一个或多个输出装置,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口还包括一个或多个输入装置,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
在存储器340中,还可以包括呈现模块,用于经由一个或多个与用户接口相关联的输出装置(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);在存储器340中,还可以包括输入处理模块,用于对一个或多个来自一个或多个输入装置之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
将结合本申请实施例提供的电子设备的示例性应用和实施,说明本申请实施例提供的节点集群的节点自治方法。
参见图3A,图3A是本申请实施例提供的节点集群的节点自治方法的一个可选的流程示意图,将结合图3A示出的步骤进行说明。
在步骤101中,从节点对准备向主节点发送的访问请求进行代理处理,并将生成的代理访问请求发送至主节点。
在由主节点和多个从节点构成的节点集群中,从节点会根据设定的规则向主节点发送访问请求,并直接根据访问请求的请求结果,执行相应的处理。由于网络环境不稳定或其他原因,可能会导致从节点向主节点请求失败,故在本申请实施例中,从节点对准备向主节点发送的访问请求进行代理处理,得到代理访问请求,并将该代理访问请求发送至主节点。其中,在根据代理访问请求向主节点进行请求的过程中,引入数据存储的机制,如此,结合代理访问请求的请求结果以及数据存储的机制,来确定被代理的访问请求的请求结果,能够提升从节点的容灾性能。
值得说明的是,在本申请实施例中,访问请求的类型包括数据获取请求(Get请求)、数据更新请求(Put请求)、数据创建请求(Post请求)以及数据删除请求(Delete请求),数据存储的机制适用于数据获取请求。另外,本申请实施例是以中间人的方式来代理原始的访问请求,生成的代理访问请求与原始的访问请求的类型相同,即所要获取、更新、创建或删除的数据相同。
在步骤102中,当根据代理访问请求向主节点请求失败时,从节点获取已经存储的响应数据;其中,已经存储的响应数据是根据历史代理访问请求向主节点请求成功时从主节点获取的数据。
这里,在被代理的访问请求不是数据获取请求的情况下,从节点将代理访问请求的请求结果(即请求成功或请求失败),直接作为访问请求的请求结果。
在被代理的访问请求是数据获取请求的情况下,当从节点根据对应的代理访问请求向主节点请求成功时,确定访问请求的请求结果为请求成功,同时从主节点获取相应的响应数据;当从节点根据代理访问请求向主节点请求失败时,从节点判断本地是否存在已经存储的响应数据。这里的已经存储的响应数据,是指从节点根据历史代理访问请求向主节点请求成功时,从主节点获取的数据,并且,历史代理访问请求与代理访问请求所要请求的数据的类型相同。当从节点本地未存在已经存储的响应数据时,确定访问请求的请求结果为请求失败;当从节点本地存在已经存储的响应数据时,确定访问请求的请求结果为请求成功,并根据该已经存储的响应数据执行后续处理。
值得说明的是,在从节点根据代理访问请求向主节点请求时,若符合请求失败的条件,则确定代理访问请求的请求结果为请求失败,请求失败的条件可根据实际应用场景进行设定,如请求超时或主节点拒绝访问等。
在步骤103中,从节点根据已经存储的响应数据,在从节点的软件容器中运行数据业务。
在被代理的访问请求是数据获取请求的情况下,若代理访问请求的请求结果为请求成功,则从节点根据从主节点获取的响应数据,在自身的软件容器中运行数据业务,同时对响应数据进行存储处理;若代理访问请求的请求结果为请求失败,则从节点根据步骤102中得到的已经存储的响应数据,在自身的软件容器中运行数据业务。
其中,在对响应数据进行存储处理时,可以覆盖已经存储的且类型相同的响应数据,以节省存储资源;另外,可采用持久化存储或非持久化存储(缓存)的方式,来存储响应数据,后者适用于对数据存在时效性要求的场景,例如在非持久化存储方式中,可设定一个存储时长阈值,当已经存储的响应数据的存储时长大于该存储时长阈值时,丢弃该已经存储的响应数据。本申请实施例对运行的数据业务的类型也不做限定,例如可以是计算业务或存储业务等,可根据实际应用场景决定。
在一些实施例中,在任意步骤之间,还包括:执行以下任意一种处理:对从节点的软件容器的地址信息进行存储处理,以当软件容器重启时,对重启的软件容器应用已经存储的地址信息;当从节点的软件容器重启时,将软件容器的地址信息,发送至与从节点属于同一局域网的其他从节点。
在从节点的运行过程中,可能会对软件容器进行重启,例如在从节点与主节点断开连接时,对整个从节点进行重启;在软件容器运行异常时,对软件容器进行手动或自动的重启。在本申请实施例中,可以对从节点的软件容器的地址信息进行存储处理,这里,可以周期性地、或者在软件容器的地址信息更新时,对软件容器的地址信息进行存储处理,若存在已经存储的地址信息,则进行覆盖,从而保证已经存储的地址信息是最新的地址信息。如此,当软件容器重启时,对重启的软件容器应用已经存储的地址信息,保证地址信息不会出现迁移,相关的地址规则也不需更改,提升了软件容器的容灾能力。
另一种方式是,当从节点的软件容器重启时,将重启后重新生成的软件容器的地址信息,发送至与该从节点属于同一局域网的其他从节点,例如以广播的机制在局域网内发送,以便其他从节点明确对该软件容器的调用规则。
值得说明的是,软件容器的地址信息中的内容,可根据节点集群对软件容器的管理方式确定。例如,在Kubernetes节点集群中,从节点是以特定的调度单位(Pod)来管理软件容器,其中每一个Pod包括至少一个软件容器,并且在Kubernetes节点集群中,是通过Flannel网关,来实现属于同一局域网的不同从节点中的Pod之间的容器通信。那么,针对于Kubernetes节点集群,软件容器的地址信息可以包括该软件容器所在Pod的互联网协议(Internet Protocol,IP)地址、以及该Pod的Flannel网关的媒体存取控制(Media AccessControl,MAC)地址。
在一些实施例中,在任意步骤之间,还包括:从节点将自身的软件容器中运行的数据业务,在主节点中进行注册,得到本地数据服务;其中,本地数据服务用于被从节点中区别于软件容器的其他软件容器调用,或者与从节点属于同一局域网的其他从节点中的软件容器调用。
在本申请实施例中,可以引入服务注册发现的机制。例如,从节点可以将自身的软件容器中运行的数据业务,在主节点中进行注册,得到本地数据服务,以供该从节点中区别于该软件容器的其他软件容器调用,或者与该从节点属于同一局域网的其他从节点中的软件容器调用。以购物应用的场景进行举例,节点集群的某个从节点用于提供用户信息的微服务,该从节点中的第一软件容器用于提供用户ID对应的本地数据服务(即更细化的微服务),该从节点中的第二软件容器通过调用该本地数据服务,来运行第二软件容器的数据业务,例如在多条购买记录中,查询与调用得到的用户ID对应的购买记录,其中,用户ID和购买记录都是用户信息的组成部分。值得说明的是,可以基于从节点中的多个软件容器注册一个本地数据服务,在该本地数据服务被调用时,通过负载均衡的机制确定最终响应该调用的软件容器。通过上述方式,实现了节点集群本地的服务相互调用。
在一些实施例中,在任意步骤之间,还包括:从节点将自身的软件容器中运行的数据业务,在主节点中进行注册,得到对外数据服务;其中,对外数据服务用于被节点集群外的客户端调用。
这里,还可以将从节点的软件容器中运行的数据业务,在主节点中进行注册,得到对外数据服务,以供节点集群外的客户端调用。以购物应用的场景进行举例,节点集群的某个从节点可以根据其内的软件容器中运行的、与用户信息对应的数据业务,在主节点中注册得到用户信息对应的对外数据服务,节点集群外的终端设备(即客户端)在打开购物应用时,调用该对外数据服务以获取用户信息,该用户信息用于显示在终端设备的购物应用页面中。通过上述方式,实现了节点集群的外部调用。
如图3A所示,本申请实施例通过数据存储的机制,提升了从节点的容灾能力,在从节点与主节点之间的网络连接不稳定甚至断开时,能够有效地保证从节点内软件容器的数据业务运行正常。
在一些实施例中,参见图3B,图3B是本申请实施例提供的节点集群的节点自治方法的一个可选的流程示意图,图3A示出的步骤101可以通过步骤201至步骤206实现,将结合各步骤进行说明。
在步骤201中,当访问请求包括从节点证书时,从节点将从节点证书与已经存储的多个有权证书进行匹配处理。
这里,若准备向主节点发送的访问请求包括数字证书,则该访问请求用于指示从节点与主节点进行双向认证,为了便于区分,将访问请求中包括的数字证书命名为从节点证书。在本申请实施例中,在得到包括从节点证书的访问请求后,从节点可以在本地对访问请求进行初步验证,从而确定后续与主节点之间的认证方式,例如,从节点将访问请求中的从节点证书、与已经存储的多个有权证书进行匹配处理,有权证书可以根据实际应用场景进行预先设定。匹配处理可以是将从节点证书中的标识信息、与有权证书的标识信息进行匹配,若两个标识信息相同,则确定从节点证书与有权证书匹配成功;若两个标识信息不同,则确定从节点证书与有权证书匹配失败,其中,标识信息如证书的公用名,当然也可以是可用于区分不同证书的其他信息。
在步骤202中,当从节点证书与已经存储的多个有权证书中的任意一个匹配成功时,从节点根据匹配成功的有权证书,生成用于与主节点进行双向认证的代理访问请求。
这里,当从节点证书与多个有权证书中的任意一个匹配成功时,从节点确定初步验证成功,生成包括匹配成功的有权证书的代理访问请求,该代理访问请求用于与主节点之间进行双向认证。
在一些实施例中,步骤201之后,还包括:当从节点证书与多个有权证书均匹配失败时,从节点生成用于与主节点进行单向认证的代理访问请求。
另一种情况是,从节点证书与多个有权证书均匹配失败,则从节点确定初步验证失败,生成用于与主节点进行单向认证的代理访问请求,该代理访问请求并未包括数字证书,单向认证的方式在后文进行阐述。通过上述方式,能够准确地确定应用单向认证还是双向认证的方式,避免认证方式不适用所导致的计算资源的浪费。
在步骤203中,从节点获取主节点发送的主节点证书。
例如,从节点可以先向主节点发送认证请求,主节点在获取到认证请求时,向从节点发送包括主节点公钥的主节点证书,以作为响应。
在步骤204中,当对主节点证书验证成功时,从节点将匹配成功的有权证书发送至主节点。
例如,从节点对主节点证书的验证可包括四个部分:1)验证主节点证书是否过期;2)通过预先设定的信任库,验证发行主节点证书的证书签发(Certifi cate Authority,CA)机构是否可信,其中,信任库包括多个可信的CA机构;3)主节点公钥是否能正确解开主节点证书中的数字签名;4)主节点证书中的域名是否与主节点的实际域名相同。当四个部分中的任一部分验证失败时,确定对主节点证书验证失败;当四个部分均验证成功,即当主节点证书未过期、发行主节点证书的CA机构可信、主节点公钥能够正确解开主节点证书中的数字签名、以及主节点证书中的域名与主节点的实际域名相同时,确定对主节点证书验证成功,从节点将匹配成功的有权证书发送至主节点,以使主节点进行验证。
在步骤205中,当对匹配成功的有权证书验证成功时,主节点建立与从节点之间的通信连接。
这里,主节点对匹配成功的有权证书的验证过程,与从节点对主节点证书的验证过程类似,在此不做赘述。主节点在对匹配成功的有权证书验证成功时,建立与从节点之间的通信连接。在双向认证的过程中,从节点可以与主节点约定加密算法(如对称加密算法)和加密密钥,如此,在建立通信连接后,可以通过加密算法和加密密钥,对通信连接上传输的数据进行加密和解密(即发送方加密,接收方解密),保证通信的安全性。
值得说明的是,由于网络原因或其他原因,可能会导致从节点与主节点之间无法建立通信连接,对于该种情况,可以直接确定从节点根据代理访问请求向主节点请求失败。
在步骤206中,从节点根据建立的通信连接,将代理访问请求发送至主节点。
这里,在已建立通信连接的基础上,从节点根据该通信连接,将代理访问请求发送至主节点。例如,当代理访问请求是HTTPS请求时,从节点与主节点之间通过双向认证建立的通信连接可以是SSL通信连接。
如图3B所示,从节点通过对从节点证书进行初步验证,提升了确定出的认证方式的准确性;通过双向认证的方式,有效地保证了通信安全。
在一些实施例中,参见图3C,图3C是本申请实施例提供的节点集群的节点自治方法的一个可选的流程示意图,图3A示出的步骤101可以通过步骤301至步骤304实现,将结合各步骤进行说明。
在步骤301中,当访问请求未包括从节点证书时,从节点生成用于与主节点进行单向认证的代理访问请求。
这里,当被代理的访问请求未包括数字证书时,从节点生成未包括数字证书的代理访问请求,以用于与主节点进行单向认证。
在步骤302中,从节点获取主节点发送的主节点证书。
例如,从节点可以先向主节点发送认证请求,主节点在获取到认证请求时,向从节点发送包括主节点公钥的主节点证书,以作为响应。
在步骤303中,当对主节点证书验证成功时,从节点建立与主节点之间的通信连接。
这里,从节点对主节点证书的验证过程与上文类似,在此不做赘述。当从节点对主节点证书验证成功时,从节点建立与主节点之间的通信连接。
值得说明的是,由于网络原因或其他原因,可能会导致从节点与主节点之间无法建立通信连接,对于该种情况,可以直接确定从节点根据代理访问请求向主节点请求失败。
在步骤304中,从节点根据建立的通信连接,将代理访问请求发送至主节点。
例如,当代理访问请求是HTTPS请求时,从节点根据建立的SSL通信连接,将代理访问请求发送至主节点。由于在单向认证的过程中,仅对主节点证书进行验证,故为了提升数据传输的安全性,还可以添加密码验证的机制。例如,从节点根据建立的通信连接,将代理访问请求中的用户名和密码(在代理处理过程中从访问请求获取)发送至主节点,主节点在对用户名和密码验证成功时,响应代理访问请求,如当代理访问请求是数据获取请求时,主节点根据建立的通信连接,将对应的响应数据发送至从节点;主节点在对用户名和密码验证失败时,拒绝响应代理访问请求。
此外,主节点在对用户名和密码验证成功时,还可以生成令牌信息(Toke n),并将令牌信息存储在本地,同时根据建立的通信连接,将令牌信息发送至从节点。如此,从节点在下一次生成访问请求时,将令牌信息作为用户名和密码的替代,添加至访问请求中,主节点也能够根据代理访问请求中的令牌信息(在代理处理的过程中从访问请求获取)进行验证,能够提升验证的效率的性能。其中,主节点可以采用持久化存储或非持久化存储的方式,在本地存储令牌信息。
如图3C所示,在访问请求未包括从节点证书时,采用单向认证的方式,能够提升建立通信连接的成功率,此外,还可以通过密码验证的机制,提升数据传输的安全性。
在一些实施例中,参见图3D,图3D是本申请实施例提供的节点集群的节点自治方法的一个可选的流程示意图,基于图3A,在步骤101之前,还可以在步骤401中,从节点对历史访问请求进行代理处理,将得到的历史代理访问请求发送至主节点。
这里,对历史访问请求进行的代理处理,与步骤101中对访问请求进行的代理处理类似,在此不做赘述。
在步骤402中,当根据历史代理访问请求向主节点请求成功、且历史代理访问请求包括一次性的数据获取请求时,从节点根据从主节点获取的响应数据,在从节点的软件容器中运行数据业务。
这里,针对历史代理访问请求是数据获取请求的情况进行说明。在本申请实施例中,数据获取请求分为一次性的数据获取请求和持续性的数据获取请求两类,前者获取的是全量数据,后者获取的是增量数据(这里的增量指改变量),例如,前者用于一次性地获取某个资源的数量,后者用于持续性地监测该资源的数量是否增加或减少。
当根据历史代理访问请求向主节点请求成功、且历史代理访问请求包括一次性的数据获取请求时,从节点直接根据从主节点获取的响应数据,在从节点的软件容器中运行数据业务、
在步骤403中,从节点对响应数据进行存储处理。
除了在软件容器中运行数据业务之外,从节点还对获取到的响应数据进行存储处理,以便下次请求失败时使用。
在一些实施例中,步骤401之后,还包括:当根据历史代理访问请求向主节点请求成功、且历史代理访问请求为持续性的数据获取请求时,根据从主节点获取的响应数据,在从节点的软件容器中运行数据业务,并丢弃响应数据。
当历史代理访问请求仅包括持续性的数据获取请求时,从节点从主节点获取的响应数据实则是增量数据,没有存储的必要,因此,从节点仅根据该响应数据在软件容器中运行数据业务,并不对该响应数据进行存储处理。通过上述方式,能够节省从节点本地的存储资源,避免存储不必要的数据。
在步骤404中,当历史代理访问请求包括一次性的数据获取请求、以及持续性的数据获取请求时,从节点将一次性的数据获取请求周期性地发送至主节点。
这里,当历史代理访问请求包括一次性的数据获取请求、以及持续性的数据获取请求时,证明从节点期望获取到最新的响应数据,即最新的全量数据,因此,从节点还将一次性的数据获取请求周期性地发送至主节点。
值得说明的是,这里的一次性的数据获取请求以及持续性的数据获取请求,并不要求一定存在于同一个历史代理访问请求中,例如,还可以是在设定的时长阈值中先后出现的。
在步骤405中,从节点根据从主节点获取的响应数据,对已经存储的响应数据进行更新。
从节点在每次将一次性的数据获取请求发送至主节点后,根据从主节点获取的响应数据(这里指主节点对一次性的数据获取请求进行响应所得到的响应数据),覆盖从节点本地已经存储的响应数据,实现更新。
在一些实施例中,可以通过这样的方式来实现上述的对响应数据进行存储处理:从节点以历史代理访问请求中的索引信息作为键、并以响应数据作为值生成键值对,并对键值对进行存储处理;其中,索引信息包括从节点的用户代理信息以及请求路径信息中的至少一种;可以通过这样的方式来实现上述的获取从节点已经存储的响应数据:当代理访问请求中的索引信息、与已经存储的键值对中的索引信息匹配成功时,从节点获取匹配成功的键值对中的响应数据。
在本申请实施例中,可通过键值对的方式来存储响应数据。例如,从节点以历史代理访问请求中的索引信息作为键(Key),以响应数据作为值(Value)生成键值对,并将该键值对存储在本地,其中,索引信息包括用户代理(User-Agent)信息以及请求路径(Path)信息中的至少一种,用户代理信息包括但不限于浏览器标识、操作系统标识、加密等级标识、浏览器语言、渲染引擎以及浏览器版本信息。对于同一种数据,主节点往往会存储与不同的用户代理信息分别对应的数据形式,以便数据能在相应操作系统中的浏览器进行正常显示,因此,用户代理信息和请求路径信息都能够用于区分不同的数据,在本申请实施例中可以作为数据的索引信息。
在存储完成键值对后,若从节点根据代理访问请求向主节点请求失败,则从节点可以将代理访问请求中的索引信息与已经存储的键值对中的索引信息进行匹配,若两个索引信息相同,则确定匹配成功,进而获取匹配成功的键值对中的响应数据,以在软件容器中运行数据业务。通过上述方式,提升了对已经存储的响应数据进行索引的准确性。
如图3D所示,当历史代理访问请求包括一次性的数据获取请求、且请求成功时,对响应数据进行存储处理,便于在后续过程中对响应数据进行复用;当历史代理访问请求包括一次性的数据获取请求、以及持续性的数据获取请求时,通过对已经存储的响应数据进行更新,提升了响应数据的时效性,适用于时效性要求较高的场景。
在一些实施例中,参见图3E,图3E是本申请实施例提供的节点集群的节点自治方法的一个可选的流程示意图,在图3E中,从节点包括管理组件、路由组件及代理存储组件,将结合以下步骤说明各个组件的功能。
在步骤501中,代理存储组件将自身的地址信息添加至路由组件。
在本申请实施例中,从节点可包括管理组件、路由组件及代理存储组件,其中,管理组件用于对从节点中的软件容器进行管理,如控制软件容器运行数据业务;路由组件用于确定地址规则及转发请求等;代理存储组件用于进行代理处理。为了使访问请求能被成功转发至代理存储组件,代理存储组件首先将自身的地址信息添加至路由组件中,例如,路由组件在获取到指向代理存储组件的地址信息的地址资源(即该地址资源包括代理存储组件的地址信息)时,将代理存储组件的地址信息添加至iptables规则中。其中,访问请求的生成方可以是从节点中的管理组件或者软件容器,为了便于理解,图3E中以管理组件生成访问请求为例进行说明。另外,代理存储组件的地址信息可以包括代理存储组件的IP地址以及代理存储组件所监听的端口,代理存储组件的IP地址可以是本机IP地址,如127.0.0.1,监听的端口可以是本机端口,如1443端口。
值得说明的是,在某些节点集群如Kubernetes中,可能不允许创建指向本机地址的地址资源,因此,可以创建指向主节点的地址信息、且注解(annotations)为代理存储组件的地址信息的地址资源,并在路由组件的基础上额外增加一个路由包装组件,该路由包装组件在获取到该地址资源后,根据该地址资源中的注解,将该地址资源修改为指向代理存储组件的地址信息。然后,路由组件根据路由包装组件中修改后的地址资源,将代理存储组件的地址信息添加至iptables规则中。
在步骤502中,管理组件生成准备向主节点发送的访问请求。
例如,管理组件可以根据预先设定的规则,周期性地生成准备向主节点发送的访问请求,该访问请求用于获取某个资源的数量。当然,访问请求的生成方式并不限于此,可根据实际应用场景进行调整。
在步骤503中,路由组件根据代理存储组件的地址信息,将管理组件生成的访问请求路由至代理存储组件。
例如,路由组件根据添加有代理存储组件的地址信息的iptables规则,将目标为主节点的访问请求,路由至代理存储组件。
在步骤504中,代理存储组件对访问请求进行代理处理,并将生成的代理访问请求发送至主节点。
这里,代理处理的过程与步骤101类似,在此不做赘述。
在步骤505中,当根据代理访问请求向主节点请求失败时,代理存储组件获取在代理存储组件中已经存储的响应数据;其中,已经存储的响应数据是根据历史代理访问请求向主节点请求成功时从主节点获取的数据。
在本申请实施例中,代理存储组件具有独立的存储空间,当根据代理访问请求向主节点请求失败时,代理存储组件在自身的存储空间中,获取已经存储的响应数据。该已经存储的响应数据是代理存储组件根据历史代理访问请求向主节点请求成功时,从主节点获取并存储至自身的存储空间的数据。
在步骤506中,代理存储组件将已经存储的响应数据发送至管理组件。
这里,代理存储组件将已经存储的响应数据,发送至访问请求的生成方,图3E中以管理组件为例。
在步骤507中,管理组件根据已经存储的响应数据,在从节点的软件容器中运行数据业务。
如图3E所示,本申请实施例在从节点中划分出了多个组件,每个组件各司其职,提升了节点自治的有序性,在出现问题时能够快速溯源,定位问题所在,便于相关人员进行修复。
下面,将说明本申请实施例在实际的应用场景中的示例性应用,为了便于理解,以Kubernetes节点集群为例进行说明。本申请实施例适用于边缘计算的场景,例如物联网(Internet of Things,IoT)领域中的工厂、仓库、楼宇、园区及高速收费站等需要边缘计算的场景,又例如内容分发网络(Content Delivery Network,CDN)领域中的视频直播、视频监控及在线教育等需要边缘计算的场景。本申请实施例提供了如图4所示的边缘计算的架构示意图,在边缘计算场景中,同一个集群中往往会存在多个边缘站点,如图4中的边缘站点41,每个边缘站点通过局域网的形式管理一个或多个边缘节点(即从节点)。每个局域网内的边缘节点通过公网(如互联网)与云端控制台(即主节点)进行通信,从而提供数据服务。由于边缘节点没有公网IP地址,只有云端控制台有公网IP地址,因此,网络流只能由边缘节点主动向云端控制台发起。
由于公网的网络环境较为复杂,可能会出现时延高、网络抖动,甚至一个局域网内的所有边缘节点同时与云端控制台断开连接的情况,此外,用户还可以主动关闭云端控制台的公网通信功能,因此,在边缘计算的场景中,边缘节点与云端控制台之间的通信质量无法保证。
而在原生的Kubernetes节点集群中,默认所有的节点都处于一个局域网,或者一个扁平的网络环境内,不同节点之间可以互相访问,主节点与从节点之间的通信属于内网通信,不会存在因通信质量差而导致请求失败的问题。故针对通信质量不佳甚至于断网的情况,相关技术并未提供有效的解决方案。
为了提升边缘节点的容灾能力,本申请实施例提供了如图5所示的节点集群的架构示意图,本申请实施例的Kubernetes节点集群包括主节点和多个从节点,其中,主节点位于云端,主节点中的云端组件(即kube-apiserver组件)是Kubernetes节点集群中数据交互和通信的枢纽;从节点位于局域网,除了原生的kubelet组件(对应上文的管理组件)的kube-proxy组件(对应上文的路由组件)外,本申请实施例在每个从节点中额外部署了一个lite-apiserver二进制组件(对应上文的代理存储组件),该lite-apiserver组件监听从节点本地的某个端口,从节点的原生组件发出的所有访问请求(主要是kubelet组件发出的请求)都会经过lite-apiserver组件,由lite-apiserver组件发向kube-apiserver组件。值得说明的是,除了从节点的原生组件发出的访问请求外,从节点的Pod生成的用于访问kube-apiserver组件的访问请求,也会经过lite-apiserver组件,例如基于operator工具生成的Pod请求。为了便于理解,后文以从节点的原生组件发出的访问请求,进行示例说明。
本申请实施例提供了如图6所示的lite-apiserver组件的架构示意图,该组件包括代理模块、证书管理模块、存储模块及请求缓存管理控制器四个部分,将依次进行说明。
1)代理模块。代理模块包括代理服务器和代理客户端,其中,代理服务器是针对从节点而言的,即会接收从节点的原生组件(或者Pod,以下同理)发出的所有访问请求;代理客户端是针对于kube-apiserver组件而言的,即会代替从节点的原生组件,向kube-apiserver组件发起代理访问请求。代理客户端在向kube-apiserver组件发送代理访问请求后,会根据返回的结果执行以下处理:
a)若向kube-apiserver组件请求成功,则代理客户端会将kube-apiserver组件返回的响应数据写入存储模块,例如以缓存的方式进行存储。同时,将该响应数据通过代理服务器,返回给从节点中发起访问请求的组件。
b)若向kube-apiserver组件请求失败,如出现请求超时、拒绝访问等情况,则代理客户端会尝试从存储模块中读取已经存储的响应数据,并将已经存储的响应数据通过代理服务器,返回给节点侧发起访问请求的组件。
c)若向kube-apiserver组件请求失败、且代理客户端未从存储模块中读取到与代理访问请求对应的响应数据,则代理客户端会将错误信息,通过代理服务器返回给节点侧发起访问请求的组件。
2)证书管理模块。这里,lite-apiserver组件是以HTTPS中间人方式来代理从节点发起的访问请求,lite-apiserver组件会根据从节点发起的访问请求执行如下处理:
a)若访问请求中未携带客户端证书(对应上文的从节点证书),则lite-apiserver组件也会选择相同方式(即单向认证方式)向kube-apiserver组件发起代理访问请求,为了提升数据传输的安全性,可以采用令牌信息验证或其他的验证方式。
b)若访问请求中携带了客户端证书,则lite-apiserver组件会将客户端证书中的公用名(Common Name,CN)信息与预先存储的多个有权证书中的CN信息进行匹配。若匹配成功,则根据匹配成功的有权证书生成代理访问请求。
c)若访问请求中携带了客户端证书、且客户端证书中的CN信息与多个有权证书中的CN信息均匹配失败,则lite-apiserver组件依旧选择使用单向认证方式,向kube-apiserver组件发起代理访问请求。
3)存储模块。该模块主要负责将lite-apiserver组件请求kube-apiserver组件成功时,kube-apiserver组件返回的响应数据进行存储。lite-apiserver组件会以代理访问请求中的User-Agent和Path作为Key,以响应数据作为值生成键值对,并将该键值对存储在存储模块中,其中,响应数据可以以字节数组的方式存储。
值得说明的是,从节点的原生组件通常是通过client-go的方式来发起访问请求,即访问请求的类型包括Get请求、Put请求、Post请求以及Delete请求,在从节点与kube-apiserver组件断开连接的情况下,Put请求、Post请求以及Delete请求本身是不允许成功的,因此,在本申请实施例中,仅对Get请求对应的响应数据进行缓存即可。在此基础上,Get请求包括stream请求(对应上文的持续性的数据获取请求)和非stream请求(对应上文的一次性的数据获取请求)两类,stream请求用于进行持续性的监测,没有存储的意义,因此,仅存储非stream请求对应的响应数据即可。
4)请求缓存管理控制器。该模块主要负责根据list-watch请求中的list请求,对存储模块中的响应数据进行更新,其中,list请求是非stream请求,watch请求是stream请求。由于lite-apiserver组件是通过被动触发的方式来存储响应数据,在从节点的原生组件发起的访问请求是list-watch请求的情况下,若lite-apiserver组件只存储一次响应数据,则会导致存储的响应数据不准确、丧失时效性。因此,若请求缓存管理控制器监测到从节点的原生组件对于某种资源,在设定的时长阈值内发起了list请求及watch请求,则确定从节点的原生组件对于该资源发起了list-watch请求(当然从节点的原生组件也可以直接发起list-watch请求),然后,请求缓存管理控制器会周期性地向代理客户端发送对该资源的list请求,以使代理客户端根据kube-apiserver组件返回的响应数据,对存储模块中已经存储的响应数据进行更新。
在原生的Kubernetes节点集群中,会自动在默认命名空间(Default Name space)下创建一个名称为kubernetes的数据服务(service),同时会自动创建一个同名的endpoints资源(对应上文的地址资源),该endpoints资源指向kube-apiserver组件的实例。在从节点中创建了一个Pod后,从节点的组件就会将名称为kubernetes的数据服务以及对应的endpoints资源作为环境变量,映射到Pod内部,从而提供给client-go来访问kube-apiserver组件。
由于原生的Kubernetes节点集群的限制,不允许创建指向127.0.0.1(即从节点本机的IP地址)的endpoints资源,因此,在本申请实施例中,可以通过以下方式来创建指向从节点本机的lite-apiserver组件的endpoints资源。首先,通过kube-apiserver组件的参数设置,将自动创建并更新endpoints资源(这里指的是名称为kubernetes的数据服务对应的endpoints资源)的功能关闭。然后,在默认命名空间中创建一个名称为kubernetes并带有独特annotations的endpoints资源,该annotations包括127.0.0.1的IP地址以及lite-apiserver组件监听的本机端口,此外,该endpoints资源指向kube-apiserver组件的实例,即指向主节点的地址信息。
同时,在从节点的kube-proxy组件的基础上,创建一个kube-proxy-wrapper组件(对应上文的路由包装组件),如图7所示,kube-proxy-wrapper组件运行在kube-proxy组件之前,即kube-proxy组件发起的所有请求,都会经过kube-proxy-wrapper组件。kube-proxy-wrapper组件用于对Kubernetes节点集群中所有的数据服务、以及对应的endpoints资源进行过滤和修改,当kube-proxy-wrapper组件监测(如通过watch请求进行监测)到上文的包括独特annotations的endpoints资源时,根据该annotations,将该endpoints资源修改为指向lite-apiserver组件。如此,kube-proxy组件便可将修改后的endpoints资源,写入iptables规则中,以使从节点的原生组件发起的访问请求能够成功地被转发至lite-apiserver组件。同理,从节点的Pod生成的用于访问kube-apiserver组件的访问请求,也会被转发至lite-apiserver组件,如此,就算从节点与主节点之间的通信质量不稳定甚至出现断开连接的情况,lite-apiserver组件也能够基于存储的数据,对Pod发出的访问请求进行响应,保证Pod中的数据业务正常运行。Kubernetes节点集群中的kubedns部署、用户自定义的各种operator的部署、以及基于daemonset方式的kube-proxy组件部署,均依赖该功能的实现。
此外,在本申请实施例中,Kubernetes节点集群中的局域网可以采用Flannel虚拟扩展本机局域网(Visual eXtensible Local Area Network,VxLAN)模式,其对应的地址分配管理组件为容器网络接口(Container Network Interface,CNI)下的host-local。为了解决断网环境下重启节点后,出现的Pod IP地址迁移,以及flannel.1网卡的MAC地址重建的问题,本申请实施例可以通过网络快照的方式,将从节点中Pod的IP地址、以及flannel.1网卡的MAC地址存储在特定的文件目录中。如此,能够固定flannel.1网卡的MAC地址,保证重建后地址解析协议(Address Resolution Protocol,ARP)不会失效;同时固定了Pod的IP地址,保证了从节点重启后,Pod的IP地址仍为之前的IP地址,有效地避免了重启后路由失败。值得说明的是,本申请实施例还可以接入服务注册发现机制,例如根据从节点的Pod在主节点中进行注册,得到数据服务,以供调用。另外,本申请实施例并不限于固定IP地址及固定MAC地址的这种方式,例如,在从节点重启之后,从节点可以将自身包括的Pod的IP地址、以及flannel.1网卡的MAC地址进行广播,使其他从节点获知,便于使其他从节点明确调用规则。
发明人对本申请实施例提供的Kubernetes节点集群进行了实验验证,首先在Kubernetes节点集群中部署多种微服务(数据服务),保证正常情况下微服务能互相调用,然后手动关闭主节点的公网访问功能(如通过iptables规则限制,或者停止运行kube-apiserver组件的进程),可以观测到如下情况:1)从节点中的软件容器正常运行,微服务彼此之间调用正常;2)手动杀死(kill)从节点中的软件容器后,软件容器正常重启,并正常运行;3)手动重启一个从节点后,从节点中的软件容器正常重启,并正常运行;4)在同一从节点内,手动相互调用不同的Pod,即基于Pod的IP地址进行同节点调用,调用结果是调用正常;针对同一局域网内的不同从节点,手动相互调用不同从节点中的Pod,即基于flannel.1网卡的MAC地址进行跨节点调用,调用结果是调用正常;5)通过数据服务的名称访问各个数据服务,访问正常;6)整个Kubernetes节点集群中,微服务互相调用正常。
可见,通过本申请实施例,能够极大地提高了节点集群的业务可用性,在与云端控制台(主节点)之间的通信连接不稳定甚至于断开连接的情况下,能够保证业务继续运行,数据服务继续提供,实现了软件容器的边缘自治,适用于边缘计算的场景。
下面继续说明本申请实施例提供的节点集群的节点自治装置343实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器340的节点集群的节点自治装置343中的软件模块可以包括:代理模块3431,用于对准备向主节点发送的访问请求进行代理处理,并将生成的代理访问请求发送至主节点;存储数据获取模块3432,用于当根据代理访问请求向主节点请求失败时,获取从节点已经存储的响应数据;其中,已经存储的响应数据是根据历史代理访问请求向主节点请求成功时从主节点获取的数据;业务运行模块3433,用于根据已经存储的响应数据,在从节点的软件容器中运行数据业务。
在一些实施例中,代理模块3431,还用于:当访问请求包括从节点证书时,生成用于与主节点进行双向认证的代理访问请求;当访问请求未包括从节点证书时,生成用于与主节点进行单向认证的代理访问请求。
在一些实施例中,代理模块3431,还用于:当从节点证书与已经存储的多个有权证书中的任意一个匹配成功时,根据匹配成功的有权证书,生成用于与主节点进行双向认证的代理访问请求;当从节点证书与多个有权证书均匹配失败时,生成用于与主节点进行单向认证的代理访问请求。
在一些实施例中,节点集群的节点自治装置343还包括:连接建立模块,用于当代理访问请求用于与主节点进行单向认证时,获取主节点发送的主节点证书,并当对主节点证书验证成功时,建立与主节点之间的通信连接;当代理访问请求用于与主节点进行双向认证时,获取主节点发送的主节点证书,并当对主节点证书验证成功时,将匹配成功的有权证书发送至主节点,以使主节点在对匹配成功的有权证书验证成功时,建立与从节点之间的通信连接;其中,建立的通信连接用于将代理访问请求发送至主节点。
在一些实施例中,节点集群的节点自治装置343还包括:数据存储模块,用于当历史代理访问请求包括一次性的数据获取请求时,根据从主节点获取的响应数据,在从节点的软件容器中运行数据业务,并对响应数据进行存储处理;数据丢弃模块,用于当历史代理访问请求为持续性的数据获取请求时,根据从主节点获取的响应数据,在从节点的软件容器中运行数据业务,并丢弃响应数据。
在一些实施例中,节点集群的节点自治装置343还包括:存储数据更新模块,用于当历史代理访问请求包括一次性的数据获取请求、以及持续性的数据获取请求时,将一次性的数据获取请求周期性地发送至主节点,并根据从主节点获取的响应数据,对已经存储的响应数据进行更新。
在一些实施例中,存储模块还用于:以历史代理访问请求中的索引信息作为键、并以响应数据作为值生成键值对,并对键值对进行存储处理;其中,索引信息包括从节点的用户代理信息以及请求路径信息中的至少一种;存储数据获取模块3432,还用于:当代理访问请求中的索引信息、与已经存储的键值对中的索引信息匹配成功时,获取匹配成功的键值对中的响应数据。
在一些实施例中,从节点包括代理存储组件、管理组件及路由组件;节点集群的节点自治装置343还包括:地址信息添加模块,用于将代理存储组件的地址信息添加至路由组件,以使路由组件根据代理存储组件的地址信息,将访问请求路由至代理存储组件;其中,代理存储组件用于对访问请求进行代理处理,并在根据生成的代理访问请求向主节点请求失败时,将代理存储组件中已经存储的响应数据发送至访问请求的生成方;访问请求的生成方用于根据已经存储的响应数据,在从节点的软件容器中运行数据业务;访问请求的生成方为管理组件及从节点的软件容器中的任意一个。
在一些实施例中,节点集群的节点自治装置343还包括:地址处理模块,用于执行以下任意一种处理:对从节点的软件容器的地址信息进行存储处理,以当软件容器重启时,对重启的软件容器应用已经存储的地址信息;当从节点的软件容器重启时,将软件容器的地址信息,发送至与从节点属于同一局域网的其他从节点。
在一些实施例中,节点集群的节点自治装置343还包括:本地服务注册模块,用于将从节点的软件容器中运行的数据业务,在主节点中进行注册,得到本地数据服务;其中,本地数据服务用于被从节点中区别于软件容器的其他软件容器调用,或者与从节点属于同一局域网的其他从节点中的软件容器调用。
在一些实施例中,节点集群的节点自治装置343还包括:对外服务注册模块,用于将从节点的软件容器中运行的数据业务,在主节点中进行注册,得到对外数据服务;其中,对外数据服务用于被节点集群外的客户端调用。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的节点集群的节点自治方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图3A、图3B、图3C、图3D或图3E示出的节点集群的节点自治方法。值得说明的是,计算机包括终端设备和服务器在内的各种计算设备。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上,通过本申请实施例能够实现以下技术效果:
1)通过数据存储的机制,提升了从节点的容灾能力,在从节点与主节点之间的网络连接不稳定甚至断开时,能够有效地保证从节点内软件容器的数据业务运行正常,进而能够保证提供正常的数据服务。
2)根据访问请求是否包括从节点证书、以及从节点证书是否能够与有权证书匹配成功,来确定使用单向认证还是双向认证的方式建立通信连接,能够提升建立通信连接的成功率;在单向认证中,可以添加密码验证或其他的验证机制,来保证通信安全。
3)通过对从节点中的软件容器的地址信息进行存储处理,保证在软件容器重启时,地址信息不会出现迁移,相关的地址规则也不需更改;另一种方式是在软件容器重启后,将重新生成的地址信息广播至其他从节点。通过两种方式,在地址层面上提升了软件容器的容灾能力。
4)对一次性的数据获取请求和持续性的数据获取请求进行区分处理,能够节省存储资源,避免不必要的资源浪费;当出现对于同一资源的一次性的数据获取请求、以及持续性的数据获取请求时,对已经存储的响应数据进行周期性更新,提升了响应数据的时效性,适用于时效性要求较高的场景。
5)通过在从节点中划分出管理组件、路由组件及代理存储组件,提升了节点自治的有序性,在出现问题时能够快速溯源,定位问题所在,便于相关人员进行修复。
以上,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (15)

1.一种节点集群的节点自治方法,其特征在于,所述节点集群包括主节点和多个从节点;
所述节点自治方法包括:
对准备向所述主节点发送的访问请求进行代理处理,并将生成的代理访问请求发送至所述主节点;
当根据所述代理访问请求向所述主节点请求失败时,获取所述从节点已经存储的响应数据;
其中,所述已经存储的响应数据是根据历史代理访问请求向所述主节点请求成功时从所述主节点获取的数据;
根据所述已经存储的响应数据,在所述从节点的软件容器中运行数据业务。
2.根据权利要求1所述的节点自治方法,其特征在于,所述对准备向所述主节点发送的访问请求进行代理处理,包括:
当所述访问请求包括从节点证书时,生成用于与所述主节点进行双向认证的代理访问请求;
当所述访问请求未包括所述从节点证书时,生成用于与所述主节点进行单向认证的代理访问请求。
3.根据权利要求2所述的节点自治方法,其特征在于,
所述生成用于与所述主节点进行双向认证的代理访问请求,包括:
当所述从节点证书与已经存储的多个有权证书中的任意一个匹配成功时,根据匹配成功的有权证书,生成用于与所述主节点进行双向认证的代理访问请求;
所述节点自治方法还包括:
当所述从节点证书与所述多个有权证书均匹配失败时,生成用于与所述主节点进行单向认证的代理访问请求。
4.根据权利要求3所述的节点自治方法,其特征在于,还包括:
当所述代理访问请求用于与所述主节点进行单向认证时,获取所述主节点发送的主节点证书,并当对所述主节点证书验证成功时,建立与所述主节点之间的通信连接;
当所述代理访问请求用于与所述主节点进行双向认证时,获取所述主节点发送的主节点证书,并当对所述主节点证书验证成功时,将所述匹配成功的有权证书发送至所述主节点,以使
所述主节点在对所述匹配成功的有权证书验证成功时,建立与所述从节点之间的通信连接;
其中,建立的通信连接用于将所述代理访问请求发送至所述主节点。
5.根据权利要求1所述的节点自治方法,其特征在于,还包括:
当所述历史代理访问请求包括一次性的数据获取请求时,根据从所述主节点获取的响应数据,在所述从节点的软件容器中运行数据业务,并对所述响应数据进行存储处理;
当所述历史代理访问请求为持续性的数据获取请求时,根据从所述主节点获取的响应数据,在所述从节点的软件容器中运行数据业务,并丢弃所述响应数据。
6.根据权利要求5所述的节点自治方法,其特征在于,所述对所述响应数据进行存储处理之后,还包括:
当所述历史代理访问请求包括所述一次性的数据获取请求、以及所述持续性的数据获取请求时,将所述一次性的数据获取请求周期性地发送至所述主节点,并根据从所述主节点获取的响应数据,对已经存储的响应数据进行更新。
7.根据权利要求5所述的节点自治方法,其特征在于,
所述对所述响应数据进行存储处理,包括:
以所述历史代理访问请求中的索引信息作为键、并以所述响应数据作为值生成键值对,并对所述键值对进行存储处理;
其中,所述索引信息包括所述从节点的用户代理信息以及请求路径信息中的至少一种;
所述获取所述从节点已经存储的响应数据,包括:
当所述代理访问请求中的索引信息、与已经存储的键值对中的索引信息匹配成功时,获取匹配成功的键值对中的响应数据。
8.根据权利要求1至7任一项所述的节点自治方法,其特征在于,
所述从节点包括代理存储组件、管理组件及路由组件;
所述节点自治方法还包括:
将所述代理存储组件的地址信息添加至所述路由组件,以使
所述路由组件根据所述代理存储组件的地址信息,将所述访问请求路由至所述代理存储组件;
其中,所述代理存储组件用于对所述访问请求进行代理处理,并在根据生成的代理访问请求向所述主节点请求失败时,将所述代理存储组件中已经存储的响应数据发送至所述访问请求的生成方;
所述访问请求的生成方用于根据所述已经存储的响应数据,在所述从节点的软件容器中运行数据业务;所述访问请求的生成方为所述管理组件及所述从节点的软件容器中的任意一个。
9.根据权利要求1至7任一项所述的节点自治方法,其特征在于,还包括:
执行以下任意一种处理:
对所述从节点的软件容器的地址信息进行存储处理,以
当所述软件容器重启时,对重启的所述软件容器应用已经存储的地址信息;
当所述从节点的软件容器重启时,将所述软件容器的地址信息,发送至与所述从节点属于同一局域网的其他从节点。
10.根据权利要求1至7任一项所述的节点自治方法,其特征在于,还包括:
将所述从节点的软件容器中运行的数据业务,在所述主节点中进行注册,得到本地数据服务;
其中,所述本地数据服务用于被所述从节点中区别于所述软件容器的其他软件容器调用,或者与所述从节点属于同一局域网的其他从节点中的软件容器调用。
11.根据权利要求1至7任一项所述的节点自治方法,其特征在于,还包括:
将所述从节点的软件容器中运行的数据业务,在所述主节点中进行注册,得到对外数据服务;
其中,所述对外数据服务用于被所述节点集群外的客户端调用。
12.一种节点集群的节点自治系统,其特征在于,
所述节点集群包括主节点和多个从节点;其中,
所述从节点用于:
对准备向所述主节点发送的访问请求进行代理处理,并将生成的代理访问请求发送至所述主节点;
当根据所述代理访问请求向所述主节点请求失败时,获取所述从节点已经存储的响应数据;
其中,所述已经存储的响应数据是根据历史代理访问请求向所述主节点请求成功时从所述主节点获取的数据;
根据所述已经存储的响应数据,在所述从节点的软件容器中运行数据业务。
13.一种节点集群的节点自治装置,其特征在于,所述节点集群包括主节点和多个从节点;
所述节点自治装置包括:
代理模块,用于对准备向所述主节点发送的访问请求进行代理处理,并将生成的代理访问请求发送至所述主节点;
存储数据获取模块,用于当根据所述代理访问请求向所述主节点请求失败时,获取所述从节点已经存储的响应数据;
其中,所述已经存储的响应数据是根据历史代理访问请求向所述主节点请求成功时从所述主节点获取的数据;
业务运行模块,用于根据所述已经存储的响应数据,在所述从节点的软件容器中运行数据业务。
14.一种电子设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至11任一项所述的节点集群的节点自治方法。
15.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至11任一项所述的节点集群的节点自治方法。
CN202010895817.5A 2020-08-31 2020-08-31 节点集群的节点自治方法、系统、装置及电子设备 Active CN112035215B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010895817.5A CN112035215B (zh) 2020-08-31 2020-08-31 节点集群的节点自治方法、系统、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010895817.5A CN112035215B (zh) 2020-08-31 2020-08-31 节点集群的节点自治方法、系统、装置及电子设备

Publications (2)

Publication Number Publication Date
CN112035215A CN112035215A (zh) 2020-12-04
CN112035215B true CN112035215B (zh) 2023-12-19

Family

ID=73587156

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010895817.5A Active CN112035215B (zh) 2020-08-31 2020-08-31 节点集群的节点自治方法、系统、装置及电子设备

Country Status (1)

Country Link
CN (1) CN112035215B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112737934B (zh) * 2020-12-28 2023-07-18 常州森普信息科技有限公司 一种集群式物联网边缘网关装置及方法
CN112910981B (zh) * 2021-01-27 2022-07-26 联想(北京)有限公司 一种控制方法及装置
CN113242239A (zh) * 2021-05-10 2021-08-10 广州欢网科技有限责任公司 一种实现https双向认证的方法、装置及系统
CN113419819B (zh) * 2021-06-25 2023-09-08 重庆紫光华山智安科技有限公司 容器管理方法、装置、设备及介质
CN113595899A (zh) * 2021-06-30 2021-11-02 上海云轴信息科技有限公司 一种用于多节点云路由实现的方法及系统
CN113794764A (zh) * 2021-09-10 2021-12-14 小红书科技有限公司 服务器集群的请求处理方法、介质和电子设备
CN113778628B (zh) * 2021-09-14 2023-09-05 新华智云科技有限公司 边缘节点管控方法及系统
CN114124959A (zh) * 2021-12-06 2022-03-01 天地伟业技术有限公司 云流媒体服务的数据处理装置及云流媒体集群
US11924305B2 (en) 2022-06-29 2024-03-05 International Business Machines Corporation Edge node autonomy
CN115695529B (zh) * 2023-01-04 2023-03-28 深圳市万睿智能科技有限公司 智能化远程运维方法、装置、计算机设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109684A (zh) * 2019-04-04 2019-08-09 平安科技(深圳)有限公司 区块链节点管理代理服务安装方法、电子装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772866B1 (en) * 2012-07-17 2017-09-26 Nutanix, Inc. Architecture for implementing a virtualization environment and appliance

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109684A (zh) * 2019-04-04 2019-08-09 平安科技(深圳)有限公司 区块链节点管理代理服务安装方法、电子装置及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"上下文感知自治网络中业务上下文子系统的设计与实现";王睿思;《中国优秀硕士学位论文全文数据库信息科技辑》;I138-522 *

Also Published As

Publication number Publication date
CN112035215A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
CN112035215B (zh) 节点集群的节点自治方法、系统、装置及电子设备
US11088903B2 (en) Hybrid cloud network configuration management
US10484385B2 (en) Accessing an application through application clients and web browsers
US11792199B2 (en) Application-assisted login for a web browser
US9276926B2 (en) Secure and automated credential information transfer mechanism
US11438421B2 (en) Accessing resources in a remote access or cloud-based network environment
US9183031B2 (en) Provisioning of a virtual machine by using a secured zone of a cloud environment
WO2020057163A1 (zh) Mec平台部署方法及装置
CN111277432B (zh) 配置信息更新方法、装置、电子设备及存储介质
US20150319226A1 (en) Task Coordination in Distributed Systems
US11632247B2 (en) User security token invalidation
US10645172B1 (en) Socket tunneling connections in a service provider environment
JP2019514090A (ja) ユーザアカウントと企業ワークスペースとの関連付け
US11245681B2 (en) Authentication in a multi-tenant environment
US20220050699A1 (en) Workspace resiliency with multi-feed status resource caching
US11171964B1 (en) Authentication using device and user identity
JP2021535521A (ja) 仮想デスクトップでのローカルマップアカウント
US10721719B2 (en) Optimizing caching of data in a network of nodes using a data mapping table by storing data requested at a cache location internal to a server node and updating the mapping table at a shared cache external to the server node
US20220174117A1 (en) Computing device and related methods providing virtual session access using group connection leases and user interface (ui) caches
CN115189897A (zh) 零信任网络的访问处理方法、装置、电子设备及存储介质
CA3135722C (en) Sharing resources between client devices in a virtual workspace environment
CN113051035B (zh) 一种远程控制方法、装置、系统及宿主机
US11630682B2 (en) Remoting user credential information to a remote browser
CN112416522A (zh) 一种虚拟机控制方法及其装置
JP2022516290A (ja) 汚染された接続エージェントの追跡

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40036293

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant