CN113568711B - 一种K8S中使用的基于eBPF架构的负载均衡方法及装置 - Google Patents

一种K8S中使用的基于eBPF架构的负载均衡方法及装置 Download PDF

Info

Publication number
CN113568711B
CN113568711B CN202110890487.5A CN202110890487A CN113568711B CN 113568711 B CN113568711 B CN 113568711B CN 202110890487 A CN202110890487 A CN 202110890487A CN 113568711 B CN113568711 B CN 113568711B
Authority
CN
China
Prior art keywords
ebpf
load balancing
architecture
agent
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.)
Active
Application number
CN202110890487.5A
Other languages
English (en)
Other versions
CN113568711A (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.)
Inesa R&d Center
Original Assignee
Inesa R&d Center
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 Inesa R&d Center filed Critical Inesa R&d Center
Priority to CN202110890487.5A priority Critical patent/CN113568711B/zh
Publication of CN113568711A publication Critical patent/CN113568711A/zh
Application granted granted Critical
Publication of CN113568711B publication Critical patent/CN113568711B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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
    • G06F2009/45591Monitoring or debugging support
    • 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
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种K8S中使用的基于eBPF架构的负载均衡方法及装置,所述方法包括以下步骤:部署eBPF架构;在监听到K8S中启动新服务时,判断该新服务是否开启eBPF转发,若是,则基于该新服务的配置信息产生对应的负载均衡规则策略,存储于所述eBPF架构中;在监听到对K8S中服务的外部访问请求时,所述eBPF架构基于所述负载均衡规则策略实现负载均衡。与现有技术相比,本发明具有灵活性更强,性能更好等优点。

Description

