CN117648154A - 虚拟机的自动扩展服务网格 - Google Patents
虚拟机的自动扩展服务网格 Download PDFInfo
- Publication number
- CN117648154A CN117648154A CN202211731511.1A CN202211731511A CN117648154A CN 117648154 A CN117648154 A CN 117648154A CN 202211731511 A CN202211731511 A CN 202211731511A CN 117648154 A CN117648154 A CN 117648154A
- Authority
- CN
- China
- Prior art keywords
- service
- nic
- agent
- virtual machine
- grid
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 45
- 238000003860 storage Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 14
- 230000003278 mimic effect Effects 0.000 abstract description 2
- 239000003795 chemical substances by application Substances 0.000 description 118
- 238000012545 processing Methods 0.000 description 53
- 230000006870 function Effects 0.000 description 24
- 238000004891 communication Methods 0.000 description 13
- 239000004744 fabric Substances 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 8
- 230000003863 physical function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000005304 joining Methods 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 230000005641 tunneling Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 239000000523 sample Substances 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000412611 Consul Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- WFKWXMTUELFFGS-UHFFFAOYSA-N tungsten Chemical compound [W] WFKWXMTUELFFGS-UHFFFAOYSA-N 0.000 description 1
- 229910052721 tungsten Inorganic materials 0.000 description 1
- 239000010937 tungsten Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 238000012800 visualization Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/564—Enhancement of application control based on intercepted application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/59—Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了虚拟机的自动扩展服务网格。总体上,描述了用于使用网络接口卡(NIC)自动且透明地向虚拟机提供服务代理的技术。在一些示例中,由托管虚拟机的计算设备的NIC实现的服务代理可以模仿边车服务代理行为。基于NIC的网格代理可以自动检测由虚拟机提供的服务,并与控制平面组件交互,以动态地将服务结合到服务网格中。
Description
相关申请的交叉引用
本申请要求于2022年9月2日提交的美国申请号17/929,526的权益,其全部内容通过引用结合于此。
技术领域
本公开涉及计算机网络。
背景技术
服务网格为现代分布式应用提供基础设施层,从而以安全和可观察的方式在各种微服务之间交换信息。例如,简单的电子商务应用程序可以分为多个微服务,可能包括显示产品信息的产品视图服务、保持产品的物品清单的数据库服务以及跟踪用户选择的产品的购物车服务。其他分布式应用程序的示例可以有数百甚至数千个不同的微服务。服务网格层可以控制和管理服务间通信。这些微服务可以通过服务代理与其他服务交互。这些服务代理由服务网格控制器配置和管理。服务网格分为两个主要组件:数据平面和控制平面。数据平面通过服务代理提供服务之间的通信。每个服务代理拦截该服务的网络流量,并帮助路由流量、触发断路器、请求超时和执行重试。控制平面对服务代理进行动态编程。
发明内容
总体上,描述了用于使用网络接口卡(NIC)自动且透明地向虚拟机提供服务代理的技术。在一些示例中,由托管虚拟机的计算设备的NIC实现的服务代理可以模仿边车服务代理行为,基于NIC的网格代理可以自动检测由虚拟机提供的服务,并与控制平面组件交互,以动态地将服务结合到服务网格中。
该技术可提供一个或多个技术优势。例如,因为NIC执行服务代理,所以可以应用这些技术,而不需要对提供底层服务的虚拟机进行任何修改。这对于传统服务以及容器化服务和虚拟机实现的服务的混合部署尤其有利。与容器化环境不同,虚拟机运行自己的客户操作系统和环境,在虚拟机中部署服务代理比在容器中部署服务代理更复杂,也更不标准化。此外,该技术可以允许分布式应用程序的开发者避免验证安装在虚拟机中的额外软件以另外地支持服务代理,因为虚拟机是未改变的,并且由NIC在到虚拟机的数据路径上提供服务代理。
在一个示例中,一种方法包括:由网络接口卡(NIC)检测由虚拟机提供的服务;以及响应于检测到服务,配置由NIC执行的服务代理,以代理服务网格中的服务。
在一个示例中,一种网络接口卡(NIC)包括:处理器;以及包括指令的存储器,当由处理器执行指令时,指令使得NIC执行以下:通过网络接口卡(NIC)检测由虚拟机提供的服务;以及响应于检测到服务,配置由NIC执行的服务代理,以代理服务网格中的服务。
在一个示例中,一种系统包括:容器,容器包含服务和服务代理,服务和服务代理与服务网格的控制平面相关联;以及服务器,包括:虚拟机,被配置为提供服务;以及网络接口卡(NIC)。NIC被配置为:检测由虚拟机提供的服务;以及响应于检测到服务,配置由NIC执行的服务代理,以代理服务网格中的服务。
在附图和以下描述中阐述本公开的一个或多个实施例的细节。根据说明书和附图以及权利要求书,其他特征、目的和优点将变得显而易见。
附图说明
图1是示出具有数据中心的示例网络系统的框图,其中,可以实现本文所述的技术的示例。
图2是示出根据本文所述的技术的使用具有独立处理单元的网络接口卡来执行由边缘服务平台管理的服务的示例计算设备的框图。
图3是示出根据本公开的技术的具有服务器的数据中心的概念图,每个服务器包括具有由边缘服务平台控制的独立处理单元的网络接口卡。
图4是示出根据本公开的技术的使用NIC扩展至由虚拟机(VM)提供的服务的服务网格的概念图。
图5是示出根据本公开的技术的基于VM的依赖性服务自动加入服务网格的概念图。
图6是示出根据本公开的技术的基于VM的独立服务自动加入服务网格的概念图。
图7是示出根据本公开技术的示例方法的流程图。
在整个说明书和附图中,相同的附图标记表示相同的元件。
具体实施方式
图1是示出具有数据中心10的示例网络系统8的框图,其中,可以实现本文描述的技术的示例。通常,数据中心10为客户站点11的应用程序和服务提供操作环境,客户站点具有通过服务提供商网络7联接到数据中心10的一个或多个客户网络。例如,数据中心10可以托管基础设施设备,例如,联网和存储系统、冗余电源和环境控制。服务提供商网络7联接到公共网络4。公共网络4可以表示由其他提供商管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,因特网)的一部分。例如,公共网络4可以表示例如局域网(LAN)、广域网(WAN)、互联网、虚拟LAN(VLAN)、企业LAN、第三层虚拟专用网络(VPN)、由运营服务提供商网络7的服务提供商运营的互联网协议(IP)内联网、企业IP网络或其某种组合。
尽管客户站点11和公共网络4主要被图示和描述为服务提供商网络7的边缘网络,但是在一些示例中,一个或多个客户站点11和公共网络4是数据中心10或另一数据中心内的租户网络。例如,数据中心10可以托管多个租户(客户),每个租户与一个或多个虚拟专用网络(VPN)相关联。每个VPN可以实现一个客户站点11。
服务提供商网络7向所连接的客户站点11、数据中心10和公共网络4提供基于封包的连接。服务提供商网络7可以表示由服务提供商运营(并且可能由其拥有)的网络,以互连多个网络。服务提供商网络7可以实现多协议标签交换(MPLS)转发,并且在这种情况下可以被称为MPLS网络或MPLS骨干网。在一些情况下,服务提供商网络7表示多个互连的自治系统,例如,因特网,其提供来自一个或多个服务提供商的服务。
在一些示例中,数据中心10可以表示许多地理上分布的网络数据中心之一。如图1的示例所示,数据中心10可以是为客户提供网络服务的设施。服务提供商的客户可以是集体实体(例如,企业、政府)或个人。例如,网络数据中心可能为几个企业和终端用户托管网络服务。其他示例性服务可以包括数据存储、虚拟专用网、流量工程、文件服务、数据挖掘、科学或超级计算等。尽管图示为服务提供商网络7的独立边缘网络,但是数据中心10的元件(例如,一个或多个物理网络功能(PNF)或虚拟化网络功能(VNF))可以包括在服务提供商网络7的核内。
在该示例中,数据中心10包括通过由一层或多层物理网络交换机和路由器提供的交换机架构14互连的存储和/或计算服务器,其中,服务器12A-12X(本文中称为“服务器12”)和服务器30被描述为联接至架顶式(TOR)交换机16A-16N。本公开可以将TOR交换机16A-16N统称为“TOR交换机16”。TOR交换机16可以是提供第2层(MAC)和/或第3层(例如,IP)路由和/或交换功能的网络设备。
如下所述,服务器30实施虚拟机48,而服务器12实施容器舱(container pod,容器集,容器组)44,例如,在Kubernetes集群中。服务器12和服务器30在本文也可以被称为“主机”或“主机设备”。数据中心10可以包括联接到数据中心10的其他TOR交换机16的许多额外服务器。在图1的示例中,服务器12和服务器30直接联接到TOR交换机16。其他服务器(未示出)可以通过服务器12或服务器30到达TOR交换机16和IP架构20。
所示示例中的交换机架构14包括互连的TOR交换机16(或其他“叶”交换机),其联接至机架(chassis)交换机18A-18M(统称为“机架交换机18”)的分布层。机架交换机也可以称为“主干”或“核心”交换机。尽管在图1的示例中未示出,但是数据中心10还可以包括一个或多个非边缘交换机、路由器、集线器、网关、诸如防火墙、入侵检测和/或入侵预防设备之类的安全设备、服务器、计算机终端、膝上型电脑、打印机、数据库、诸如蜂窝电话或个人数字助理之类的无线移动设备、无线接入点、网桥、电缆调制解调器、应用加速器或其他网络设备。
在一些示例中,TOR交换机16和机架交换机18为服务器12和服务器30提供与IP架构20和服务提供商网络7的冗余(多宿)连接。机架交换机18聚集业务流,并提供TOR交换机16之间的连接。TOR交换机16和机架交换机18可以均包括一个或多个处理器和存储器,并且可以执行一个或多个软件进程。机架交换机18联接到IP架构20,IP架构可以执行第3层路由,以经由服务提供商网络7在数据中心10和客户站点11之间路由网络流量。数据中心10的交换架构仅仅是示例。例如,其他交换架构可以具有更多或更少的交换层。TOR交换机16和机架交换机18可以均包括物理网络接口。
在本公开中,术语“封包流”、“业务流”或简称“流”均指源自特定源设备或端点并发送至特定目的设备或端点的一组封包。单个封包流可以由例如5元组来标识:<源网络地址、目的网络地址、源端口、目的端口、协议>。该5元组通常标识接收到的封包所对应的封包流。n元组是指从5元组中抽取的任意n个项目。例如,封包的2元组可以指封包的<源网络地址,目的网络地址>或<源网络地址,源端口>的组合。术语“源端口”是指传输层(例如,TCP/UDP)端口。“端口”可以指NIC的物理网络接口。
服务器12和服务器30均可为计算节点、应用服务器、存储服务器或其他类型的服务器。例如,服务器12和服务器30中的每一个都可以表示计算设备,例如,基于通用处理器的服务器,其被配置为根据本文描述的技术进行操作。服务器12和服务器30可以为网络功能虚拟化(NFV)架构提供网络功能虚拟化基础设施(NFVI)。
服务器12和服务器30可托管一个或多个虚拟网络的端点,虚拟网络通过图1中由IP架构20和交换机架构14表示的物理网络运行。端点可以包括例如虚拟机、容器化的应用程序或者在操作系统或裸机上本地执行的应用程序。尽管主要针对基于数据中心的交换网络进行了描述,但是诸如服务提供商网络7的其他物理网络可以作为一个或多个虚拟网络的底层。
每个服务器12包括网络接口卡(NIC)13A-13X(统称为“NIC 13”)中的至少一个NIC。服务器30包括NIC 32。NIC 13和NIC 32中的每一个都包括至少一个端口。NIC 13和NIC32中的每一个都可以通过联接到NIC端口的一个或多个通信链路发送和接收封包。
在一些示例中,NIC 13和NIC 32中的每一个提供用于虚拟化的输入/输出(I/O)的一个或多个虚拟硬件组件。用于虚拟化的I/O的虚拟硬件组件可以是物理NIC 13或NIC 32的虚拟化(“物理功能”)。例如,在外围组件接口特别兴趣组SR-IOV规范中描述的单根I/O虚拟化(SR-IOV)中,网络接口卡(或“网络适配器”)的快速外围设备接口(PCI)(PCIe)物理功能被虚拟化,以将一个或多个虚拟网络接口卡作为“虚拟功能”而提供,以供在服务器12和服务器30上执行的各个端点使用。这样,虚拟网络端点可以共享相同的PCIe物理硬件资源,并且虚拟功能是虚拟硬件组件的示例。作为另一示例,一个或多个服务器12和服务器30可以实现Virtio,这是一种可用于例如Linux操作系统的半虚拟化框架,其提供仿真的NIC功能,作为一种虚拟硬件组件。作为另一示例,一个或多个服务器12和服务器30可以实现开放式虚拟交换机vSwitch,以在托管的虚拟机的一个或多个虚拟NIC(vNIC)之间执行分布式虚拟多层交换,其中,这种vNIC也可以表示一种类型的虚拟硬件组件。在某些情况下,虚拟硬件组件是虚拟I/O(例如,NIC)组件。在某些情况下,虚拟硬件组件是SR-IOV虚拟功能,并且可以为SR-IOV提供基于数据平面开发套件(DPDK)的直接过程用户空间访问。
在一些示例中,一个或多个NIC 13和NIC 32包括多个端口。NIC 13和NIC 32可以经由NIC 13和NIC 32的端口以及通信链路相互连接,以形成具有NIC结构拓扑的NIC结构。NIC结构是连接到NIC 13和NIC 32中的至少一个的NIC 13和NIC 32以及将NIC 13和NIC 32相互联接的通信链路的集合。
NIC 32包括处理单元25;NIC 13A-13X包括处理单元26A-26X(统称为“处理单元26”)。处理单元25和处理单元26从服务器12和服务器30的CPU卸载(offload)数据路径的方面。一个或多个处理单元25和处理单元26可以是多核ARM处理器或具有由数据处理单元(DPU)、现场可编程门阵列(FPGA)和/或专用集成电路(ASIC)提供的硬件加速的其他通用处理器。因为NIC 13和NIC 32包括处理单元25和处理单元26,所以NIC 13和NIC 32可以被称为“SmartNIC”或“GeniusNIC”。
边缘服务平台可使用NIC 13和NIC 32的处理单元25和处理单元26来增强交换机架构14和/或包括NIC 13和NIC 32的服务器12和服务器30的处理和联网功能。在图1的示例中,网络系统8包括边缘服务控制器28。本公开还可以将边缘服务控制器(例如,边缘服务控制器28)称为边缘服务平台控制器。
边缘服务控制器28可部分通过编排处理单元25和处理单元26执行的服务;编排在NIC 13和NIC 32上的边缘服务的API驱动部署;在边缘服务平台内编排NIC 13和NIC 32的添加、删除和替换;监控NIC 13和NIC 32上的边缘服务和其他资源;以及/或管理由NIC 13和NIC 32提供的各种边缘服务(图1所示的边缘服务包括服务代理40和网格代理39)之间的连接,来管理NIC 13和NIC 32内的边缘服务平台的操作。边缘服务控制器28可以包括一个或多个计算设备,例如,服务器设备、个人计算机、中间网络设备等。
边缘服务控制器28可将描述NIC 13和NIC 32上可用的边缘服务的信息、NIC结构的拓扑或关于边缘服务平台的其他信息传送给编排系统(未示出)或控制器24。示例编排系统包括OpenStack、VMWARE的vCenter或华盛顿州雷蒙德市的微软公司的系统中心。示例控制器包括瞻博网络或Tungsten Fabric的Contrail的控制器。控制器24可以是网络控制器、软件定义网络(SDN)控制器和/或网络架构管理器。关于结合数据中心10的其他设备或其他软件定义的网络操作的控制器24的附加信息见2013年6月5日提交的题为“PHYSICAL PATHDETERMINATION FORVIRTUAL NETWORK PACKET FLOWS”的国际申请号PCT/US2013/044378以及2014年3月26日提交的题为“Tunneled PacketAggregation for Virtual Networks”的美国专利号9,571,394,每个通过引用结合于此,如同在此完全阐述一样。
服务网格可用于控制服务46和47A-47X(统称为“服务47”)之间的交互。这种服务由虚拟化执行环境提供,并且不同于由NIC 32和13执行和提供的边缘服务。服务46和47可以是同一服务的不同服务实例。服务网格的工作方式是在单个(individual,个体)服务旁边插入服务代理,并拦截进出该服务实例的流量。服务代理构成数据平面的至少一部分,并从单独的控制平面接收命令和控制信号、策略和指令(下面将参考图4-图6更详细地讨论)。示例服务46和47可以包括用于分布式应用程序(例如,电子商务应用程序)的服务,例如,数据库、购物车、中间件或商业(business)逻辑微服务。
服务代理可拦截服务46和47之间的通信,并提供诸如安全性(例如,加密应用之间的流量,确保身份,或处理更高级别的问题,例如,策略和认证和授权)、可靠性(例如,使服务之间的交互更可靠,解决网络和应用故障,或改进容器编排功能)和可观察性(例如,提供对正在进行的哪些应用的洞察,使其交互的度量易于获得,并提供应用间通信的映射)。
服务网格的控制平面通过向代理提供策略和信息来管理代理之间的交互。控制平面可以通过向代理提供策略和信息来管理代理之间的交互。控制平面还可以向运营商提供进入网格的接口,并托管它所公开的任何API。此外,控制平面可以托管服务网格提供的内置监控和可视化工具。
可使用容器舱44A-44X(统称为“容器舱44”)。像虚拟机一样,每个容器都被虚拟化,并且可以保持与主机和其他容器隔离。然而,与虚拟机不同,每个容器可以省略单独的操作系统,并且仅提供应用程序套件和应用程序特定库。容器由主机作为隔离的用户空间实例来执行,并且可以与在主机上执行的其他容器共享操作系统和公共库。因此,容器舱44A-44X可能比虚拟机需要更少的处理能力、存储和网络资源。如本文所使用的,容器也可以被称为虚拟化引擎、虚拟专用服务器、筒仓(silo)或牢笼(jail)。每个容器舱44可以包括一个或多个容器。容器舱与Kubernetes编排平台结合使用,但也可以使用其他容器编排平台以及容器部署的其他形状因数。
根据本公开技术的各个方面,NIC 32包括在处理单元25中执行的服务代理40。服务代理40可以充当由虚拟机48提供的服务46的代理。如本公开中所描述的,具有由虚拟机48提供的服务46的服务代理40提供了许多技术优势。例如,因为NIC 32执行服务代理40,所以不需要修改虚拟机48。这对于传统服务以及容器化服务和虚拟机实现的服务的混合部署尤其有利。与容器化的环境不同,虚拟机48运行其自己的客户操作系统和环境,并且在虚拟机(例如,虚拟机48)中部署服务代理比在容器中部署服务代理更复杂且更不标准化。与虚拟机相反,将服务代理42A-42X添加到容器舱44A-44X被普遍可用的服务网格控制器(例如,Istio、Kong、Linkerd等)广泛完成并支持。
此外,该技术可使分布式应用程序的开发人员避免验证安装在虚拟机中的额外软件,而是另外地支持服务代理,因为虚拟机48不变,服务代理代替地由NIC 32提供来作为到虚拟机48的数据路径上的服务代理40。由虚拟机(与NIC不同)执行的服务代理需要针对每个客户操作系统进行单独测试和验证,因此对于成千上万不同类型的可用虚拟机/客户操作系统来说,来实现或进行自动化更加困难。
服务代理40可与其他服务代理进行通信,例如,与容器舱44A-44X中的服务47A-47X相关联的服务代理42A-42X。NIC 32处的服务代理40、容器舱44A-44X处的服务代理42A-42X、虚拟机48处的服务46以及容器舱44A-44X中的服务47A-47X可以形成服务网格的数据平面。
NIC 32上的网格代理39和边缘服务控制器28上的网格供应器29可用于在NIC 32上建立服务代理40,如下文关于图4-图6的详细讨论。网格代理36可用于自动检测具有参与服务网格的服务46的虚拟机48。网格代理36可以在NIC 32上部署和配置服务代理40。网格供应器29可以向网格代理39供应网格控制器地址、证书和令牌。网格供应器29还可以与服务网格控制平面交互,并为运行在NIC 32上的服务代理40提供代理配置、证书和认证令牌。
图1示出了不同服务器12A-12X中的容器舱44A-44X,但多个容器舱也可位于单个服务器中。在图1的示例中,服务器12A-12X包括NIC13A-13X,但是运行容器化服务的服务器不需要SmartNIC作为服务网格的一部分。
图2是示出根据本文所述的技术的示例计算设备200的框图,该计算设备使用具有独立处理单元25的NIC 230,以执行由边缘服务平台管理的边缘服务(图2所示的边缘服务包括服务代理235和网格代理243)。图2的计算设备200可以表示真实或虚拟服务器,并且可以表示图1的服务器12和服务器30中的任何一个的示例实例。在图2的示例中,计算设备200包括联接计算设备200的硬件环境的硬件组件的总线242。具体地,在图2的示例中,总线242联接NIC 230、存储盘246和微处理器210。在一些示例中,前端总线联接微处理器210和存储器244。在一些示例中,总线242联接存储器244、微处理器210和NIC 230。总线242可以表示PCIe总线。在一些示例中,直接存储器访问(DMA)控制器可以控制联接到总线242的组件之间的DMA传输。在一些示例中,联接到总线242的组件控制联接到总线242的组件之间的DMA传输。
微处理器210可以包括一个或多个处理器,每个处理器包括独立的执行单元(“处理核”),以执行符合指令集架构的指令。执行单元可以被实现为单独的集成电路(IC)或者可以被组合在一个或多个多核处理器(或“众核”处理器)内,每个多核处理器都使用单个IC(即,芯片多处理器)来实现。
存储盘246表示计算机可读存储介质,包括以任何方法或技术实现的易失性和/或非易失性、可移动和/或不可移动介质,用于存储信息,例如,处理器可读指令、数据结构、程序模块或其他数据。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD-ROM、数字多功能光盘(DVD)或其他光存储设备、盒式磁带、磁带、磁盘存储设备或其他磁存储设备,或者可用于存储所需信息并可由微处理器310访问的任何其他介质。
存储器244包括一个或多个计算机可读存储介质,其可以包括随机存取存储器(RAM),例如,各种形式的动态RAM(DRAM),例如,DDR2/DDR3 SDRAM,或静态RAM(SRAM)、闪存或任何其他形式的固定或可移动存储介质,可用于以指令或数据结构的形式承载或存储所需的程序代码和程序数据,并可由计算机访问。存储器244提供由可寻址存储位置组成的物理地址空间。
网络接口卡(NIC)230包括一个或多个接口232,该接口被配置为使用底层物理网络的链路交换封包。接口232可以包括具有一个或多个网络端口的端口接口卡。NIC 230还包括例如用于存储封包数据的卡上存储器227。NIC 230和联接到总线242的其他设备之间的直接存储器访问传输可以从存储器227读/向存储器227写。
存储器244、NIC 230、存储盘246和微处理器210为软件堆栈提供操作环境,该软件堆栈执行虚拟机监控程序214和由虚拟机监控程序214管理的虚拟机228。总体上,虚拟机提供了用于在隔离的虚拟环境中执行应用的虚拟化/客户操作系统。因为虚拟机是从主机服务器的物理硬件虚拟化的,所以执行应用程序与主机的硬件和其他虚拟机都是隔离的。计算设备200执行虚拟机监控程序214来管理虚拟机228。示例虚拟机监控程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、可从VMWARE获得的ESXi、可从微软获得的WindowsHyper-V以及其他开源和专有虚拟机监控程序。虚拟机监控程序214可以表示虚拟机管理器(VMM)。虚拟机228可以托管一个或多个应用程序,例如,虚拟网络功能(VNF)实例。在一些示例中,虚拟机228可以托管一个或多个VNF实例,其中,每个VNF实例被配置为将网络功能应用于封包。VNF可以是服务223的一个示例。
操作系统内核(图2中未示出)可在内核空间中执行,可以包括例如Linux、伯克利软件包(BSD)、另一Unix变体内核或可从微软(MICROSOFT)获得的Windows服务器操作系统内核。
虚拟机监控程序214包括物理驱动器225,以使用NIC 230提供的物理功能。在一些情况下,NIC 230还可以实现SR-IOV,以使得能够在虚拟机224之间共享物理网络功能(I/O)。NIC 230的每个端口可以与不同的物理功能相关联。共享虚拟设备也称为虚拟功能,提供专用资源,使得每个虚拟机228(和相应的客户操作系统)可以访问NIC 230的专用资源,这因此对虚拟机228来说表现为专用NIC。虚拟功能可以是与物理功能和其他虚拟功能共享物理资源的轻量级PCIe功能。根据SR-IOV标准,NIC230可以具有数千个可用的虚拟功能,但是对于I/O密集型应用,所配置的虚拟功能的数量通常要少得多。
虚拟机228包括直接提供在虚拟机228客户操作系统中的虚拟NIC229,从而使用分配给虚拟机的虚拟功能,经由总线242提供NIC 230和虚拟机228之间的直接通信。这可以减少基于软件的VIRTIO和/或vSwitch实现方式所涉及的虚拟机监控程序214的开销,其中,存储器设备244内的虚拟机监控程序214的存储地址空间存储封包数据,并且因为将封包数据从NIC 230复制到虚拟机监控程序214的存储地址空间以及从虚拟机监控程序214的存储地址空间复制到虚拟机228的存储地址空间消耗了微处理器210的周期。
NIC 230可进一步包括基于硬件的以太网桥234。以太网桥234可以是嵌入式交换机234的示例。以太网桥234可以在NIC 230的虚拟功能和物理功能之间执行第2层转发。因此,在一些情况下,以太网桥234经由总线242提供虚拟机224间封包转发的硬件加速以及虚拟机监控程序214和任何虚拟机224之间封包转发的硬件加速。虚拟机监控程序214可以经由物理驱动器225访问物理功能。以太网桥234可以与处理单元25物理分离。
计算设备200可联接至物理网络交换机架构,该架构包括覆盖网络,该覆盖网络将交换机架构从物理交换机延伸至联接至交换机架构的物理服务器的软件或“虚拟”路由器,包括虚拟路由器220。虚拟路由器可以是由物理服务器(例如,图1的服务器12或服务器30)执行的进程或线程或其组件,其动态地创建和管理可用于虚拟网络端点之间的通信的一个或多个虚拟网络。在一个示例中,虚拟路由器使用覆盖网络来实现每个虚拟网络,覆盖网络提供了将端点的虚拟地址与端点在其上执行的服务器的物理地址(例如,IP地址)分离的能力。每个虚拟网络可以使用其自己的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交。可以使用各种技术经由物理网络上在虚拟网络内和虚拟网络间传输封包。可以执行虚拟路由器的至少一些功能,作为服务233中之一。在图2的示例中,虚拟路由器220在使用I/O的物理功能(221)的虚拟机监控程序214内执行,但是虚拟路由器220可以在虚拟机监控程序、主机操作系统、主机应用、一个虚拟机228和/或NIC 230的处理单元25内执行。
总体上,可为每个虚拟机228分配虚拟地址,以在相应的虚拟网络内使用,其中,每个虚拟网络可与虚拟路由器220提供的不同虚拟子网相关联。虚拟机228可以被分配有其自己的虚拟第三层(L3)IP地址,例如,用于发送和接收通信,但是可能不知道虚拟机在其上执行的计算设备200的IP地址。这样,“虚拟地址”是不同于底层物理计算机系统(例如,计算设备200)的逻辑地址的应用程序的地址。
在一种实施方式中,计算设备200包括虚拟网络(VN)代理(未示出),其控制计算设备200的虚拟网络的覆盖,并协调计算设备200内数据封包的路由。通常,VN代理与多个虚拟网络的虚拟网络控制器通信,该虚拟网络控制器生成命令,来控制封包的路由。VN代理可以作为虚拟机228和诸如控制器24(图1)之类的虚拟网络控制器之间的控制平面消息的代理。例如,虚拟机可以请求使用其虚拟地址经由VN代理发送消息,并且VN代理可以进而发送该消息并请求针对发起第一消息的虚拟机的虚拟地址接收对消息的响应。在一些情况下,虚拟机228可以调用由VN代理的应用编程接口提供的进程或函数调用,并且VN代理也可以处理消息的封装,包括寻址。
在一个示例中,由虚拟网络域内的虚拟机228执行的应用实例生成或消费的网络封包(例如,第三层(L3)IP封包或第二层(L2)以太网封包)可封装在由物理网络传输的另一封包(例如,另一IP或以太网封包)中。在虚拟网络中传输的封包在本文可以被称为“内部封包”,而物理网络封包在本文可以被称为“外部封包”或“隧道封包”。虚拟路由器220可以执行物理网络封包内的虚拟网络封包的封装和/或解封装。该功能在本文被称为隧道,并且可以用于创建一个或多个覆盖网络。除了IPinIP之外,可以使用的其他示例隧道协议包括通用路由封装(GRE)上的IP、虚拟可扩展局域网(VXLAN)、GRE上的多协议标签交换(MPLS)(MPLSoGRE)、用户数据报协议(UDP)上的MPLS(MPLSoUDP)等。
如上所述,虚拟网络控制器可提供逻辑集中控制器,以有利于一个或多个虚拟网络的操作。虚拟网络控制器可以例如保持路由信息库,例如,存储物理网络以及一个或多个覆盖网络的路由信息的一个或多个路由表。虚拟机监控程序214的虚拟路由器220针对虚拟路由器220作为隧道端点操作的N个虚拟网络实现网络转发表(NFT)222A-222N。总体上,每个NFT 222存储对应虚拟网络的转发信息,并识别数据封包将被转发到哪里以及封包是否将被封装在隧道协议中,例如,利用可以包括虚拟网络协议栈的不同层的一个或多个报头的隧道报头。每个NFT 222可以是由虚拟路由器220实现的不同路由实例(未示出)的NFT。
边缘服务控制器28(图1)可使用NIC 230的处理单元25来增强计算设备200的处理和联网功能。处理单元25包括处理电路231,以执行由边缘服务控制器28编排的服务。处理电路231可以表示处理核、ASIC、FPGA或其他集成电路和可编程硬件的任意组合。在示例中,处理电路可以包括片上系统(SoC),其具有例如一个或多个内核、用于高速封包处理的网络接口、用于专门功能(例如,安全性/密码术、机器学习、存储)的一个或多个加速引擎、可编程逻辑、集成电路等。这种SOC可以被称为数据处理单元(DPU)。DPU可以是处理单元25的示例。
在示例NIC 230中,处理单元25针对服务执行操作系统的内核237和用户空间241。内核237可以是Linux内核、Unix或BSD内核、实时OS内核或用于管理处理单元25的硬件资源和管理用户空间241的其他内核。
服务233可以包括网络、安全、存储、数据处理、协同处理、机器学习或其他服务。服务233、边缘服务平台(ESP)代理236、网格代理243和服务代理235包括可执行指令。处理单元25可将服务233、ESP代理236、服务代理235和网格代理243的指令作为进程和/或在虚拟执行元件(例如,容器或虚拟机)内执行。如本公开中别处所述,服务233可以例如通过使计算设备200能够卸载将另外由主机处理器执行的封包处理、安全或其他操作来增强主机处理器(例如,微处理器210)的处理能力。服务233的网络服务可以包括安全服务(例如,防火墙)、策略实施、代理、负载平衡或其他L4-L7服务。
处理单元25执行ESP代理236,以与边缘服务平台的边缘服务控制器28(图1)交换数据。虽然在图2的示例中被示为在用户空间241中,但是在其他示例中,ESP代理236是内核237的内核模块。例如,ESP代理236可以收集遥测数据并将其发送到ESP控制器。遥测数据可以由服务233生成,并且可以描述网络中的流量、计算设备200或网络资源的可用性、处理单元25的资源的资源可用性(例如,存储器或核利用率)或其他信息。作为另一个示例,ESP代理236可以从ESP控制器接收用于执行任何服务233的服务代码、用于配置任何服务233的服务配置、用于注入网络的封包或其他数据。
边缘服务控制器28通过例如编排和配置由处理单元25执行的服务233,部署服务233;在边缘服务平台内添加、删除和替换NIC,监控NIC230上的服务233和其他资源,以及管理NIC 230上运行的各种服务233之间的连接,来管理处理单元25的操作。NIC 230上的示例资源包括存储器227和处理电路231。
根据本公开技术的各个方面,处理单元25执行服务代理235,以充当虚拟机228中服务223的代理。服务代理235然后可以与服务网格中的服务的其他服务代理通信。处理单元25包括执行服务代理235和网格代理243的处理电路231。运行在虚拟机监控程序214上的虚拟机228可以托管服务223,该服务由NIC 230中的服务代理235支持,成为服务网格的一部分。存储器244、NIC 230、存储盘246和微处理器210向执行虚拟机监控程序214、虚拟机228和作为服务网格一部分的服务223的软件栈提供操作环境。服务223、服务代理235和网格代理243可以分别表示服务47、服务代理40和网格代理39的示例。
图3是示出根据本公开的技术的具有服务器的数据中心300的概念图,每个服务器包括具有由边缘服务平台控制的独立处理单元的网络接口卡。计算节点机架307A-307N(统称为“计算节点机架307”)可以对应于图1的服务器12和服务器30,交换机308A-308N(统称为“交换机308”)可以对应于图1的交换机架构14的交换机。代理302或编排器304表示由处理单元(在图3中示为数据处理单元或DPU)执行的软件,并接收处理单元的配置信息,向编排器304发送包括处理单元的NIC的遥测和其他信息。网络服务312、L4-L7服务314、遥测服务316以及Linux和软件开发工具包(SDK)服务318可以表示服务233的示例。编排器304可以表示图1的边缘服务控制器28的示例。
网络自动化平台306连接并管理网络设备和编排器304,网络自动化平台306通过网络设备和编排器可利用边缘服务平台。网络自动化平台306可以例如部署网络设备配置、管理网络、提取遥测数据以及分析和提供网络状态的指示。
根据本公开技术的各个方面,服务代理320可充当机架307中计算节点的虚拟机提供的服务的代理。服务代理320可以与服务网格中的服务的其他服务代理通信。网格代理322可用于建立服务代理320。服务代理320和网格代理322可以是由处理单元(在图3中示为数据处理单元或DPU)执行的软件。
图4是示出根据本公开的技术的使用NIC 402扩展至由虚拟机410提供的服务412的服务网格的概念图。NIC 402包括服务代理404、封包嗅探器406和网格代理408。边缘服务控制器430可以包括与供应的NIC 402中的网格代理408通信的网格供应器432。
NIC 402(更具体而言,图4中未示出的处理单元)可检测虚拟机410提供的服务412。NIC 402可以通过使用封包嗅探器406嗅探从服务412到服务注册表434的消息来检测服务412。例如,可以分析通过NIC 402的消息的报头,以识别服务发现请求并识别NIC 402处的特定服务412。例如,NIC 402可以应用深度封包检查(DPI)和/或配置有报头模板、规则、模式(pattern)或用于识别服务412的其他数据。
服务412可与容器注册服务列表进行比较。如果没有找到匹配,这可以指示服务412是虚拟机服务。服务代理可以响应于没有找到这样的匹配而被配置。
NIC 402可响应于检测到服务412,配置由NIC 402执行的服务代理404,以代理服务网格中的服务412。NIC 402处的网格代理408可用于配置服务代理404。
边缘服务控制器430处的网格供应器432可在NIC 402处供应网格代理408。服务代理404可以与虚拟机410上的多个服务412和413相关联,而不是要求针对服务412-413中的每一个都有单独的服务代理。
服务代理404可连接至网格控制平面控制器436,该控制器使用网格代理408的配置认证服务代理404。服务代理404然后可以连接服务网格中的另一个服务代理,例如,服务代理418A。
服务网格可为现代分布式应用提供基础设施层,从而以安全和可观察的方式在各种微服务之间交换信息。例如,简单的电子商务应用可以分为微服务,例如,显示产品信息的产品视图服务、保持产品的物品清单的数据库服务和跟踪用户选择的产品的购物车服务。
服务网格层可使用第7层代理,例如,Envoy、Nginx等,来控制和管理服务间通信。服务网格的服务可以仅通过服务代理(例如,第7层服务代理)与其他服务进行交互。这些服务代理可以由诸如Istio、Kong、Linkerd等服务网格控制器来配置和管理。服务网格有两个主要组件:数据平面和控制平面。
服务网格可实施包括服务(例如,虚拟机410的服务412和413以及容器舱417A-417X的服务420A-420X)和服务代理(例如,NIC 402的服务代理404和容器舱417A-417X的服务代理418A-418X)的数据平面。数据平面通过服务代理提供服务之间的通信。服务代理可以拦截该服务的网络流量,并帮助路由流量、触发断路器、请求超时和重试。
服务网格的控制平面可以包括网格控制平面控制器436和网格服务注册表431。控制平面可以根据用户配置对服务代理进行动态编程。
许多现代应用在容器化环境(例如,Kubernetes)中运行。当服务网格被部署在Kubernetes集群或基于微服务的部署平台中时,其运行服务代理418A-418A(作为边车)以及相应的服务420A-420X。
当服务网格完全处于容器化环境中时,管理员可使用各种商业/免费软件工具来管理服务网格。为了支持传统应用,服务网格可以扩展到包括在虚拟机中运行的软件模块。然而,开源社区对部署和管理这类混合应用程序的支持有限。此外,这是一个繁琐、容易出错的多步骤手动过程。
这种手动步骤可以包括:
1)将在Kubernetes集群(例如,容器集群411)中运行的服务网格控制平面或服务网格控制平面控制器436暴露,并使其可从虚拟机(例如,虚拟机410)到达。
2a)为基于VM的工作负荷、服务帐户、认证令牌、证书、涉及服务发现地址的网格配置、健康检查探测端点和认证选项生成命名空间。
2b)确保将生成的配置和认证数据传输到目标虚拟机,例如,虚拟机410。
3a)使用服务网格的根证书生成VM身份。
3b)在虚拟机中下载并安装服务代理(例如,使者)或任何封包路由器内核模块(例如,扩展的伯克利封包过滤器(eBPF))。
4)配置服务代理以执行服务发现和认证探测
5)配置虚拟机域名系统(DNS)条目,以到达网格控制平面,用于服务发现
6)检测虚拟机中运行的服务类型,并将服务代理的路由规则配置为反向代理或正向代理。
7a)在服务注册表中为虚拟机服务代理创建工作负荷条目和服务条目。
7b)当虚拟机不可用或不运行服务时,删除工作负荷条目和服务条目。
管理员必须针对每个虚拟机执行所有手动步骤。此外,验证在这些步骤中部署的每一个新软件都非常耗时。
根据本公开技术的各个方面,NIC 402可创建和运行服务代理404,至少在某些情况下,服务代理可为服务网格扩展提供自动化和透明的方法。NIC 402中的服务代理404消除了修改虚拟机410的需要。该过程还消除了验证安装在VM 410中的额外软件的需要,因为VM 410未被修改并且保持原始完整。
网格代理408可以:
1.自动检测参与服务网格的虚拟机410。
2.为运行在虚拟机410中的服务412和413部署和配置基于NIC的边缘代理或出口代理,例如,服务代理404。
网格供应器432可以:
1.通过供应网格代理408和服务代理404来驱动网格扩展到虚拟机410中。
2.负责与服务网格控制平面控制器436交互,以在网格服务注册表431中创建服务条目。
3.为运行在NIC 402上的服务代理404提供代理配置、证书和认证令牌。
当虚拟机410启动时,可向服务注册表434(例如,服务注册表软件、Zookeeper、Consul等)注册其本身,以公告(advertise)由虚拟机410提供的服务。该注册请求包括元数据,例如,关于虚拟机410将要运行的服务的服务名称、端口和协议信息。在一些情况下,当管理员在主机上安装一些服务时,安装的服务可以向服务注册表434注册它们本身。安装的服务可以是本机应用程序或容器化服务,作为单个容器或一群容器服务运行。
当NIC 402启动时,NIC 402中的网格代理408可使用探测和嗅探,来通过嗅探对服务注册表434的请求,检测VM 410中运行的服务412或413中是否有任何服务试图加入服务网格。网格代理408可以检测两种不同类型的服务:依赖性服务和独立服务。
图5是示出根据本公开的技术的基于虚拟机的依赖性服务自动加入服务网格的概念图。依赖性服务可以调用网格中的其他服务420A-420X,并执行服务发现,以收集目标端点437。网格代理408可以通过封包嗅探服务发现请求来检测这些类型的服务。网格代理408可以通过将网络地址与已知的容器网络地址进行比较来肯定地识别服务是属于VM(例如,VM410)还是属于容器舱417A-417X。如果该发现不是源自容器417A-417X的容器网络,则可以有把握地认为其来自VM。
当网格代理408检测到服务发现请求时,网格代理408可请求网格供应器432提供服务名称的服务端点元数据。网格供应器432进而可以通过传送服务名称向服务网格控制平面控制器436请求服务端点元数据。网格控制平面控制器436可以查找网格服务注册表431,并且当服务查找成功时,向网格供应器432返回服务端点细节。根据来自网格控制平面控制器436的响应,网格供应器432可以指示网格代理408用服务端点地址或控制平面地址、令牌和证书来配置服务代理404。
服务代理404可与网格控制平面控制器436建立控制平面连接,并使用证书和令牌向网格控制平面控制器436认证自身。
图6是示出根据本公开的技术的基于VM的独立服务自动加入服务网格的概念图。独立服务可以向网格的其他成员提供服务,并向服务注册表434发布或公告它们的端点。网格代理408可以通过嗅探服务注册广告来检测这些种类的服务。此后,网格代理408可向目标服务发送探测,并通过将目的地地址与已知的容器网络进行比较来验证该服务是否属于VM410。如果对探测的响应不是来自容器网络,则认为其来自虚拟机,例如,VM 410。
在检测到基于VM的服务后,网格代理408可请求网格供应器创建服务条目,并提供代理路由配置、TLS终止的证书以及与网格控制平面控制器436进行代理认证的认证令牌。当网格供应器432请求网格控制平面控制器436为独立服务创建服务条目时,网格控制平面控制器436可以在服务网格内创建工作负荷条目。在创建工作负荷条目之后,可以在服务网格内创建目标服务端点437,并将服务条目添加到其内部网格服务注册表431中。网格中运行的服务420A-420X可以在发送数据之前使用这些服务条目来发现基于VM的工作负荷。此外,网格控制平面控制器436可以向网格供应器432提供证书和认证令牌。网格供应器432可将这些证书和认证令牌传递给网格代理408,并请求网格代理408启动服务代理404,并与网格控制平面控制器436进行认证。
图7是根据本公开技术的示例方法700的流程图。在图7的示例中,NIC(例如,图1的NIC 32、图2的NIC 230、图4的NIC 402中的一个)检测由虚拟机(例如,图1的VM 48、图2的VM228、图4的VM 410中的一个)提供的服务(例如,图1的服务46、图2的服务223、图4的服务412-413中的一个)(702)。虚拟机可以是在包括NIC的计算节点/服务器上执行的虚拟机。响应于检测到服务,NIC可以配置服务代理(例如,图1的服务代理40、图2的服务代理235、图4的服务代理404中的一个),以供NIC执行,以代理服务网格中的服务(704)。
本文描述的技术可以用硬件、软件、固件或其任意组合来实现。被描述为模块、单元或组件的各种特征可以在集成逻辑设备中一起实现,或者作为分立但可互操作的逻辑设备或其他硬件设备单独实现。在一些情况下,电子电路的各种特征可以被实现为一个或多个集成电路设备,例如,集成电路芯片或芯片组。
如果以硬件实现,则本公开可以涉及一种设备,例如,处理器或集成电路设备,例如,集成电路芯片或芯片组。替代地或另外,如果以软件或固件实现,则该技术可以至少部分地由包括指令的计算机可读数据存储介质来实现,这些指令在被执行时使处理器执行一种或多种上述方法。例如,计算机可读数据存储介质可以存储由处理器执行的这种指令。
计算机可读介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括包装材料。计算机可读介质可以包括计算机数据存储介质,例如,随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁或光数据存储介质等。在一些示例中,制品可以包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非暂时性介质。术语“非暂时性”可以表示存储介质不包含在载波或传播信号中。在某些示例中,非暂时性存储介质可以存储可以随时间改变的数据(例如,在RAM或高速缓存中)。
代码或指令可以是由处理电路执行的软件和/或固件,该处理电路包括一个或多个处理器,例如,一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何前述结构或者适合于实现本文描述的技术的任何其他结构。此外,在一些方面,可以在软件模块或硬件模块中提供本公开中描述的功能。
Claims (21)
1.一种服务代理配置方法,包括:
由网络接口卡NIC检测由虚拟机提供的服务;以及
响应于检测到所述服务,配置由所述NIC执行的服务代理,以代理服务网格中的所述服务。
2.根据权利要求1所述的服务代理配置方法,其中,检测所述服务包括在所述NIC处嗅探去往或来自所述服务的消息。
3.根据权利要求1所述的服务代理配置方法,其中,检测所述服务包括由所述NIC处的网格代理在注册表中查找服务条目。
4.根据权利要求1所述的服务代理配置方法,其中,还包括将所述服务与容器注册的服务进行比较,并且在没有找到匹配时确定所述服务是虚拟机服务。
5.根据权利要求1-4中任一项所述的服务代理配置方法,其中,配置所述服务代理包括响应于将所述服务与容器注册的服务进行比较并且在没有找到匹配时配置所述服务代理。
6.根据权利要求1-4中任一项所述的服务代理配置方法,其中,配置所述服务代理包括由所述NIC执行的网格代理配置所述服务代理。
7.根据权利要求6所述的服务代理配置方法,还包括由边缘服务控制器处的网格供应器向由所述NIC执行的所述网格代理供应网格控制器地址、证书和令牌。
8.根据权利要求1-4中任一项所述的服务代理配置方法,其中,所述服务代理与由所述虚拟机提供的多个服务相关联。
9.根据权利要求1-4中任一项所述的服务代理配置方法,还包括由所述服务代理连接到网格控制平面控制器,所述网格控制平面控制器使用由所述服务代理从网格供应器的网格代理接收的配置数据来认证所述服务代理。
10.根据权利要求1-4中任一项所述的服务代理配置方法,还包括将在所述NIC处针对所述虚拟机所提供的所述服务执行的所述服务代理连接到所述服务网格中的另一服务代理。
11.一种编码有指令的计算机可读存储介质,所述指令用于使一个或多个可编程处理器执行根据权利要求1-10中任一项所述的服务代理配置方法。
12.一种网络接口卡NIC,包括:
处理器;以及
包括指令的存储器,当由所述处理器执行所述指令时,所述指令使得所述NIC:
检测由虚拟机提供的服务;以及
响应于检测到所述服务,配置由所述NIC执行的服务代理,以代理服务网格中的所述服务。
13.根据权利要求12所述的NIC,其中,使所述NIC检测所述服务的指令包括在所述NIC处嗅探去往或来自所述服务的消息的指令。
14.根据权利要求12所述的NIC,其中,使所述NIC检测所述服务的指令包括由所述NIC处的网格代理在注册表中查找服务条目的指令。
15.根据权利要求12所述的NIC,还包括使所述NIC将所述服务与容器注册的服务进行比较并且在没有找到匹配时确定所述服务是虚拟机服务的指令。
16.根据权利要求12-15中任一项所述的NIC,其中,用于配置所述服务代理的指令包括用于响应于将所述服务与容器注册的服务进行比较并且没有找到匹配时配置所述服务代理的指令。
17.根据权利要求12-15中任一项所述的NIC,还包括使所述NIC的网格代理配置所述服务代理的指令。
18.根据权利要求17所述的NIC,还包括使所述NIC的网格代理从边缘服务控制器处的网格供应器接收供应数据的指令,所述供应数据包括网格控制器地址、证书和令牌。
19.根据权利要求12-15中任一项所述的NIC,其中,所述服务代理与所述虚拟机处的多个服务相关联。
20.根据权利要求12-15中任一项所述的NIC,还包括使所述服务代理连接到网格控制平面控制器的指令,所述网格控制平面控制器使用由所述服务代理从网格供应器的网格代理接收的配置数据来认证所述服务代理。
21.一种服务代理配置系统,包括:
容器,所述容器包含服务和服务代理,所述服务和所述服务代理与服务网格的控制平面相关联;以及
服务器,包括:
虚拟机,被配置为提供服务;以及
网络接口卡NIC,所述NIC被配置为:
检测由所述虚拟机提供的服务;以及
响应于检测到所述服务,配置由所述NIC执行的服务代理,以代理服务网格中的所述服务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/929,526 | 2022-09-02 | ||
US17/929,526 US20240078123A1 (en) | 2022-09-02 | 2022-09-02 | Auto-scaling service mesh for virtual machines |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117648154A true CN117648154A (zh) | 2024-03-05 |
Family
ID=84888542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211731511.1A Pending CN117648154A (zh) | 2022-09-02 | 2022-12-30 | 虚拟机的自动扩展服务网格 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240078123A1 (zh) |
EP (1) | EP4333403A1 (zh) |
CN (1) | CN117648154A (zh) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9356866B1 (en) | 2014-01-10 | 2016-05-31 | Juniper Networks, Inc. | Receive packet steering for virtual networks |
-
2022
- 2022-09-02 US US17/929,526 patent/US20240078123A1/en active Pending
- 2022-12-29 EP EP22217238.9A patent/EP4333403A1/en active Pending
- 2022-12-30 CN CN202211731511.1A patent/CN117648154A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240078123A1 (en) | 2024-03-07 |
EP4333403A1 (en) | 2024-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11329918B2 (en) | Facilitating flow symmetry for service chains in a computer network | |
US11700237B2 (en) | Intent-based policy generation for virtual networks | |
US11716309B1 (en) | Allocating external IP addresses from isolated pools | |
CN113556275B (zh) | 计算方法、计算装置和计算机可读存储介质 | |
US11171834B1 (en) | Distributed virtualized computing infrastructure management | |
US11870642B2 (en) | Network policy generation for continuous deployment | |
US20220334864A1 (en) | Plurality of smart network interface cards on a single compute node | |
CN110875848A (zh) | 用于虚拟执行元件的多个网络 | |
CN114995945A (zh) | 部署到计算节点的容器的隔离的数据接口 | |
US11470071B2 (en) | Authentication for logical overlay network traffic | |
US20230104368A1 (en) | Role-based access control autogeneration in a cloud native software-defined network architecture | |
US20230198676A1 (en) | Packet drop monitoring in a virtual router | |
US20230336414A1 (en) | Network policy generation for continuous deployment | |
US20230006904A1 (en) | Using network interface cards having processing units to determine latency | |
US20240078123A1 (en) | Auto-scaling service mesh for virtual machines | |
US20240095158A1 (en) | Deployment checks for a containerized sdn architecture system | |
US12010093B1 (en) | Allocating addresses from pools | |
US11444836B1 (en) | Multiple clusters managed by software-defined network (SDN) controller | |
EP4113949A1 (en) | Using network interface cards having processing units to determine latency | |
EP4304152A2 (en) | Edge services using network interface cards having processing units | |
EP4160410A1 (en) | Cloud native software-defined network architecture | |
EP4075757A1 (en) | A plurality of smart network interface cards on a single compute node | |
CN117255019A (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 |