一种K8S中使用的基于eBPF架构的负载均衡方法及装置
技术领域
本发明涉及一种负载均衡装置,尤其是涉及一种K8S中使用的基于eBPF架构的负载均衡方法及装置。
背景技术
随着微服务和容器的普及,Kubernetes(下称K8S)这个容器调度管理平台被越来越多的公司所青睐,在kubernetes中,为了保证容器化的应用的高可用性和服务的连续性,应用程序被抽象化成了一个一个的service,每当有服务请求service时,K8S的负载均衡组件(kube-proxy)根据service的配置把请求分发到指定的容器,以此实现外部请求的负载均衡。
目前K8S中使用的负载均衡模式有以下几种:
1、userspace模式
所有访问service的请求经内核iptables处理后回到用户态程序kube-proxy,由kube-proxy实现负载均衡。
而用户态程序进行负载均衡带来的问题就是转发性能差、时延高、丢包率高。该模式现在基本已被kubernetes弃用,只用在部分内核较老而又想作为kubernetes集群中node的节点使用。
2、iptables模式
kube-proxy在目标节点上配置好service的所需要的iptables规则,当有访问service的请求时,按提前配置好的iptables规则实现负载均衡。iptables是内核中用来实现防火墙的模块,而kube-proxy利用了iptables的DNAT也达到了负载均衡的效果。
与userspace模式相比,该模式降低了时延和丢包率,但因为iptables基于链表进行路由查找和NAT转换来实现负载均衡,随着iptables规则的增加,查找链表和更新链表的开销越来越大,在大规模部署场景中出现了性能瓶颈。
3、IPVS模式
kube-proxy的IPVS模式中,不再依赖于iptables规则来实现负载均衡,不会存在iptables规则带来的性能瓶颈。同时,由于IPVS本身就是linux内核实现的四层负载均衡,有丰富的负载均衡策略。
虽然有过多次改进,但kube-proxy使用的负载均衡方式仍存在以下不足:
1)灵活性差
只能针对4层进行负载均衡,基于路由、NAT进行数据转发,还是根据IP和端口来实现的负载均衡,无法实现微服务级别的负载均衡。
2)与iptables耦合度较高,难以解耦
IPVS模式下的kube-proxy无法独立实现负载均衡的全部功能,在某些场景(如SNAT和包过滤)仍需依赖于iptables来实现。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种灵活性好的K8S中使用的基于eBPF架构的负载均衡方法及装置。
本发明的目的可以通过以下技术方案来实现:
一种K8S中使用的基于eBPF架构的负载均衡方法,包括以下步骤:
部署eBPF架构;
在监听到K8S中启动新服务时,判断该新服务是否开启eBPF转发,若是,则基于该新服务的配置信息产生对应的负载均衡规则策略,存储于所述eBPF架构中;
在监听到对K8S中服务的外部访问请求时,所述eBPF架构基于所述负载均衡规则策略实现负载均衡。
进一步地,所述eBPF架构包括位于负载节点的eBPF代理和位于控制节点的eBPF控制器,所述eBPF代理中设置有一流量控制器。
进一步地,所述负载均衡规则策略由eBPF控制器通过gRPC传递给eBPF代理,并由eBPF代理下发至对应的流量控制器。
进一步地,所述eBPF代理实时监测微服务下pod的存活状态,判断pod状态是否存在异常,若是,则终止对该pod的请求转发。
本发明还提供一种K8S中使用的基于eBPF架构的负载均衡装置,包括控制节点和负载节点,所述负载节点包括eBPF代理,所述控制节点包括eBPF控制器,所述eBPF代理中设置有一流量控制器,所述eBPF代理和eBPF控制器形成eBPF架构,该eBPF架构存储有与K8S中服务对应的负载均衡规则策略,在监听到对K8S中服务的外部访问请求时,所述eBPF架构基于所述负载均衡规则策略实现负载均衡。
进一步地,所述负载均衡规则策略通过以下方式产生:
在监听到K8S中启动新服务时,判断该新服务是否开启eBPF转发,若是,则基于该新服务的配置信息产生对应的负载均衡规则策略,存储于所述eBPF架构中。
进一步地,所述负载均衡规则策略由eBPF控制器通过gRPC传递给eBPF代理,并由eBPF代理下发至对应的流量控制器。
进一步地,所述eBPF代理还包括:
pod状态监测单元,实时监测微服务下pod的存活状态,判断pod状态是否存在异常,若是,则终止对该pod的请求转发。
本发明还提供一种电子设备,包括:
一个或多个处理器;
存储器;和
被存储在存储器中的一个或多个程序,所述一个或多个程序包括用于执行如上所述K8S中使用的基于eBPF架构的负载均衡方法的指令。
本发明还提供一种计算机可读存储介质,包括供电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行如上所述K8S中使用的基于eBPF架构的负载均衡方法的指令。
与现有技术相比,本发明具有以下有益效果:
1、本发明通过部署的eBPF架构及对应的负载均衡规则策略实现负载均衡,不再依赖iptables,不存在iptables规则带来的性能瓶颈,可靠性高;
2、本方法具有灵活性更强,性能更好的优点。
附图说明
图1为本发明的框架原理示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例1
参考图1所示,本实施例提供一种K8S中使用的基于eBPF架构的负载均衡方法,包括以下步骤:
部署eBPF架构,该eBPF架构包括位于负载节点(worker node)的eBPF代理(eBPFagent)和位于控制节点(control node)的eBPF控制器(eBPF controller),所述eBPF代理中设置有一流量控制器(traffic controller);
在监听到K8S中启动新服务service时,判断该新服务是否开启eBPF转发,若是,则api-server在创建service的同时,会根据这个service的配置生成负载均衡转发规则、负载均衡策略,存储于所述eBPF架构中,具体地,负载均衡规则策略由eBPF控制器通过gRPC传递给eBPF代理,并由eBPF代理下发至对应的流量控制器;
在监听到对K8S中服务的外部访问请求时,所述eBPF架构基于所述负载均衡规则策略实现负载均衡。
上述方法基于eBPF架构实现负载均衡,而在eBPF架构中,并不会使用linux内核模块(IPVS、iptables)来做负载均衡,不再依赖iptables,不存在iptables规则带来的性能瓶颈,灵活性更强,性能更好。eBPF不依赖于任何linux内核模块,是一个以沙盒形式工作在linux内核态,与linux内核模块没有强耦合性,负载均衡不受iptables或IPVS的限制。
在优选的实施方式中,eBPF代理实时监测微服务下pod的存活状态,判断pod状态是否存在异常,若是,则终止对该pod的请求转发,这样避免了通过IP监测来发现微服务的存活性的弊端,更为灵活。
上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
实施例2
如图1所示,本实施例提供一种K8S中使用的基于eBPF架构的负载均衡装置,其特征在于,包括控制节点和负载节点,负载节点包括eBPF代理,控制节点包括eBPF控制器,eBPF代理中设置有一流量控制器,eBPF代理和eBPF控制器形成eBPF架构,该eBPF架构存储有与K8S中服务对应的负载均衡规则策略,在监听到对K8S中服务的外部访问请求时,eBPF架构基于负载均衡规则策略实现负载均衡。
负载均衡规则策略通过以下方式产生:
在监听到K8S中启动新服务时,判断该新服务是否开启eBPF转发,若是,则基于该新服务的配置信息产生对应的负载均衡规则策略,存储于eBPF架构中,具体地,负载均衡规则策略由eBPF控制器通过gRPC传递给eBPF代理,并由eBPF代理下发至对应的流量控制器。
在优选的实施方式中,eBPF代理还包括pod状态监测单元,实时监测微服务下pod的存活状态,判断pod状态是否存在异常,若是,则终止对该pod的请求转发。
其余同实施例1。
实施例3
本实施例提供一种电子设备,包括一个或多个处理器、存储器和被存储在存储器中的一个或多个程序,所述一个或多个程序包括用于执行如实施例1所述K8S中使用的基于eBPF架构的负载均衡方法的指令。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

Claims (6)

1.一种K8S中使用的基于eBPF架构的负载均衡方法,其特征在于,包括以下步骤:
部署eBPF架构;
在监听到K8S中启动新服务时,判断该新服务是否开启eBPF转发,若是,则基于该新服务的配置信息产生对应的负载均衡规则策略,存储于所述eBPF架构中;
在监听到对K8S中服务的外部访问请求时,所述eBPF架构基于所述负载均衡规则策略实现负载均衡;
所述eBPF架构包括位于负载节点的eBPF代理和位于控制节点的eBPF控制器,所述eBPF代理中设置有一流量控制器;
所述负载均衡规则策略由eBPF控制器通过gRPC传递给eBPF代理,并由eBPF代理下发至对应的流量控制器。
2.根据权利要求1所述的K8S中使用的基于eBPF架构的负载均衡方法,其特征在于,所述eBPF代理实时监测微服务下pod的存活状态,判断pod状态是否存在异常,若是,则终止对该pod的请求转发。
3.一种K8S中使用的基于eBPF架构的负载均衡装置,其特征在于,包括控制节点和负载节点,所述负载节点包括eBPF代理,所述控制节点包括eBPF控制器,所述eBPF代理中设置有一流量控制器,所述eBPF代理和eBPF控制器形成eBPF架构,该eBPF架构存储有与K8S中服务对应的负载均衡规则策略,在监听到对K8S中服务的外部访问请求时,所述eBPF架构基于所述负载均衡规则策略实现负载均衡;
所述负载均衡规则策略通过以下方式产生:
在监听到K8S中启动新服务时,判断该新服务是否开启eBPF转发,若是,则基于该新服务的配置信息产生对应的负载均衡规则策略,存储于所述eBPF架构中;
所述负载均衡规则策略由eBPF控制器通过gRPC传递给eBPF代理,并由eBPF代理下发至对应的流量控制器。
4.根据权利要求3所述的K8S中使用的基于eBPF架构的负载均衡装置,其特征在于,所述eBPF代理还包括:
pod状态监测单元,实时监测微服务下pod的存活状态,判断pod状态是否存在异常,若是,则终止对该pod的请求转发。
5.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;和
被存储在存储器中的一个或多个程序,所述一个或多个程序包括用于执行如权利要求1-2任一所述K8S中使用的基于eBPF架构的负载均衡方法的指令。
6.一种计算机可读存储介质,其特征在于,包括供电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行如权利要求1-2任一所述K8S中使用的基于eBPF架构的负载均衡方法的指令。
CN202110890487.5A 2021-08-04 2021-08-04 一种K8S中使用的基于eBPF架构的负载均衡方法及装置 Active CN113568711B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110890487.5A CN113568711B (zh) 2021-08-04 2021-08-04 一种K8S中使用的基于eBPF架构的负载均衡方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110890487.5A CN113568711B (zh) 2021-08-04 2021-08-04 一种K8S中使用的基于eBPF架构的负载均衡方法及装置

Publications (2)

Publication Number Publication Date
CN113568711A CN113568711A (zh) 2021-10-29
CN113568711B true CN113568711B (zh) 2024-02-02

Family

ID=78170322

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110890487.5A Active CN113568711B (zh) 2021-08-04 2021-08-04 一种K8S中使用的基于eBPF架构的负载均衡方法及装置

Country Status (1)

Country Link
CN (1) CN113568711B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114189455B (zh) * 2021-12-08 2023-06-06 兴业银行股份有限公司 基于ebpf技术的容器网络流量监控统计方法及系统
CN114745307B (zh) * 2022-02-25 2023-09-22 网宿科技股份有限公司 一种容器流量的监控方法及bpf控制器
CN115766858A (zh) * 2022-11-11 2023-03-07 中国工商银行股份有限公司 流量处理方法、装置、计算机可读存储介质及电子设备
CN115941538B (zh) * 2023-02-21 2023-05-26 华控清交信息科技(北京)有限公司 一种针对多方安全计算的测试系统、测试方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108712464A (zh) * 2018-04-13 2018-10-26 中国科学院信息工程研究所 一种面向集群微服务高可用的实现方法
CN111683109A (zh) * 2020-08-17 2020-09-18 烽火通信科技股份有限公司 一种微服务架构
CN112564967A (zh) * 2020-12-02 2021-03-26 杭州谐云科技有限公司 基于eBPF的云服务拓扑自发现方法及系统、电子设备、存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9660909B2 (en) * 2014-12-11 2017-05-23 Cisco Technology, Inc. Network service header metadata for load balancing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108712464A (zh) * 2018-04-13 2018-10-26 中国科学院信息工程研究所 一种面向集群微服务高可用的实现方法
CN111683109A (zh) * 2020-08-17 2020-09-18 烽火通信科技股份有限公司 一种微服务架构
CN112564967A (zh) * 2020-12-02 2021-03-26 杭州谐云科技有限公司 基于eBPF的云服务拓扑自发现方法及系统、电子设备、存储介质

Also Published As

Publication number Publication date
CN113568711A (zh) 2021-10-29

Similar Documents

Publication Publication Date Title
CN113568711B (zh) 一种K8S中使用的基于eBPF架构的负载均衡方法及装置
US10938693B2 (en) Method and system of resiliency in cloud-delivered SD-WAN
US9054958B2 (en) System and method for reducing information loss in an aggregated information handling system
EP3905590A1 (en) System and method for obtaining network topology, and server
KR101562726B1 (ko) 통신 경로 제어 시스템, 및 통신 경로 제어 방법
EP1892929B1 (en) A method, an apparatus and a system for message transmission
US20180295029A1 (en) Managing groups of servers
US20130067268A1 (en) Intelligent integrated network security device for high-availability applications
US20120163391A1 (en) Methods and apparatus for redundancy associated with a fibre channel over ethernet network
US9497080B1 (en) Election and use of configuration manager
JP2003528371A (ja) サーバ用フェデレイテッドオペレーティングシステム
CN111641719B (zh) 基于Openstack的内网型负载均衡实现方法、存储介质
CN108234223B (zh) 一种数据中心综合管理系统的安全服务设计方法
US8713663B2 (en) Method for using extended security system, extended security system and devices
US11881983B2 (en) Diagnosing intermediary network nodes
US20070130346A1 (en) Method for maintaining telnet session, telnet agency and computer network system
US8937885B2 (en) Methods and apparatus for dynamic mapping of power outlets
Bansal et al. Disaggregating stateful network functions
CN116886496A (zh) 基于dpu的数据处理方法、装置、设备及可读存储介质
Hwang et al. StateFit: A security framework for SDN programmable data plane model
US11048539B2 (en) Transitioning virtual machines to an inactive state
CN101170544A (zh) 一种高可用群集系统采用单一实ip地址的通讯方法
US10277700B2 (en) Control plane redundancy system
CN109450794A (zh) 一种基于sdn网络的通信方法及设备
CN113055471B (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