CN116155912A - 网络系统中的性能调节 - Google Patents
网络系统中的性能调节 Download PDFInfo
- Publication number
- CN116155912A CN116155912A CN202210305398.4A CN202210305398A CN116155912A CN 116155912 A CN116155912 A CN 116155912A CN 202210305398 A CN202210305398 A CN 202210305398A CN 116155912 A CN116155912 A CN 116155912A
- Authority
- CN
- China
- Prior art keywords
- node
- pod
- working
- worker
- virtual
- 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
Images
Classifications
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5044—Allocation 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 hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/503—Resource availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/505—Clust
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)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于容器的编排系统包括主节点和多个工作节点。主节点可以从在对应工作节点上执行的每个代理接收与工作节点相关联的节点特性。主节点可以为每个工作节点确定对应于与对应工作节点和工作节点的节点简档相关联的节点特性的一个或多个参数,并且将这些参数提供给在对应工作节点上执行的代理。代理根据参数配置工作节点。响应于接收到把容器组pod部署到工作节点的请求,主节点可以基于节点特性和pod特性来选择工作节点以接收pod。代理可以根据一个或多个参数配置选定工作节点来执行pod的工作负载。
Description
相关申请的交叉引用
本申请要求于2021年11月19日提交的美国专利申请号17/455,867的权益,其全部内容通过引用并入本文。
技术领域
本公开涉及计算系统,更具体地涉及网络系统中的网络节点的参数配置。
背景技术
在典型的云数据中心环境中,存在大量互连服务器的集合,这些互连服务器提供计算和/或存储容量以运行各种应用。例如,数据中心可以包括针对订户(即,数据中心的客户)托管应用和服务的设施。例如,数据中心可以托管所有基础设施设备,诸如网络和存储系统、冗余电源和环境控制。在典型数据中心中,存储系统和应用服务器集群经由由一个或多个物理网络交换机和路由器层提供的高速交换机结构互连。更为复杂的数据中心通过位于各种物理托管设施中的订户支持设备提供遍布全球的基础设施。
虚拟化数据中心正在成为现代信息技术(IT)基础设施的核心基础。具体而言,现代数据中心已经广泛利用虚拟化环境,其中虚拟主机(在本文中也称为虚拟执行元件,诸如虚拟机或容器)被部署和执行在物理计算设备的底层计算平台上。
数据中心或包括一个或多个服务器的任何环境内的虚拟化可以提供若干优点。一个优点是虚拟化可以显著提高效率。随着每个物理中央处理单元(CPU)具有大量核的多核处理器架构的出现,底层物理计算设备(即,服务器)变得越来越强大,虚拟化变得更容易和更高效。第二优点是虚拟化提供了对计算基础设施的重要控制。随着物理计算资源成为可替代资源,诸如在基于云的计算环境中,计算基础设施的供应和管理变得更为容易。因此,除了虚拟化提供的效率和增加的投资回报(ROI)之外,由于它们的管理优点,所以企业IT人员通常更喜欢数据中心中的虚拟化计算集群。
容器化是一种基于操作系统级虚拟化的虚拟化方案。容器是用于彼此隔离的应用以及与主机隔离的应用的轻量级可移植式执行元素。因为容器没有紧密耦合到主机硬件计算环境,所以应用可以被绑定到容器图像并且作为支持底层容器架构的任何主机或虚拟主机上的单个轻量级封装执行。这样,容器解决了如何使软件在不同的计算环境中工作的问题。容器提供了从一个计算环境到另一虚拟计算环境或物理计算环境一致运行的承诺。
由于容器固有的轻量级性质,所以单个主机通常可以支持比传统虚拟机(VM)多得多的容器实例。通常,短期容器的创建和移动效率通常比VM更高,并且它们也可以作为逻辑相关元件组(有时被称为一些编排平台的“容器组(pod)”,例如,Kubernetes)进行管理。管理应用执行的部署和基础设施的网络系统可以使用pod作为编排的一部分,例如,用于使跨主机集群的应用的部署、扩展和操作自动化,并且提供计算基础设施,该计算基础设施可以包括以容器为中心的计算基础设施。网络系统还可以使用pod进行网络管理,例如,用于在网络基础设施中创建虚拟网络,以使得诸如容器或VM的虚拟执行环境上运行的应用之间以及在传统(例如,物理)环境上运行的应用之间能够进行分组化应用。
发明内容
一般而言,本公开描述了一种用于基于容器的编排系统的性能控制器,该性能控制器实现可以基于节点配置来确定性能参数并且可以随着网络系统中的条件和工作负载改变而动态调整参数的技术。在诸如数据中心的大规模部署环境中,可能存在多节点集群,其中集群中的节点可能具有不同配置和不同的可用资源。进一步地,节点可以由具有不同运行时特性和要求的不同应用使用。例如,一些应用可能需要大量存储器,而其他应用需要快速响应时间。各种参数会影响节点和在节点上运行的应用的性能方面。这些参数的值可能会有所不同,具体取决于节点上可用的资源(真实和虚拟)以及节点所托管的工作负载。在节点上设置或调整参数以尝试实现性能特性或针对特定类型的工作负载、应用或环境的过程可以称为“调节”节点。同样,可以调整以调节节点以实现性能特性或针对特定类型的工作负载、应用或环境的参数可以称为“调节参数”。
作为一个示例,提供虚拟路由服务的节点可以向这些服务提供在节点的用户空间存储器中作为用户模式应用、作为在内核空间存储器中运行的内核模式虚拟路由器(vrouter)或与智能网络接口卡(NIC)集成的vrouter运行的虚拟路由器。托管在用户存储器空间中运行的虚拟路由器的节点可能具有与托管在内核存储器空间中执行的内核模式虚拟路由器的节点不同的调节参数值。在一些情况下,针对特定性能特性调节节点可以导致另一性能特性下降。例如,针对功率节省调节节点可能会提高节点在功率使用方面的性能,但可能会降低节点在CPU处理方面的性能。
现有系统没有提供动态地和自动地重新配置节点或调整调节参数以最大化当前工作负载条件的性能的能力。如果完全进行了调节,通常逐个节点(例如,由管理员)手动进行了调节,并且一旦进行,则调节参数通常保持静态并且不会改变。因为调节数据中心中可能存在的众多节点既冗长又容易出错,所以通常根本不会进行调节。
本公开描述了动态且自动重新配置节点和/或调整参数以改进或最大化当前工作负载条件的性能的技术。节点集群的主节点上的性能控制器可以与集群的工作节点上的性能代理进行通信。在节点上运行的性能代理既可以向性能控制器报告当前节点配置数据,也可以接收节点调节参数,这些参数可能基于当前节点配置和在节点上执行的当前工作负载。
本文中所公开的技术可以包括在提供优于现有系统的技术优势的实际应用中。例如,如上文所指出的,现有系统不会动态且自动重新配置节点或调整调节参数以最大化当前工作负载条件的性能。本文中所公开的技术的实际应用是性能控制器和性能代理,该性能控制器和性能代理可以在工作节点上设置各种参数以根据指定工作节点的期望特性的节点简档来调节工作节点。本文中所公开的技术的技术优点在于,包括实现该技术的性能控制器的系统可以使用从在集群的工作节点上执行的性能代理接收的反馈来最大化集群中的节点性能。性能控制器可以使用从节点的性能代理接收的反馈来设置各种参数的值,以在给定所分配的节点简档所指定的特性的情况下调节节点以获得最大性能。性能控制器可以向性能代理提供调节参数值,并且性能代理可以强制执行节点的调节参数。进一步地,随着节点或节点集群内的条件改变,可以随时间调整调节参数。因此,本文中所公开的技术可以通过促进最大化具有大量工作节点的集群的性能来改进现有系统。
在一个示例中,一种方法包括:由集群的主节点从在集群的多个工作节点中的对应工作节点上执行的每个代理接收与多个工作节点中的对应工作节点相关联的多个节点特性,其中集群是基于容器的编排系统集群,并且其中主节点管理集群的工作节点上的工作负载的编排;针对多个工作节点中的每个工作节点,由主节点确定对应于与对应工作节点和对应工作节点的节点简档相关联的多个节点特性的一个或多个参数,并且通过主节点向在工作节点上执行的对应代理提供一个或多个参数,其中对应代理根据一个或多个参数配置工作节点;由主节点接收部署具有一个或多个容器组pod特性的pod的请求;由主节点并且基于多个节点特性和一个或多个pod特性来选择多个工作节点中的选定工作节点,其中在选定工作节点上要部署pod;以及由主节点调度选定工作节点上的pod。
在另一示例中,一种工作节点包括多个处理器;存储器,所述存储器耦合到多个处理器;编排代理,所述编排代理响应于来自主节点的指令而将pod部署到工作节点,该主节点在工作节点上编排工作负载,该主节点与工作节点位于相同的节点集群中,其中集群是基于容器的编排系统集群;以及性能代理,所述性能代理由多个处理器可执行,该性能代理被配置为:监控工作节点上的资源使用;向主节点报告资源使用;从主节点接收一个或多个参数;从编排代理接收pod被部署到工作节点的指示,所述工作节点由主节点根据资源使用来选择;以及根据一个或多个参数配置工作节点以执行pod的工作负载。
在另一示例中,一种基于容器的编排系统包括主节点;以及多个工作节点,所述多个工作节点通信地耦合到主节点,其中主节点管理多个工作节点中的每个工作节点上的工作负载的编排,其中主节点包括存储指令的存储器,这些指令当由主节点的处理电路系统执行时,使主节点:从在集群的多个工作节点中的对应工作节点上执行的每个代理接收与对应工作节点相关联的多个节点特性;针对多个工作节点中的每个工作节点,确定对应于与对应工作节点和对应工作节点的节点简档相关联的多个节点特性的一个或多个参数;以及向在工作节点上执行的对应代理提供一个或多个参数,其中对应代理根据一个或多个参数配置工作节点;接收部署具有一个或多个pod特性的pod的请求;基于多个节点特性和一个或多个pod特性来选择多个工作节点中的选定工作节点以接收该pod;以及在选定工作节点上调度pod,并且其中选定工作节点的代理被配置为:接收pod被调度到选定工作节点的指示;以及根据一个或多个参数配置选定工作节点以执行pod的工作负载。
在附图和以下描述中阐述了一个或多个示例的细节。根据描述和附图以及权利要求,其他特征、目的和优点将是明显的。
附图说明
图1是图示了根据本公开的一个或多个方面的示例网络的框图。
图2是图示了根据本公开的一个或多个方面的网络系统的集群中的主节点和工作节点的方面的框图。
图3是根据本公开中描述的技术的包括用于调节计算设备的性能参数和配置的性能代理的示例计算设备的框图。
图4是包括用于调节工作节点的性能参数的性能控制器的示例计算设备操作的框图。
图5是图示了根据本文中所描述的技术调节的示例集群的框图。
图6是图示了根据本发明的一种或多种技术的示例操作的流程图。
图7示出了示例pod应用规范。
具体实施方式
图1是图示了包括用于调节网络中的节点的性能参数的性能控制器的示例网络的概念图。图1图示了网络系统100和托管一个或多个计算网络、计算域或项目和/或本文中通常被称为云计算集群的基于云的计算网络的数据中心101的一个示例实现。基于云的计算集群可以共同位于共同的整体计算环境中,诸如单个数据中心,或分布跨各个环境中,诸如跨不同的数据中心。基于云的计算集群例如可以是不同的云环境,诸如OpenStack云环境、Kubernetes云环境或其他计算集群、域、网络等的各种组合。网络系统100和数据中心101的其他实现在其他情况下可能是合适的。这样的实现可以包括图1的示例中包括的组件的子集和/或可以包括图1中未示出的附加组件。
在图1的示例中,数据中心101针对通过服务提供方网络106耦合到数据中心101的客户104提供应用和服务的操作环境。尽管结合图1的网络系统100所描述的功能和操作可以被图示为分布在图1中的多个设备中,但是在其他示例中,归属于图1中的一个或多个设备的特征和技术可以由这样的设备中的一个或多个设备的本地组件在内部执行。同样,这样的设备中的一个或多个设备可以包括某些组件并且执行可以在本文的描述中以其他方式归属于一个或多个其他设备的各种技术。进一步地,可以结合图1描述或以其他方式由特定组件、设备和/或模块执行某些操作、技术、特征和/或功能。在其他示例中,这样的操作、技术、特征和/或功能可以由其他组件、设备或模块执行。因而,归属于一个或多个组件、设备或模块的一些操作、技术、特征和/或功能可以归属于其他组件、设备和/或模块,即使本文没有以这种方式具体描述。
数据中心101托管基础设施设备,诸如网络和存储系统、冗余电源和环境控制。服务提供方网络106可以耦合到由其他提供方管理的一个或多个网络,因此可以形成大规模公共网络基础设施的一部分,例如,互联网。
在一些示例中,数据中心101可以表示许多地理上分布的网络数据中心中的一个网络数据中心。如图1中的示例所图示的,数据中心101是针对客户104提供网络服务的设施。客户104可以是集体实体,诸如企业和政府或个体。例如,网络数据中心可以针对多个企业和最终用户托管web服务。其他示例服务可以包括数据存储装置、虚拟专用网络、业务工程、文件服务、数据挖掘、科学或超级计算等。在一些示例中,数据中心101是单独网络服务器、网络对等体或其他。
在图1的示例中,数据中心101包括一组存储系统、应用服务器、计算节点或其他设备,该其他设备包括网络设备107。网络设备107可以包括主节点109和工作节点110A到工作节点110N(统称为“工作节点110”,表示任何数目的工作节点)。设备107可以经由由一个或多个物理网络交换机和路由器层提供的高速交换机结构121互连。在一些示例中,设备107可以被包括在结构121内,但是为了便于说明而分开示出。
网络设备107可以是若干个不同类型的网络设备(核心交换机、脊网络设备、叶网络设备、边缘网络设备或其他网络设备)中的任一类型的网络设备,但在一些示例中,一个或多个设备107可以作为数据中心的物理计算节点或存储节点。例如,设备107中的一个或多个设备可以提供用于执行一个或多个客户特定应用或服务的操作环境。备选地或附加地,设备107中的一个或多个设备可以针对一个或多个虚拟机或诸如容器的其他虚拟化实例提供操作环境。在一些示例中,设备107中的一个或多个设备可以被可替代地称为主机计算设备,或更简单地称为主机。从而网络设备107可以执行一个或多个虚拟化实例,诸如虚拟机、容器或其他虚拟执行环境,用于运行一个或多个服务,诸如虚拟化网络功能(VNF)。
一般而言,网络设备107中的每个网络设备107可以是可以在网络上操作并且可以生成通过遥测或其他方式可访问的数据(例如,连接性数据、流量数据、sFlow数据)的任何类型的设备,该设备可以包括任何类型的计算设备、传感器、相机、节点、监督设备或其他设备。进一步地,网络设备107中的一些或全部网络设备可以表示另一设备的组件,其中这种组件可以生成通过遥测或其他方式可收集的数据。例如,网络设备107中的一些或全部网络设备可以表示物理或虚拟网络设备,诸如交换机、路由器、集线器、网关、诸如防火墙的安全设备、入侵检测和/或入侵防护设备。
尽管未具体示出,但交换机结构121可以包括耦合到机箱交换机的分布层的架顶式(TOR)交换机,并且数据中心101可以包括一个或多个非边缘交换机、路由器、集线器、网关、诸如防火墙的安全设备、入侵检测和/或入侵防护设备、服务器、计算机终端、膝上型计算机、打印机、数据库、诸如蜂窝电话或个人数字助理的无线移动设备、无线接入点、网桥、电缆调制解调器、应用加速器或其他网络设备。交换机结构121可以执行层3路由,以通过服务提供方网络106在数据中心101与客户104之间路由网络业务。网关108用于在交换机结构121与服务提供方网络106之间转发并接收分组。
网络设备107中的任何网络设备可以通过虚拟化服务器的资源来配置有虚拟执行元件,以提供在服务器上执行的一个或多个过程(应用)之间的隔离。“基于管理程序的”或“硬件级”或“平台”虚拟化是指创建虚拟机,每个虚拟机包括用于执行一个或多个过程的客户操作系统。一般而言,虚拟机提供用于在隔离虚拟环境中执行应用的虚拟化/客户操作系统。因为虚拟机从主机服务器的物理硬件虚拟化,所以执行应用与主机的硬件和其他虚拟机两者均隔离。每个虚拟机可以配置有一个或多个虚拟网络接口,以用于在对应虚拟网络上进行通信。
虚拟网络是在物理网络的顶部上实现的逻辑结构。虚拟网络可以用于替代基于VLAN的隔离并且在虚拟化数据中心(例如,数据中心101)中提供多租户。每个租户或应用可以具有一个或多个虚拟网络。除非安全策略明确允许,否则每个虚拟网络都可以与所有其他虚拟网络隔离。
虚拟网络可以使用数据中心101边缘路由器(图1中未示出)连接到物理多协议标签交换(MPLS)层3虚拟专用网络(L3VPN)和以太网虚拟专用网络(EVPN)网络,并且跨越它们进行扩展。虚拟网络还可以被用以实现网络功能虚拟化(NFV)和服务链锁。
可以使用多种机制来实现虚拟网络。例如,每个虚拟网络都可以被实现为虚拟局域网(VLAN)、虚拟专用网络(VPN)等。虚拟网络还可以使用两个网络(由交换机结构121组成的物理底层网络和虚拟覆盖网络)来实现。物理底层网络的作用是提供“IP结构”,它提供从任何物理设备(服务器、存储设备、路由器或交换机)到任何其他物理设备的单播互联网协议(IP)连接性。底层网络可以提供从网络中的任何点到网络中的任何其他点的统一的低时延、无阻塞、高带宽连接性。
如下文关于虚拟路由器(vrouter)111A所进一步描述的,在网络设备107中运行的虚拟路由器在它们之间使用动态“隧道”的网格在物理底层网络的顶部上创建虚拟覆盖网络。例如,这些覆盖隧道可以是GRE/UDP隧道上的MPLS、VXLAN隧道或NVGRE隧道。虚拟路由器还可以支持分段路由-MPLS(SR-MPLS)和IPv6底层。底层物理路由器和交换机可以不包含虚拟机或诸如任何媒体访问控制(MAC)地址、IP地址或策略的其他虚拟执行元件的任何每租户状态。例如,底层物理路由器和交换机的转发表可以仅包含网络设备107的IP前缀或MAC地址。(将虚拟网络连接到物理网络的网关路由器或交换机是例外,并且可以包含租户MAC或IP地址。)
“基于容器的”或“操作系统”虚拟化是指操作系统的虚拟化以在单个机器(虚拟或物理)上运行多个隔离系统。这些隔离系统表示容器,诸如由Kubernetes容器运行时接口–打开容器主动(CRI-O)、containerd、开源Docker容器应用或CoreOS Rkt(“Rocket”)提供的容器。像虚拟机一样,每个容器均进行了虚拟化,并且可能与主机机器和其他容器保持隔离。然而,与虚拟机不同,每个容器都可以省略单独操作系统,只提供应用套件和应用特定库。一般而言,容器由主机机器(例如,网络设备107中的一个网络设备)作为隔离用户空间实例来执行,并且可以与在主机机器上执行的其他容器共享操作系统和公共库。因此,与虚拟机相比,容器可以需要更少的处理能力、存储和网络资源。一组一个或多个容器可以被配置为共享一个或多个虚拟网络接口,用于在对应虚拟网络上进行通信。在一些示例中,容器由它们的主机内核管理,以允许限制资源(CPU、存储器、块I/O、网络等)和确定该资源的优先级,而无需启动任何虚拟机。在一些示例中,可以根据Linux容器(LXC)部署容器,该Linux容器(LXC)是一种操作系统级虚拟化方法,用于使用单个Linux内核在控制主机上运行多个隔离Linux系统(容器)。
网络设备107托管用于一个或多个虚拟网络的虚拟网络端点,该一个或多个虚拟网络通过交换机结构121在图1中表示的物理网络上操作。尽管主要关于基于数据中心的交换网络进行描述,但是诸如服务提供方网络106的其他物理网络可以位于一个或多个虚拟网络之下。
在一些示例中,网络系统100包括编排器130和SDN控制器132。虚拟执行元件可以使用基于集群的框架部署到虚拟化环境,其中集群的集群主节点(例如,主节点109)管理容器到集群的一个或多个集群工作节点(例如,工作节点110A至110N)的部署和操作。本文中所使用的术语“主节点”和“工作节点”涵盖用于区分集群的主管理元件和集群的托管设备的主虚拟执行元件的类似设备的不同编排平台术语。
编排器130和SDN控制器132可以在分开的计算设备上执行,或可以在相同计算设备上执行。编排器130和SDN控制器132中的每个可以是在一个或多个计算设备上执行的分布式应用。编排器130和SDN控制器132可以针对一个或多个集群实现相应主节点,每个集群具有由相应网络设备107实现的一个或多个工作节点110。一般而言,SDN控制器132控制数据中心101结构的网络配置,以例如针对虚拟网络端点之间的分组通信建立一个或多个虚拟网络。SDN控制器132提供逻辑上和在一些情况下物理上集中的控制器,用于促进数据中心101内的一个或多个虚拟网络的操作。在一些示例中,SDN控制器132可以响应于从编排器130和/或管理员/操作员接收的配置输入而操作。在于2013年6月5日提交的题为“PHYSICALPATH DETERMINATION FOR VIRTUAL NETWORK PACKET FLOWS(用于虚拟网络分组流量的物理路径确定)”的国际申请号PCT/US2013/044378、于2017年2月14日授权的题为“TunneledPacket Aggregation for Virtual Networks(用于虚拟网络的隧道分组聚合)”的美国专利号9,571,394以及于2020年7月28日授权的题为“MULTIPLE VIRTUAL NETWORK INTERFACESUPPORT FOR VIRTUAL EXECUTION ELEMENTS(用于虚拟执行元件的多虚拟网络接口支持),”的美国专利号10,728,145中找到关于结合数据中心101的其他设备或其他软件定义网络操作的SDN控制器132的附加信息,每个均通过引用并入,如同本文中进行了完全阐述一样。
一般而言,编排器130控制虚拟执行元件跨网络设备107的集群的部署、缩放和操作,并且提供计算基础设施,该计算基础设施可以包括以容器为中心的计算基础设施。在一些示例中,编排器130管理数据中心101的功能,诸如计算、存储、网络和应用资源。例如,编排器130可以针对数据中心101内或跨数据中心的租户创建虚拟网络。编排器130可以将虚拟机(VM)附接到租户的虚拟网络。编排器130可以将租户的虚拟网络连接到外部网络,例如,互联网或VPN。编排器130可以跨一组VM或到租户网络的边界实现安全策略。编排器130可以在租户的虚拟网络中部署网络服务(例如,负载平衡器)。编排器130以及在一些情况下SDN控制器132可以针对一个或多个Kubernetes集群实现相应集群主控器。作为一个示例,Kubernetes为容器管理平台,其提供跨公有云和私有云的可移植性,其中每个云都可以为容器管理平台提供虚拟化基础设施。Kubernetes可从加利福尼亚州旧金山的云原生计算基金会获得。网络设备107中的每个网络设备107可以托管一个或多个虚拟执行元件,每个虚拟执行元件具有用于配置在物理网络中的一个或多个虚拟网络的至少一个虚拟网络端点。虚拟网络的虚拟网络端点可以表示一个或多个虚拟执行元件,该一个或多个虚拟执行元件共享虚拟网络的虚拟网络接口。例如,虚拟网络端点可以是虚拟机、一组一个或多个容器(例如,pod)或另一其他虚拟执行元件,诸如虚拟网络的第3层端点。术语“虚拟执行元件”包括为应用提供至少部分独立的执行环境的虚拟机、容器和其他虚拟化计算资源。术语“虚拟执行元件”还可以涵盖一个或多个容器的pod。如图1所示,工作节点110A以具有一个或多个容器的pod 122A的形式托管一个虚拟网络端点。然而,给定工作节点110的硬件资源限制,工作节点110可以执行尽可能多的虚拟执行元件。虚拟网络端点中的每个虚拟网络端点可以使用一个或多个虚拟网络接口来执行分组I/O或以其他方式处理分组。例如,虚拟网络端点可以使用由NIC 113A使能的一个虚拟硬件组件(例如,VNF)来执行分组I/O并且使用交换机结构121在一个或多个通信链路上接收/发送分组。虚拟网络接口的其他示例描述如下。
工作节点110每个包括至少一个NIC 113,每个NIC 113包括至少一个接口以通过通信链路与交换机结构121交换分组。例如,工作节点110A包括NIC 113A。NIC 113中的任一NIC 113可以提供一个或多个虚拟硬件组件,诸如用于虚拟化输入/输出(I/O)的虚拟路由器111。用于I/O的虚拟硬件组件可以是物理NIC 113的虚拟化(“物理功能”)。例如,网络接口卡(或“网络适配器”)的物理功能被虚拟化以将一个或多个虚拟网络接口呈现为“虚拟功能”,以用于在网络设备110上执行的相应端点使用。这样,虚拟网络端点可以共享相同的物理硬件资源,并且虚拟功能是虚拟硬件组件的示例。与NIC 113A相关联的虚拟硬件组件可以与层2目的地地址相关联,该层2目的地地址可以由NIC 113A或负责配置NIC 113A的软件过程分配。
虚拟路由器111终止虚拟网络覆盖隧道并且基于分组的隧道封装报头来确定所接收的分组的虚拟网络,并且将分组转发到分组的适当目的地虚拟网络端点。对于工作节点110A,例如,对于从工作节点110A(例如,pod 122A)所托管的虚拟网络端点出站的分组中的每个分组,虚拟路由器111A附接隧道封装报头以生成经封装的分组或“隧道”分组,该隧道封装报头指示分组的虚拟网络,并且虚拟路由器111A经由虚拟网络的覆盖隧道将经封装的分组输出到物理目的地计算设备,诸如网络设备107中的另一网络设备。如本文中所使用的,虚拟路由器111可以执行隧道端点的以下操作:封装源自虚拟网络端点的内部分组以生成隧道分组并且解封装隧道分组以获取用于路由到其他虚拟网络端点的内部分组。
网络系统100实现自动化平台,以用于使虚拟执行元件跨网络设备107的自动化部署、缩放和操作,以提供用于执行应用工作负载和服务的虚拟化基础设施。在一些示例中,平台可以是容器编排平台,该容器编排平台提供以容器为中心的基础设施,用于自动化容器的部署、缩放和操作以提供以容器为中心的基础设施。在虚拟化计算基础架构的上下文下,“编排”通常是指向编排平台可用的主机服务器提供、调度和管理虚拟执行元件和/或在这些虚拟执行元件上执行的应用和服务。具体来说,容器编排准许容器协调,并且是指通过容器编排平台例如将容器部署、管理、扩展和配置到托管服务器。编排平台的示例实例包括Kubernetes、Docker swarm、Mesos/Marathon、OpenShift、OpenStack、VMware和AmazonECS。
在一个示例中,pod 122A是Kubernetes pod,并且是虚拟网络端点的示例。pod是一组一个或多个逻辑相关的容器(图1中未示出)、容器的共享存储装置以及有关如何运行容器的选项。在针对执行而实例化的情况下,pod可以被备选地称为“pod副本”。pod 122A的每个容器都是虚拟执行元件的示例。pod的容器共同位于单个服务器上,共同调度,并且在共享上下文下运行。pod的共享上下文可以是一组Linux命名空间、cgroup和其他隔离的小方面。在pod的上下文中,单独应用可以已经应用了其他子隔离。诸如pod 122A的pod可以表示由网络系统100执行的各种工作负载。
工作节点110A包括用于运行容器化应用的容器平台119A,诸如容器122A的应用。容器平台119A接收来自编排器130的请求以在工作节点110A中获取并托管容器。容器平台119A获取并执行容器。
容器平台119A包括针对虚拟网络端点配置虚拟网络接口的网络模块117A。容器平台119A使用网络模块117A来管理包括pod 122A的pod的网络。例如,网络模块117A创建虚拟网络接口以将pod连接到虚拟路由器111A并且使得这些pod的容器能够经由虚拟网络接口与虚拟网络上的其他虚拟网络端点进行通信。例如,网络模块117A可以将虚拟网络的虚拟网络接口插入到pod 122A中的容器的网络名称空间中,并且配置(或请求配置)虚拟路由器111A中的虚拟网络的虚拟网络接口,使得虚拟路由器111A被配置为将经由虚拟网络接口从虚拟网络接收的分组发送到pod 122A的容器,并且发送经由虚拟网络接口从虚拟网络上的pod 122A的容器接收的分组。网络模块117A可以分配网络地址(例如,虚拟网络的虚拟IP地址)并且可以针对虚拟网络接口设置路由。在Kubernetes中,默认情况下,所有pod都可以与所有其他pod通信,而无需使用网络地址转换(NAT)。
作为创建pod 122A的过程的一部分,编排器130向SDN控制器132发送消息以请求SDN控制器132针对多个虚拟网络(在配置数据中指示)创建相应虚拟网络接口。编排器130可以存储、发送或以其他方式通知用于针对pod 122A指定的多个虚拟网络的虚拟网络配置对象的SDN控制器132。例如,编排器130可以获取包括指示用于pod 122A的虚拟网络的接口类型的注释的pod清单,并且将pod122A部署到主机计算设备。在该示例中,编排器130可以存储pod122A的pod配置数据(例如,针对pod 122A指定的多个虚拟网络的虚拟网络配置对象)。pod配置数据可以包括pod的虚拟网络的接口类型。pod配置数据可以确定在请求中指定以配置pod 122A的接口类型。SDN控制器132可以配置网络系统100中尚未配置的任何虚拟网络。
SDN控制器132处理pod创建请求以生成用于pod 122A的多个虚拟网络接口126的接口配置数据,以用于经由虚拟网络进行通信。接口配置数据可以包括容器或pod唯一标识符以及针对虚拟网络接口126中的每个虚拟网络接口126指定用于配置虚拟网络接口的网络配置数据的列表或其他数据结构。虚拟网络接口的网络配置数据可以包括网络名称、所分配的虚拟网络地址、MAC地址和/或域名服务器值。多个虚拟网络接口126可以与多个虚拟网络相对应。
pod 122A的网络配置数据可以包括描述多个不同虚拟网络接口126的数据。例如,编排器130可以获取pod清单,该pod清单包括指示pod 122A的虚拟网络的接口类型的注释,并且将容器122A部署到主机计算设备。在该示例中,编排器130可以存储pod 122A的pod配置数据(例如,用于虚拟网络接口126A的pod 122A的网络配置数据)。pod配置数据可以包括pod的虚拟网络的接口类型。pod配置数据可以确定在请求中指定以配置pod 122A的接口类型。
主节点107的性能控制器133可以与工作节点110的性能代理135交互。性能控制器133和性能代理135可以实现本文中所描述的技术中的一种或多种技术来调整或调节工作节点110操作的参数以便在各种目标(例如,低时延、最大吞吐量、功率节省等)方面改进或最大化工作节点110的性能。例如,性能控制器133和性能代理135可以动态且自动重新配置工作节点110和/或调整工作节点110的参数以改进或最大化当前工作负载条件的性能。在工作节点110上执行的性能代理135既可以向性能控制器133报告当前节点配置数据,又可以从性能控制器133接收节点调节参数,这些节点调节参数可以基于当前节点配置和在节点上执行的当前工作负载。下文关于图2提供性能控制器133和性能代理135的操作的其他细节。
图2是图示了根据本公开的一个或多个方面的网络系统的集群中的主节点和工作节点的方面的框图。在图2所示的示例中,集群201包括主节点202和工作节点204A至204N(统称为“工作节点204”)。工作节点也可以被称为“计算节点”。主节点202可以是图1的主节点107的示例实现,并且工作节点204可以是图1的工作节点110的示例实现。
在一些方面中,主节点202包括控制器管理器210、性能控制器212、API服务器214、默认调度器215、自定义调度器216和数据库218。性能控制器212可以是图1的性能控制器133的示例实现。主节点202可以管理集群201中的工作节点204A至204N。在一些方面中,主节点202和工作节点204A至204N可以是Kubernetes节点。
数据库218是集群101的集群数据的后备存储。集群数据可以包括集群状态和配置数据。在一些方面中,数据库218可以实现为键值存储。数据库218可以是中央数据库或分布式数据库。在一些方面中,数据库218可以是Kubernetes etcd数据库。数据库218可以存储节点简档220和pod规范222。在一些方面中,节点简档220可以是Kubernetes configmap。节点简档220可以包括描述工作节点204A至204N的一个或多个节点的参数。在一些方面中,参数中的一个或多个参数可以是工作节点的调节参数。这些参数的示例包括超大页面(HugePages)、CPU钉选(Pinning)、非统一存储器访问(NUMA)节点结合、pod调度、CPU共享限制、网络接口卡(NIC)配置、CPU调控器、操作系统(OS)启动参数、虚拟路由器(vrouter)配置、CPU让出参数等。
超大页面(也称为超级页面或大页面)指示工作节点支持将存储器页面大小设置为比默认大小(通常为4K字节)更大的大小。使用比默认页面大小更大的页面大小可以使存储器管理更为高效,代价是可能会浪费存储器。
CPU钉选确定如何将pod或应用分配给CPU。可以使用CPU钉选为应用或pod永久分配一组固定CPU。把不同的处理器明确分配给不同的组件以竞争相同的处理器可以是有利的。例如,从性能角度来看,把DPDK vrouter钉选到与诸如使用vrouter的VNF的应用所使用的处理器不同的处理器上可以是有利的。在该示例中,DPDK vrouter和使用DPDK vrouter的过程不必竞争同一组处理器。
NUMA节点结合指定如何将pod结合到多处理器系统中的NUMA节点。在NUMA实现中,多处理器系统中的每个核心都可以访问本地存储器(例如,其NUMA节点上的存储器),也可以访问其他NUMA节点的存储器。处理器访问NUMA节点上的存储器而非它自己的存储器比访问本地存储器要慢。在一些方面中,可以通过把pod应用或其他过程结合到相同NUMA节点来提高性能。例如,在DPDK vrouter的情况下,如果使用DPDK vrouter的应用被结合到与DPDKvrouter相同的NUMA节点,则它们执行地更快。
CPU共享限制指定如何要在pod应用之间共享CPU,例如,要将多少共享的CPU时间提供给过程。
网络接口卡(NIC)配置可以指示NIC是否支持DPDK模式、帧大小等。例如,“巨型帧”指示NIC支持大于1500个字节的以太网帧。附加地,取决于NIC类型,某些任务可以从其他处理器卸载到NIC。例如,NIC可能能够执行诸如通用接收卸载(GRO)、通用分段卸载(GSO)、散列、计算校验和、多队列负载平衡等的任务。可以调节vrouter以使用这些NIC辅助卸载。
CPU调控器可以对CPU频率进行限制,以便达到功率节省目标。
操作系统(OS)引导参数可以包括设置超大页面、使能/禁用超线程、CPU隔离参数等的参数。
虚拟路由器配置可以指示虚拟路由器是被配置为内核模式虚拟路由器还是被配置为数据平面开发套件(DPDK)虚拟路由器。
CPU让出参数可以控制过程将CPU让给其他进程的条件。
不同的节点简档可以具有上述参数的不同参数设置,这取决于简档是针对最大每秒分组(PPS)、最小时延、功率节省、最大吞吐量或上述类型的平衡。例如,低时延简档可以调节节点以禁用超线程,发现物理NIC到NUMA结合,基于配置和CPU可用性以及关于物理NIC到NUMA结合的信息来执行CPU钉选,配置vrouter以调节队列/缓冲器大小和突发处理以用于低时延,针对吞吐量简档使用大缓冲器大小,并且针对性能设置CPU调控器参数。
作为另一示例,节能简档可以使得调度器避免在具有功率节省简档的节点上调度和运行基于DPDK的应用工作负载以避免连续轮询CPUS。CPU调控器可以设置为功率节省,这可以使得CPU以较低频率运行,从而节省功率。
分配给节点的简档指示节点要使用简档中指示的参数来调节。例如,可以针对要提供最大PPS的节点分配具有被设计为使得当应用于工作节点时调节工作节点以提供最大PPS的参数的PPS简档。同样,可以针对要提供最小时延的节点分配具有被设计为使得当应用于工作节点时调节工作节点以获取最小时延的参数的最小时延简档。可以组合或修改节点简档以创建新简档。
集群可以包括具有简档混合的节点,并且可以根据简档对节点进行分类。工作负载调度(基于工作负载类型DPDK或非DPDK pod等)可以基于简档进行调节。
pod规范222描述了可以部署到工作节点204A至204N的pod的方面。pod规范可以描述系统要如何运行pod中的容器。作为示例,pod规范可以指示pod要由客户调度器216调度。pod规范222可以指示pod应用是否应在支持超大页面的节点上运行。pod规范222可以指示POD中应用的CPU结合分配。进一步地,pod规范可以指示pod应用被配置为用于例如内核模式或DPDK模式的vrouter的类型。
在一些方面中,pod可以通过使用“cni-args”中的接口类型自定义字段检测pod类型来与工作节点匹配。例如,cni-args可以指示该pod是DPDK pod(virtio)或非DPDK pod(默认veth)。图7示出了使用YAML非标记语言(YAML)的示例DPDK pod规范,该示例DPDK pod规范还指定超大页面要在工作节点中可用。
主节点202的API服务器214暴露用于与集群201的节点交互的API。API服务器214可以接收来自最终用户、节点204和外部组件的请求。这样的请求可以包括部署、删除或移动pod、查询和改变系统内对象的状态的请求,对象之间的通信请求,添加或删除资源的请求等。API服务器214验证和配置对象的数据。API服务器214可以实现表示状态转移(REST)接口以处理REST操作并将前端提供给存储到数据库218的对应集群的共享状态。API服务器214可以认证并授权请求。API服务器214与集群201的其他组件通信以实例化集群中的虚拟执行元件。API服务器214可以表示Kubernetes API服务器。
控制器管理器210管理Kubernetes平台的各种组件的控制器过程。控制器过程是监控集群201中的节点204的状态的过程。在一些方面中,控制器过程是通过从API服务器214获取通知并且必要时执行将集群201的当前状态改变为期望状态的动作来监控集群201的当前状态的控制回路。各种控制器过程可以存在,并且可以监控和/或控制集群201的不同方面。控制器管理器210可以表示Kubernetes集群的Kubernetes控制器管理器。
性能控制器212实现本文中所描述的技术以调节节点配置参数以根据节点的简档220最大化节点的性能。例如,如果节点具有指示节点应被改进或优化以获取最大PPS的简档,则性能控制器212可以调节节点的配置以最大化PPS。同样,如果节点具有指示应改进或优化节点以节省功率的简档,则性能控制器212可以调节节点的配置以节省功率。下文提供了关于性能控制器212用来调节节点204的配置的技术的其他细节。
默认调度器215管理诸如节点204上的pod 224的pod的调度。如上文所描述的,pod可以包括一个或多个容器,其中每个容器是自容器应用,包括运行应用所需的任何库和配置设置。默认调度器215监控新创建或请求的pod,并且可以选择节点204中的一个节点来接收pod并运行pod的容器中的应用中的任何应用。
自定义调度器216是除了默认调度器215之外或代替默认调度器215运行的定制调度器。pod 224可以通过将标识期望调度器的指示符添加到它的关联pod规范222来指定当调度pod时要使用的调度器。如果pod规范222没有指定调度器,则可以使用默认调度器215以在工作节点上调度pod。如果pod规范222确实指定了自定义调度器216,则自定义调度器216负责调度pod。自定义调度器216可以使用本文中所描述的技术来基于pod的特性和可用工作节点的特性来选择工作节点204以用于调度pod。例如,如果pod的pod规范针对pod中的容器应用指定低时延的特性,则自定义调度器216可以选择已经针对低时延调节的工作节点204(例如,分配有低时延简档的工作节点)。同样,如果pod的pod规范针对pod中的容器应用指定高吞吐量,则自定义调度器216可以选择已经针对高吞吐量进行调节的工作节点204(例如,具有高吞吐量简档的工作节点)。下文对关于这个选择进程的更多细节进一步描述。在一些方面中,自定义调度器216可以表示Kubernetes自定义调度器。
工作节点204可以托管应用,诸如由pod 224的一个或多个容器提供的应用。自定义调度器216可以调度在工作节点204中的一个或多个工作节点204上具有一个或多个容器的pod。工作节点204A至204N可以包括编排代理206A至206N(统称为“编排代理206”)和服务代理208A至208N(统称为“服务代理208”)。在使用Kubernetes的各实现中,编排代理206可以是kubelet,而服务代理器208可以是kube代理器。
服务代理器208是在工作节点204A至204N上执行的网络代理器。在一些方面中,服务代理器208在每个节点上提供如Kubernetes API中定义的服务并且可以执行TCP、UDP和SCTP转发。服务代理器208监控服务和端点对象的添加和移除,并且它维护工作节点204的网络配置以确保pod和容器之间的通信,例如,使用服务确保该通信。服务代理器208可以表示Kubernetes集群的工作节点204的kube代理器。
编排代理206是在集群201中的节点204中的每个节点204上运行的代理。编排代理206监控在其对应节点上运行的容器的状态。编排代理206是编排器(例如,图1的编排器130)的代理,该代理接收容器的容器规范数据并且确保容器由计算设备300执行。容器规范数据可以采用从编排器130发送到编排代理206或经由命令行接口、HTTP端点、或HTTP服务器间接接收的清单文件的形式。容器规范数据可以是用于pod(例如,pod 224)的pod规范222(例如,Pod规范——描述pod的YAML(又一标记语言)或JSON对象)。基于pod规范,编排代理206获取并实例化pod 224中的容器图像以用于在工作节点204上执行。
性能代理207向性能控制器212提供节点配置信息并且从性能控制器212接收参数设置和动作。性能代理207和性能控制器212经由通信信道215相互通信以交换关于工作节点204的信息并调节工作节点204的性能。在一些示例中,通信信道215可以使用KubernetesAPI、谷歌远程过程调用(gRPC)等来实现,如图2所示。在一些方面中,性能代理207可以是工作节点204的独立模块,如图2所示。在一些方面中,性能代理207可以是插件(例如,kubelet插件)。在一些方面中,性能代理207可以包括在工作节点204的另一代理或组件(例如,vrouter代理(图2中未示出))中。
性能代理207可以在工作节点204上执行启动时和运行时操作两者。例如,当工作节点204被初始化时(例如,在工作节点的启动或重启后),性能代理207可以向性能控制器212传达关于工作节点204的信息。例如,性能代理207可以收集关于NUMA配置(如果工作节点支持)、处理器数目和处理器类型、NIC类型、存储器配置、磁盘分区、功率简档、虚拟路由器模式(例如,内核模式或DPDK模式)的信息。性能代理207可以将所收集的信息报告给性能控制器212。
性能控制器212可以使用性能代理207所收集的信息连同所分配的工作节点的简档来配置工作节点。在一些方面中,性能控制器212可以将性能代理207所报告的CPU划分为两个CPU池,即,预留池和非预留池。在预留池中的CPU的情况下,CPU可以基于简档参数或虚拟路由器模式来隔离或非隔离。在一些方面中,预留池中的CPU将预先为虚拟路由器(无论是DPDK虚拟路由器还是内核模式虚拟路由器)预留。为虚拟路由器预留的CPU不会用于pod工作负载调度。附加地,可以基于通过NIC的数据路径为vrouter应用预留特定NUMA节点。例如,通过NIC的数据路径可以具有管理业务。在这种情况下,性能控制器212可以出于调节目的而忽略NIC,因为管理业务通常不需要性能调节。在另一情况下,数据路径可以具有通过具有卸载能力的高性能NIC的数据平面业务。在这种情况下,性能控制器212可以在调节节点的性能时考虑NIC。CPU可以预留用于内核功能。在一些方面中,“isolcpu”Linux内核参数可以用于隔离CPU。
非预留池中的CPU可用于pod工作负载调度。在一些方面中,性能代理207可以使用Linux“cpuset”配置参数来将CPU分配给工作负载。在一些方面中,除了cpuset之外或代替cpuset,isolcpu可以用于将工作负载分配给CPU。无需专用CPU的工作负载可以从非预留池中分配CPU。
在工作节点204的运行时期间,性能代理207可以监控其对应工作节点244上的资源使用并且实施性能参数。性能代理207可以向性能控制器212提供关于其对应工作节点244的资源使用的反馈。性能控制器212和/或自定义调度器216可以使用该信息来调度工作节点上的pod。作为示例,性能控制器212可以选择其简档与pod规范中提供的特性相匹配的工作节点,具有足够可用的CPU来支持pod规范中的CPU结合参数(如果有),并且具有可用的NUMA存储器来支持pod规范中提供的NUMA参数(如果有)。一旦分配给工作节点,工作节点的性能控制器207就可以将pod的工作负载分配给CPU和NUMA节点。作为示例,对于时延和性能简档,性能控制器207可以将pod的工作负载分配给与DPDK vrouter pod相同的NUMA节点和套接字。
性能代理207可以实施对其对应工作节点进行性能限制。例如,性能代理207可以实施对pod中的容器应用进行CPU分配。在各Linux实现中,性能代理207可以使用“cgroups”实施CPU分配和其他资源分配。Cgroups是一个Linux内核特征,其管理进程集合的资源使用(例如,CPU、存储器、磁盘I/O、网络等)。性能代理207可以将“isolcpu”(隔离CPU)用于基于DPDK的工作节点。Isolcpu将CPU从内核调度中移除。然后,性能代理207可以使用处理器亲和性系统调用将容器应用分配给CPU。在基于DPDK的工作节点的情况下,性能代理207可以将基于DPDK的虚拟路由器分配给与可能使用虚拟路由器的VNF不同的CPU,从而避免VNF与VNF所使用的vrouter之间的处理器共享(以及潜在CPU使用冲突)。因此,性能代理207可以分配并跟踪哪些应用正在使用哪些CPU。如果性能代理207检测到pod或应用没有履行(例如,不符合)由性能控制器212指定的分配,则性能代理207可以向性能控制器发送反馈。性能控制器212和/或自定义调度器216可以尝试通过将pod重新调度到不同工作节点来解决冲突。
在一些方面中,用户可以在初始简档分配之后将不同的简档重新分配给工作节点204。在这种情况下,工作节点204上的工作负载可以迁移到具有工作负载的匹配简档的不同工作节点。在所有工作负载已经从工作节点204迁移出去后,性能控制器212就可以使用新简档重新配置工作节点204。例如,性能控制器212可以将新调节参数传达到工作节点204上的性能代理207。然后,性能代理207可以在工作节点上设置所接收的参数。
现在,将提供集群201的操作示例。系统管理员可以将简档分配给集群201的工作节点。例如,考虑200个节点的集群。系统管理员可以将最大PPS简档分配给25个节点以作为节点,将最小时延简档分配给50个节点,将最大吞吐量简档分配给75个节点,以及将功率节省简档分配给50个节点。附加地,在一些方面中,节点可以被配置为运行内核模式虚拟路由器或DPDK模式虚拟路由器。一般而言,内核模式虚拟路由器在操作系统的内核中实现,因此在内核存储器空间中运行。DPDK模式的虚拟路由器在用户存储器空间中运行。因此,与内核模式虚拟路由器相比,DPDK模式虚拟路由器的性能可以提高,因为当DPDK模式vrouter向诸如工作节点上的容器应用的其他用户模式过程发送数据或从其接收时,所需的上下文交换较少。
当工作节点204开始时,性能代理207可以执行节点的自省进程并且向性能控制器212报告硬件和软件配置信息。例如,性能代理207可以报告CPU的数目和类型、NIC类型、存储器配置、磁盘分区、功率简档、NUMA配置、对超大页面的支持、对大页面的支持等。性能控制器212可以基于从工作节点接收的反馈和从分配给工作节点的简档获取的参数来确定调节参数的值。性能控制器212可以将调节参数发送到工作节点的性能代理207。性能代理207可以基于参数来配置工作节点。附加地,在一些方面中,性能代理207可以基于工作节点的vrouter是内核模式vrouter还是DPDK vrouter来调节工作节点配置。
自定义调度器216可以通过选择工作节点204A至204N中的工作节点来调度pod以接收pod。对于具有指示自定义调度器216要用于调度的pod规范的pod,自定义调度器216可以基于将pod特性与工作节点的简档和当前资源使用匹配来选择工作节点。在一些方面中,自定义调度器216可以执行“最佳匹配”选择算法,例如,自定义调度器216选择其配置和可用资源与pod规范是最佳匹配的工作节点。例如,可以把指定低时延应用的pod分配给具有针对低延迟应用进行调节的参数并且具有可用CPU、存储器和其他资源的工作节点。进一步地,pod可以指定它被配置为使用DPDK虚拟路由器。在这种情况下,调度器将选择支持DPDK虚拟路由器的工作节点。
如果没有最佳匹配准则选项可用,则可以基于匹配(例如,与CPU亲和、NUMA亲和性、隔离、NIC、vrouter模式等的匹配)的最大数目来调度pod。可以选取具有最高数目的匹配的工作节点,并且自定义调度器216将相应地调度pod。
其pod规范未指定自定义调度器216的pod可以由默认调度器调度。例如,这种pod可以由标准Kubernetes调度器调度。
如上文所描述的,性能代理207可以向性能控制器212提供关于其对应工作节点204的操作的动态反馈。例如,性能代理207可以监控工作节点上的CPU、存储器、磁盘使用和其他资源利用,并且将这种信息发送到性能控制器212。附加地,性能代理207可以向性能控制器212提供关于时延、吞吐量、中断等的信息。性能控制器212和/或自定义调度器216可以使用该信息来调度pod到工作节点204的未来部署。
在一些方面中,从性能代理207收集的数据可以经由仪表板提供给用户。用户可以基于数据来选取将pod绕过调度器逻辑而手动分配给一些特定节点。在这种情况下,性能代理207可以更新性能控制器212,因此控制器可以使所有资源/数据保持最新。
图3是根据本公开中所描述的技术的包括用于调节计算设备的性能参数和配置的性能代理的示例计算设备(例如,主机)的框图。图3的计算设备300。图3可以表示真实或虚拟服务器,并且可以表示图1的网络设备107中的任一网络设备107和图2的主节点202和工作节点204的示例实例。在该示例中,计算设备300包括耦合计算设备300硬件环境的硬件组件的总线342。总线342耦合网络接口卡(NIC)330、存储盘346和一个或多个处理器310(以下称为“处理器310”)。NIC 330可以支持DPDK。在一些情况下,前端总线可以耦合处理器310和存储器设备344。在一些示例中,总线342可以耦合存储器设备344、处理器310和NIC 330。总线342可以表示外围组件接口(PCI)高速(PCIe))总线。在一些示例中,直接存储器访问(DMA)控制器可以控制耦合到总线342的组件之间的DMA传送。在一些示例中,耦合到总线342的组件控制耦合到总线342的组件之间的DMA传送。
处理器310可以包括一个或多个处理器,每个处理器包括独立执行单元以执行符合指令集架构的指令,这些指令存储到存储介质。执行单元可以实现为单独的集成电路(IC),或可以组合在一个或多个多核处理器(或“多核”处理器)内,该一个或多个多核心处理器(或“多核”处理器)各自都使用单个IC(即,芯片多处理器)来实现。
磁盘346表示计算机可读存储介质,这些计算机可读存储介质包括以用于存储诸如处理器可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性介质和/或非易失性介质、可移除介质和/或不可移除介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD-ROM、数字多功能光盘(DVD)或其他光存储、盒式磁带、磁带、磁盘存储或其他磁存储设备、或可以用于存储期望信息并且可以由处理器310访问的任何其他介质。
主存储器344包括一个或多个计算机可读存储介质,该一个或多个计算机可读存储介质可以包括诸如各种形式的动态RAM(DRAM)(例如,DDR2/DDR3 SDRAM或静态RAM(SRAM))的随机存取存储器(RAM)、闪存或任何其他形式的固定存储介质或可移除存储介质,这些固定存储介质或可移除存储介质可以用于携带或存储形式为指令或数据结构的期望程序代码和程序数据并且可以被计算机访问。主存储器344提供由可寻址存储器位置组成的物理地址空间。
网络接口卡(NIC)330包括一个或多个接口332,该一个或多个接口332被配置为使用底层物理网络的链路来交换分组。接口332可以包括具有一个或多个网络端口的端口接口卡。NIC 330还可以包括卡上存储器以例如存储分组数据。NIC 330与耦合到总线342的其他设备之间的直接存储器访问传送可以从NIC存储器读取/写入到NIC存储器。
存储器344、NIC 330、存储盘346和处理器310可以为包括在内核空间中执行的操作系统内核314的软件堆栈提供操作环境。内核314可以表示例如Linux、BerkeleySoftware Distribution(BSD)、另一Unix变体内核或从Microsoft Corp可用的Windows服务器操作系统内核。在一些实例中,操作系统可以执行管理程序和由管理程序管理的一个或多个虚拟机。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、从VMware可用的ESXi、从Microsoft可用的Windows Hyper-V以及其他开源和专有管理程序。术语管理程序可以涵盖虚拟机管理器(VMM)。包括内核314的操作系统为用户空间345中的一个或多个过程提供执行环境。
内核314包括物理驱动程序325以使用网络接口卡330。网络接口卡330可以是物理网络接口,一个或多个虚拟网络接口使用该物理网络接口,以使得能够在诸如容器329A至229B或一个或多个虚拟机(图3中未示出)的一个或多个虚拟执行元件之间共享网络接口卡330。诸如虚拟功能的共享虚拟设备可以提供专用资源,使得虚拟执行元件中的每个虚拟执行元件可以访问NIC 330的专用资源,因此对于虚拟执行元件中的每个虚拟执行元件而言,该NIC 330表现为专用NIC。
计算设备300可以(例如,经由NIC 330)耦合到物理网络交换机结构,该物理网络交换机结构包括覆盖网络,该覆盖网络将交换机结构从物理交换机扩展到软件或耦合到交换机结构的物理服务器的“虚拟”路由器,这些“虚拟”路由器包括虚拟路由器320。虚拟路由器可以是由物理服务器(例如,图1的网络设备107)执行的进程或线程或其组件,这些物理服务器动态创建并管理可用于虚拟网络端点之间通信的一个或多个虚拟网络。在一个示例中,虚拟路由器使用覆盖网络实现每个虚拟网络,该覆盖网络提供了将端点的虚拟地址与端点正在其上执行的服务器的物理地址(例如,IP地址)解耦的能力。每个虚拟网络都可以使用自己的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交。各种技术可以用于在物理网络内和跨虚拟网络传送分组。如本文中所使用的术语“虚拟路由器”可以涵盖Open vSwitch(OVS)、OVS网桥、Linux网桥、Docker网桥、或其他设备和/或软件,该设备和/或软件位于主机设备上并执行交换、桥接或在一个或多个虚拟网络的虚拟网络端点之间路由分组,其中虚拟网络端点由网络设备107中的一个或多个网络设备107托管。在图3的示例计算设备300中,虚拟路由器320可以作为基于DPDK的虚拟路由器在用户空间内执行,但是在各种实现中,虚拟路由器320可以在管理程序、主机操作系统、主机应用或虚拟机内执行。
虚拟路由器320可以作为内核模块(例如,内核模式虚拟路由器)或作为用户空间DPDK过程(例如,如本文中在用户空间345中所示的DPDK模式虚拟路由器)来执行。虚拟路由器代理316还可以在用户空间中执行。在图3的示例计算设备300中,虚拟路由器320作为基于DPDK的虚拟路由器在用户空间内执行,但在各种实现方式中,虚拟路由器320可以在管理程序、主机操作系统、主机应用或虚拟机内执行。
虚拟路由器代理316使用信道与SDN控制器132(图1)连接,该信道用于下载配置和转发信息。虚拟路由器代理316将该转发状态编程到由虚拟路由器320表示的虚拟路由器数据(或“转发”)平面。虚拟路由器320和虚拟路由器代理316可以是由处理器310执行的过程。
在虚拟路由器320(未示出)的基于内核的部署中,虚拟路由器320被安装为操作系统内部的内核模块。虚拟路由器320将自己注册到TCP/IP堆栈以从它想要的期望操作系统接口中的任一操作系统接口接收分组。接口可以是绑定接口、物理接口、tap接口(用于VM)、veth接口(用于容器)等。该模式下的虚拟路由器320依赖于操作系统来发送和接收来自不同接口的分组。虚拟路由器320经由操作系统接口发送分组。另外,NIC队列(物理或虚拟)由操作系统处置。分组处理可能在中断模式下操作,该中断模式生成中断并且可能导致频繁的上下文交换。当分组速率较高时,伴随频繁中断和上下文交换的开销可以使操作系统不堪重负并导致性能下降。
在虚拟路由器320(如图3所示)的基于DPDK的部署中,虚拟路由器320被安装为链接到DPDK库的用户空间345应用。这可以导致比基于内核的部署更快的性能,特别是,在存在高分组速率的情况下,性能更快。物理接口332由DPDK的轮询模式驱动程序(PMD)使用,而非由内核的基于中断的驱动程序使用。物理接口332的寄存器可以暴露到用户空间345中,以便由PMD可访问;以这种方式绑定的物理接口332不再由主机操作系统管理或对其可见,并且基于DPDK的虚拟路由器320管理物理接口332。这包括分组轮询、分组处理和分组转发。换言之,用户分组处理步骤由虚拟路由器320DPDK数据平面执行。与基于内核的虚拟路由器的中断模式相比较,当分组速率较高时,这种“轮询模式”的性质可以使虚拟路由器320DPDK数据平面分组处理/转发更为高效。与内核模式虚拟路由器320相比较,分组I/O期间的中断和上下文交换相对较少,并且在一些情况下,可以完全避免分组I/O期间的中断和上下文交换。
虚拟路由器320可以针对其中虚拟路由器320作为相应隧道端点操作的相应虚拟网络实现一个或多个虚拟路由和转发实例(VRF)322A至222B。一般而言,每个VRF 322存储对应虚拟网络的转发信息,并且标识数据分组要被转发到哪里以及分组是否要被封装在隧道协议中,诸如使用可能包括虚拟网络协议栈的不同层的一个或多个报头的隧道报头。VRF322中的每个VRF可以包括存储虚拟网络的路由和转发信息的网络转发表。
pod 302A至202B可以表示图1的pod 122A和/或图2的pod 224的示例实例。pod302A包括一个或多个容器329A,而pod 302B包括一个或多个容器329B。
容器平台304可以更详细地表示图1的容器平台119A的示例实例。容器平台304可以包括容器引擎308、编排代理206、服务代理器208和网络模块306。网络模块306可以表示图1的网络模块117A的示例实例。
编排代理206和服务代理器208可以包括可由处理器310作为一个或多个进程执行的代码。上文已经参考图2对编排代理206和服务代理器208的方面进行了描述。
容器引擎308包括由处理器310可执行的代码。容器引擎308可以是一个或多个计算机过程。容器引擎308以容器329A至329B的形式运行容器化应用。容器引擎308可以表示CRI-O、containerd Docker、rkt或用于管理容器的其他容器引擎。一般而言,容器引擎308接收请求,并且管理诸如图像、容器、网络和卷(volume)的对象。图像是带有用于创建容器的指令的模板。容器是图像的可执行实例。基于来自编排代理206的指令,容器引擎308可以获得图像,并且将它们实例化为pod 302A至202B中的可执行容器329A至329B。
编排代理206实例化网络模块306以针对pod 302中的每个pod302配置一个或多个虚拟网络接口。例如,编排代理206接收pod 302A的容器规范数据,并且指示容器引擎308基于pod 302A的容器规范数据来创建具有容器329A的pod 302A。编排代理206还调用网络模块306来针对pod 302A配置与VRF 322A相对应的虚拟网络的虚拟网络接口312。在该示例中,pod 302A和pod 302B是与VRF 322A和VRF 322B相对应的虚拟网络的虚拟网络端点。虚拟网络接口312、313中的任一虚拟网络接口可以表示图1中描述的虚拟网络接口126中的虚拟网络接口126的示例实例。
网络模块306可以获取用于配置pod 302的虚拟网络接口的接口配置数据。虚拟路由器代理316作为虚拟网络控制平面模块操作,用于使得SDN控制器132(图1)能够配置虚拟路由器320。与管理供应、调度和管理虚拟执行元件的编排控制平面(包括用于工作节点和(多个)主节点的容器平台304,例如,编排器130)不同,虚拟网络控制平面(包括网络控制器132以及工作节点的虚拟路由器代理316)管理部分由工作节点的虚拟路由器320在数据平面中实现的虚拟网络的配置。虚拟路由器代理316向网络模块306传达用于虚拟网络接口的接口配置数据,以使得编排控制平面元件(即,网络模块306)能够根据由SDN控制器132确定的配置状态来配置虚拟网络接口,从而桥接编排控制平面与虚拟网络控制平面之间的间隙。另外,这可以使得网络模块306能够获取用于pod的多个虚拟网络接口的接口配置数据并且配置多个虚拟网络接口,从而可以减少调用单独的网络模块306来配置每个虚拟网络接口所固有的通信和资源开销。
图4是包括用于调节性能参数工作节点的性能控制器的示例计算设备操作的框图。图4的计算设备400可以表示网络设备107(图1)和主节点202(图2)中的一项或多项。
在该示例中,计算设备400包括耦合计算设备400硬件环境的硬件组件的总线442。总线442耦合网络接口卡(NIC)430、存储盘446和一个或多个处理器410(以下称为“处理器410”)。在一些情况中,前端总线可以耦合处理器410和存储器设备444。在一些示例中,总线442可以耦合存储器设备444、处理器410和NIC 430。总线442可以表示外围组件接口(PCI)高速(PCIe))总线。在一些示例中,直接存储器访问(DMA)控制器可以控制耦合到总线442的组件之间的DMA传送。在一些示例中,耦合到总线442的组件控制耦合到总线442的组件之间的DMA传送。
处理器410可以包括一个或多个处理器,每个处理器包括独立执行单元以执行符合指令集架构的指令,这些指令存储到存储介质。执行单元可以实现为单独的集成电路(IC),或可以组合在一个或多个多核处理器(或“多核”处理器)内,该一个或多个多核处理器(或“多核”处理器)各自都使用单个IC(即,芯片多处理器)来实现。
磁盘446表示计算机可读存储介质,这些计算机可读存储介质包括以用于存储诸如处理器可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性介质和/或非易失性介质、可移除介质和/或不可移除介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD-ROM、数字多功能光盘(DVD)或其他光存储、盒式磁带、磁带、磁盘存储或其他磁存储设备、或可以用于存储期望信息并且可以由处理器410访问的任何其他介质。
主存储器444包括一个或多个计算机可读存储介质,该一个或多个计算机可读存储介质可以包括诸如各种形式的动态RAM(DRAM)(例如,DDR2/DDR3 SDRAM或静态RAM(SRAM))的随机存取存储器(RAM)、闪存或任何其他形式的固定存储介质或可移除存储介质,这些固定存储介质或可移除存储介质可以用于携带或存储形式为指令或数据结构的期望程序代码和程序数据并且可以被计算机访问。主存储器444提供由可寻址存储器位置组成的物理地址空间。
网络接口卡(NIC)430包括一个或多个接口432,该一个或多个接口432被配置为使用底层物理网络的链路来交换分组。接口432可以包括具有一个或多个网络端口的端口接口卡。NIC 430还可以包括卡上存储器以例如存储分组数据。NIC 430与耦合到总线442的其他设备之间的直接存储器访问传送可以从NIC存储器读取/写入到NIC存储器。
存储器444、NIC 430、存储盘446和处理器410可以为包括在内核空间中执行的操作系统内核414的软件堆栈提供操作环境。内核414可以表示例如Linux、BerkeleySoftware Distribution(BSD)、另一Unix变体内核或从Microsoft Corp可得到的Windows服务器操作系统内核。在一些实例中,操作系统可以执行管理程序和由管理程序管理的一个或多个虚拟机。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、从VMware可得到的ESXi、从Microsoft可得到的Windows Hyper-V以及其他开源和专有管理程序。术语管理程序可以涵盖虚拟机管理器(VMM)。包括内核414的操作系统为用户空间445中的一个或多个过程提供执行环境。内核414包括物理驱动器425,该物理驱动器425提供使用网络接口卡430的接口,以用于由计算设备400的组件使用。
计算设备400可以耦合到物理网络交换机结构(例如,经由NIC 430),该物理网络交换机结构包括覆盖网络,该覆盖网络将交换机结构从物理交换机扩展到耦合到交换机结构的物理服务器的软件或“虚拟”路由器,图3的这种虚拟路由器320。计算设备400可以使用一个或多个专用虚拟网络来配置集群的工作节点204(图2)。
计算设备400可以包括API服务器214、默认调度器215、自定义调度器216和控制器管理器210,每个都包括由处理器作为一个或多个计算机进程可执行的代码。上文已经参考图2对API服务器214、默认调度器215、自定义调度器216和控制器管理器210的方面进行了描述。一般而言,API服务器214可以调用默认调度器215或自定义调度器216来调度工作节点204(图2)上的虚拟执行元件。如果pod的pod规范指定自定义调度器216要被用以调度pod,则自定义调度器216可以根据本文中所描述的技术选择工作节点来调度虚拟执行元件。例如,自定义调度器216可以基于节点简档和调节参数与虚拟元件特性(例如,pod规范中的pod特性)之间的最佳匹配来选择工作节点。API服务器214可以调用选定工作节点的编排代理206(图2和图3),这可以使得选定工作节点的容器引擎308(图3)从存储服务器获取虚拟执行元件并且创建工作节点上的虚拟执行元件。选定工作节点的编排代理206可以将虚拟执行元件的状态更新到API服务器214,该API服务器214将该新状态持久保存到数据库218。这样,计算设备400在计算基础设施8中实例化新虚拟执行元件。
SDN控制器132包括由处理器410可执行的代码。SDN控制器132可以包括一个或多个计算机过程。SDN控制器132可以是逻辑上集中但物理上分布的控制器,负责提供虚拟化网络的管理、控制和分析功能。特别地,SDN控制器132可以是计算基础设施8的逻辑上集中的控制平面和管理平面,并且编排一个或多个工作节点的虚拟路由器。
SDN控制器132可以为在网络基础设施上运行的计算架构提供云网络。云网络可能包括企业或服务提供方的私有云、基础设施即服务(IaaS)和云服务提供方(CSP)的虚拟私有云(VPC)。私有云、VPC和IaaS用例可能牵涉到多租户虚拟化数据中心,诸如关于图1所描述的多租户虚拟化数据中心。在这种情况下,数据中心中的多个租户共享相同的物理资源(物理服务器、物理存储装置,物理网络)。每个租户都分配有自己的逻辑资源(虚拟机、容器或其他形式的虚拟执行元件;虚拟存储装置;虚拟网络)。除非安全策略特别允许,否则这些逻辑资源彼此隔离。数据中心的虚拟网络还可以与物理IP VPN或L2 VPN互连。
SDN控制器132可以向诸如商业边缘网络、宽带用户管理边缘网络和移动边缘网络的网络提供网络功能虚拟化(NFV)。NFV涉及网络功能的编排和管理,诸如虚拟机、容器或其他虚拟执行元件而非物理硬件设施中的防火墙、入侵检测或防护系统(IDS/IPS)、深度分组检查(DPI)、高速缓存、广域网(WAN)优化等的编排和管理。
SDN控制器132对网络基础设施元件进行编程以创建虚拟网络并且可以创建虚拟网络的虚拟网络接口的接口配置。在通过引用并入上文的国际申请号PCT/US2013/044378和美国专利申请号14/226,509中可以找到关于与数据中心101的其他设备或其他软件定义的网络一起操作的SDN控制器132的附加信息。
网络控制器管理器427包括由处理器410可执行的代码。网络控制器管理器427可以是一个或多个计算机过程。网络控制器管理器427作为面向编排的元件(例如,默认调度器215、自定义调度器216、API服务器214、控制器管理器426和数据库218)和SDN控制器132之间的接口操作。一般而言,网络控制器管理器427监控新对象(例如,pod和服务)的集群。网络控制器管理器427可以隔离虚拟网络中的pod并且将pod与服务连接。网络控制器管理器427可以作为集群的主节点的容器来执行。
尽管默认调度器215、自定义调度器216、API服务器214、网络控制器管理器426、SDN控制器132、网络控制器管理器427和数据库218被说明和描述为由单个计算设备400执行,但是它们可以分布在组成计算系统或硬件/服务器集群的多个计算设备400之间。换言之,多个计算设备400中的每个计算设备可以针对默认调度器215、自定义调度器216、API服务器214、网络控制器管理器426、SDN控制器132、网络控制器管理器427或数据库218中的任一个或多个的一个或多个实例提供硬件操作环境。默认调度器215、自定义调度器216、API服务器214、控制器管理器210和网络控制器管理器427可以实现编排器132的示例实例。网络控制器管理器427可以表示Kubernetes云控制器管理器或Kube管理器。
图5是图示了根据本文中所描述的技术调节的示例集群的框图。在图5所图示的示例中,集群500包括运行性能控制器212的主节点502。集群500还包括工作节点504A和504B,每个节点具有不同的硬件配置。在该示例中,工作节点504A是32核双套接字计算系统,而工作节点504B是40核双套接字计算系统。工作节点504A和504B中的每个工作节点具有相应性能代理207A和207B。
在该示例中,性能控制器212在特定节点上调度需要四个核的pod和需要六个核的pod,以便实现可期望CPU利用。进一步地,CPU可以分配给POD,使得pod分配给与vrouterpod相同的NUMA节点,以实现最大性能。在图5所示的示例中,工作节点504A的VNF 508A和508B是DPDK VNF,因此已经被分配给与vrouter 506A相同的NUMA节点(例如,NUMA 0)。Pod1-N 510A未针对DPDK进行配置,因此可以分配给不同的NUMA节点(例如,NUMA 1)。同样,VNF508C和508D利用DPDK,因此已经被分配给NUMA 0,即,与vrouter 506B相同的NUMA节点。Pod1-N 510B未配置为使用DPDK,因此被分配给NUMA 1。可以从套接字2和NUMA 2分配非DPDK应用或内核,并且可以调节中断以实现这种Pod的最佳性能。作为中断调节的示例,性能控制器212可以禁用irqbalance以避免中断的一般负载平衡。性能控制器212还可以禁止特定CPU进行irqbalance。作为另一示例,性能控制器212可以根据CPU亲和性对中断进行负载平衡和/或将中断映射到用于分组处理的特定队列上。例如,性能控制器212可以指定CPU套接字0上的NIC上的中断仅由也在套接字0上的CPU处置。
图6是图示了根据本公开的一种或多种技术的示例操作的流程图。基于容器的编排系统的主节点可以从集群的多个工作节点的每个代理接收多个节点特性,该多个节点特性与对应于代理的工作节点相关联(605)。主节点可以管理集群的工作节点上的工作负载的编排。此外,主节点可以针对多个工作节点中的每个工作节点确定对应于与对应工作节点和对应工作节点的节点简档相关联的多个节点特性的一个或多个参数,并且向在工作节点上执行的对应代理提供一个或多个参数(610)。对应代理根据一个或多个参数配置工作节点。接下来,主节点可以接收将pod部署到工作节点的请求,该pod具有一个或多个pod特性(615)。接下来,主节点可以基于多个节点特性和一个或多个pod特性来选择多个工作节点中的选定工作节点以接收pod(620)。接下来,主节点可以在选定工作节点上调度pod(625)。
在一些方面中,已经在SDN的上下文中对本公开的技术进行了讨论。然而,这些技术不限于SDN,并且可以在许多不同的环境中实现,这些环境包括基于容器的编排系统,诸如Kubernetes平台。
对于包括在任何流程图或流程图中的本文中所描述的过程、装置和其他示例或说明,包括在本文中所描述的技术中的任一技术中的某些操作、动作、步骤或事件可以按不同顺序执行,可以添加、合并或完全省略(例如,并非所有描述的动作或事件都是技术实践所必需的)。而且,在某些示例中,操作、动作、步骤或事件可以同时执行,例如,通过多线程处理、中断处理或多个处理器而非顺序执行。某些其他操作、动作、步骤或事件即使没有具体标识为自动执行,也可以自动执行。此外,被描述为自动执行的某些操作、动作、步骤或事件可以备选地不自动执行,而是在一些示例中,这些操作、动作、步骤或事件可以响应于输入或另一事件而执行。
本文中包括的附图各自图示了本公开的一个方面的至少一个示例性实现。然而,本公开的范围不限于这样的实现。因而,除了图中所示的示例或备选实现之外,本文中所描述的系统、方法或技术的其他示例或备选实现在其他实例中可能是适当的。这样的实现可以包括图中包括的设备和/或组件的子集和/或可以包括图中未示出的附加设备和/或组件。
上文所阐述的具体实施方式旨在作为对各种配置的描述,而不旨在表示可以实践本文中所描述的概念的唯一配置。具体实施方式包括用于提供对各种概念的充分理解的具体细节。然而,可以在没有这些具体细节的情况下实践这些概念。在一些实例中,众所周知的结构和组件在参考图中以框图形式示出,以免混淆这些概念。
因而,尽管可以参考特定附图来描述各种系统、设备和/或组件的一个或多个实现方式,但是可以以若干个不同方式来实现这样的系统、设备和/或组件。比如,在本文中的附图(例如,图1和/或图3)中作为单独设备图示的一个或多个设备可以备选地实现为单个设备;作为单个组件图示的一个或多个组件可以备选地实现为单个组件。此外,在一些示例中,本文中作为单个设备在附图中图示的一个或多个设备可以备选地实现为多个设备;被图示为单个组件的一个或多个组件可以备选地实现为多个组件。这样的多个设备和/或组件中的每个设备和/或组件可以经由有线或无线通信直接耦合和/或经由一个或多个网络远程耦合。此外,可以在本文中的各个附图中图示的一个或多个设备或组件可以备选地实现为未在这些附图中示出的另一设备或组件的一部分。以这种方式和其他方式,本文中所描述的功能中的一些功能可以通过两个或更多个设备或组件经由分布式处理来执行。
进一步地,某些操作、技术、特征和/或功能可以在本文中被描述为由特定组件、设备和/或模块执行。在其他示例中,这样的操作、技术、特征和/或功能可以由不同的组件、设备或模块来执行。因而,在其他示例中,可以在本文中描述为归属于一个或多个组件、设备或模块的一些操作、技术、特征和/或功能可以归属于其他组件、设备和/或模块,即使本文中没有以这种方式具体描述。
尽管已经结合一些示例的描述标识了特定优点,但是各种其他示例可以包括一些、不包括或所有列举的优点。对于本领域的普通技术人员而言,其他技术或其他优点可以根据本公开变得明显。进一步地,尽管本文中已经公开了具体示例,但是本公开的各方面可以使用任何数目的技术来实现,无论当前是否已知,因而,本公开不限于在本公开中具体描述和/或图示的示例。
在一个或多个示例中,所描述的功能可以以硬件、软件、固件或其任何组合实现。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上和/或通过计算机可读介质传输并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,该计算机可读存储介质对应于诸如数据存储介质的有形介质或包括便于将计算机程序从一个地方传送到另一地方(例如,根据通信协议)的任何介质在内的通信介质。以这种方式,计算机可读介质通常可以对应于(1)有形计算机可读存储介质,该有形计算机可读存储介质是非瞬态有形计算机可读存储介质;或(2)诸如信号或载波的通信介质。数据存储介质可以是任何可用介质,该可用介质可以由一个或多个计算机或一个或多个处理器访问以取回指令、代码和/或数据结构,用于实现本公开中所描述的技术。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,这样的计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、闪存或可以用于以指令或数据结构的形式存储期望程序代码并且可以由计算机访问的任何其他介质。此外,任何连接都被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或诸如红外技术、无线电技术和微波技术等的无线技术从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或诸如红外技术、无线电技术和微波技术等的无线技术都包括在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是针对非瞬态有形存储介质。所使用的磁盘和盘包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而盘则使用激光器以光学方式再现数据。上述的组合也应包括在计算机可读介质的范围内。
指令可以由诸如一个或多个数字信号处理器(DSP)、通用处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等同集成或分立逻辑电路系统的一个或多个处理器执行。因而,如本文中所使用的术语“处理器”或“处理电路系统”可以各自是指前述结构中的任一结构或适合于实施所描述的技术的任何其他结构。另外,在一些示例中,所描述的功能可以在专用硬件和/或软件模块内提供。此外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
本公开的技术可以在广泛多种设备或装置中实现,这些设备或装置包括无线手持机、移动计算设备或非移动计算设备、可穿戴式计算设备或非可穿戴式计算设备、集成电路(IC)或IC集合(例如,芯片集合)。在本公开中描述了各种组件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同的硬件单元来实现。相反,如上文所描述的,各种单元可以结合在硬件单元中或由包括如上文所描述的一个或多个处理器的互操作硬件单元集合连同合适软件和/或固件提供。
Claims (21)
1.一种用于在基于容器的系统中编排的方法,所述方法包括:
由集群的主节点从在所述集群的多个工作节点中的对应工作节点上执行的每个代理接收与所述多个工作节点中的所述对应工作节点相关联的多个节点特性,其中所述集群是基于容器的编排系统集群,并且其中所述主节点管理所述集群的所述工作节点上的工作负载的编排;
针对所述多个工作节点中的每个工作节点,由所述主节点确定对应于与所述对应工作节点和所述对应工作节点的节点简档相关联的所述多个节点特性的一个或多个参数,并且由所述主节点向在所述工作节点上执行的对应代理提供所述一个或多个参数,其中所述对应代理根据所述一个或多个参数配置所述工作节点;
由所述主节点接收部署具有一个或多个容器组pod特性的pod的请求;
由所述主节点基于所述多个节点特性和所述一个或多个pod特性来选择所述多个工作节点中的选定工作节点,其中在所述选定工作节点上要部署所述pod;以及
由所述主节点在所述选定工作节点上调度所述pod。
2.根据权利要求1所述的方法,其中选择选定工作节点包括:选择配置有虚拟路由器的工作节点,所述虚拟路由器在由所述一个或多个pod特性指示的虚拟路由器模式下操作。
3.根据权利要求2所述的方法,其中所述虚拟路由器模式包括数据平面开发套件DPDK模式。
4.根据权利要求1至3中任一项所述的方法,其中所述一个或多个参数包括以下一项或多项:中央处理单元CPU钉选参数、非统一存储器访问NUMA结合参数、以及虚拟路由器配置参数。
5.根据权利要求1至3中任一项所述的方法,还包括:
由所述主节点向所述选定工作节点的所述对应代理提供用于所述pod的一个或多个CPU分配,所述CPU分配至少部分基于所述选定工作节点的所述节点特性中的一个或多个节点特性。
6.根据权利要求1至3中任一项所述的方法,其中选择所述选定工作节点以接收所述pod包括:基于所述多个节点特性与所述一个或多个pod特性之间的最佳匹配来选择所述选定工作节点。
7.根据权利要求1至3中任一项所述的方法,还包括:
在所述工作节点的初始化之后,由所述主节点从所述代理接收与所述工作节点相关联的资源使用信息,
其中选择所述选定工作节点以接收所述pod包括:基于所述资源使用信息来选择所述工作节点以接收所述pod。
8.根据权利要求7所述的方法,还包括:
由所述主节点基于所述资源使用信息来确定所述工作节点上当前可用CPU的数目;
基于所述一个或多个pod特性来确定针对所述pod的期望CPU的数目;以及
基于所述选定工作节点上的所述当前可用CPU和针对所述pod的期望CPU的所述数目来选择所述选定工作节点。
9.根据权利要求8所述的方法,还包括:
由所述主节点基于所述多个节点特性来确定预留CPU的第一池和非预留CPU的第二池,
其中所述当前可用CPU包括来自预留CPU的所述第一池的可用CPU。
10.根据权利要求1至3中任一项所述的方法,其中所述节点简档包括第一节点简档,并且其中所述工作节点包括第一工作节点,其中所述方法还包括:
由所述主节点经由用户接口设备接收针对所述工作节点的、从所述第一节点简档到第二节点简档的简档改变的指示;
由所述主节点响应于接收到所述简档改变的所述指示,将工作负载从所述第一工作节点迁移到与所述第一简档相关联的第二工作节点;以及
由所述主节点在迁移所述工作负载之后,根据所述第二节点简档配置所述第一工作节点。
11.一种工作节点,包括:
多个处理器;
存储器,所述存储器耦合到所述多个处理器;
编排代理,所述编排代理响应于来自主节点的指令而将pod部署到所述工作节点,所述主节点在所述工作节点上编排工作负载,所述主节点与所述工作节点位于相同的节点集群中,其中所述集群是基于容器的编排系统集群;以及
性能代理,所述性能代理由所述多个处理器可执行,所述性能代理被配置为:
监控所述工作节点上的资源使用;
向所述主节点报告所述资源使用;
从所述主节点接收一个或多个参数;
从所述编排代理接收所述pod被部署到所述工作节点的指示,所述工作节点由所述主节点根据所述资源使用来选择;以及
根据所述一个或多个参数配置所述工作节点以执行所述pod的工作负载。
12.根据权利要求11所述的工作节点,还包括:
虚拟路由器,所述虚拟路由器被配置为在所述多个处理器的第一子集上执行;
其中所述性能代理还被配置为:
响应于确定一个或多个参数指示所述虚拟路由器被配置为DPDK虚拟路由器,将所述工作负载配置为与所述DPDK虚拟路由器在所述工作节点的相同NUMA节点上执行。
13.根据权利要求12所述的工作节点,其中所述性能代理还被配置为在所述多个处理器的第二子集上执行所述工作负载,其中所述第一子集没有与所述第二子集共同的任何处理器。
14.根据权利要求11至13中任一项所述的工作节点,其中所述性能代理被配置为在所述工作节点的初始化时间处收集所述工作节点的一个或多个特性并且将所述一个或多个特性提供给所述主节点。
15.一种基于容器的编排系统,包括:
主节点;以及
多个工作节点,所述多个工作节点通信地耦合到所述主节点,其中所述主节点管理所述多个工作节点中的每个工作节点上的工作负载的编排,
其中所述主节点包括存储指令的存储器,所述指令在由所述主节点的处理电路系统执行时,使所述主节点:
从在集群的所述多个工作节点中的对应工作节点上执行的每个代理接收与所述对应工作节点相关联的多个节点特性;
针对所述多个工作节点中的每个工作节点,确定对应于与所述对应工作节点和所述对应工作节点的节点简档相关联的所述多个节点特性的一个或多个参数;以及向在所述工作节点上执行的所述对应代理提供所述一个或多个参数,其中所述对应代理根据所述一个或多个参数配置所述工作节点;
接收部署具有一个或多个pod特性的pod的请求;
基于所述多个节点特性和所述一个或多个pod特性,选择所述多个工作节点中的选定工作节点以接收所述pod;以及
在所述选定工作节点上调度所述pod,以及
其中所述选定工作节点的所述代理被配置为:
接收所述pod被调度到所述选定工作节点的指示;以及
根据所述一个或多个参数配置所述选定工作节点以执行所述pod的工作负载。
16.根据权利要求15所述的基于容器的编排系统,其中所述选定工作节点还包括:
虚拟路由器,
其中所述选定工作节点的所述代理还被配置为:
响应于确定一个或多个参数指示所述虚拟路由器被配置为DPDK虚拟路由器,将所述工作负载配置为与所述DPDK虚拟路由器在所述选定工作节点的NUMA节点上执行。
17.根据权利要求16所述的基于容器的编排系统,其中所述虚拟路由器在所述选定工作节点的多个处理器的第一子集上执行,其中所述代理还被配置为在所述多个处理器的第二子集上执行所述工作负载,其中所述第一子集没有与所述第二子集共同的任何处理器。
18.根据权利要求15至17中任一项所述的基于容器的编排系统,
其中所述性能代理还被配置为提供与所述选定工作节点相关联的资源使用信息;以及
其中所述主节点基于所述资源使用信息来选择所述工作节点以接收所述pod。
19.根据权利要求18所述的基于容器的编排系统,其中所述主节点还被配置为:
基于所述资源使用信息来确定所述选定工作节点上当前可用CPU的数目;
基于所述一个或多个pod特性来确定针对所述pod的期望CPU的数目;以及
基于所述选定工作节点上的所述当前可用CPU和针对所述pod的期望CPU的所述数目来选择所述选定工作节点。
20.根据权利要求15至17中任一项所述的基于容器的编排系统,其中所述工作节点包括第一工作节点,并且其中所述性能代理还被配置为:
响应于确定所述第一工作节点的工作负载不符合NUMA节点分配,向所述主节点报告所述不符合,其中响应于接收到所述不符合的所述报告,所述主节点将具有所述工作负载的所述pod重新调度到与所述第一工作节点具有相同节点简档的第二工作节点。
21.一种计算机可读存储介质,所述计算机可读存储介质被编码有用于使一个或多个可编程处理器执行根据权利要求1至10中任一项所述的方法的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/455,867 US20230161631A1 (en) | 2021-11-19 | 2021-11-19 | Performance tuning in a network system |
US17/455,867 | 2021-11-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116155912A true CN116155912A (zh) | 2023-05-23 |
Family
ID=80952320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210305398.4A Pending CN116155912A (zh) | 2021-11-19 | 2022-03-25 | 网络系统中的性能调节 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230161631A1 (zh) |
EP (1) | EP4184323A1 (zh) |
CN (1) | CN116155912A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11956164B2 (en) * | 2022-04-29 | 2024-04-09 | Hewlett Packard Enterprise Development Lp | Remote management of a switch stack |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9571394B1 (en) | 2014-01-10 | 2017-02-14 | Juniper Networks, Inc. | Tunneled packet aggregation for virtual networks |
CN106445473B (zh) * | 2015-08-06 | 2019-12-06 | 华为技术有限公司 | 一种容器部署方法及装置 |
US10728145B2 (en) | 2018-08-30 | 2020-07-28 | Juniper Networks, Inc. | Multiple virtual network interface support for virtual execution elements |
US20210014114A1 (en) * | 2020-09-25 | 2021-01-14 | Intel Corporation | Methods, apparatus, and articles of manufacture for workload placement in an edge environment |
-
2021
- 2021-11-19 US US17/455,867 patent/US20230161631A1/en active Pending
-
2022
- 2022-03-25 EP EP22164449.5A patent/EP4184323A1/en active Pending
- 2022-03-25 CN CN202210305398.4A patent/CN116155912A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230161631A1 (en) | 2023-05-25 |
EP4184323A1 (en) | 2023-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11792126B2 (en) | Configuring service load balancers with specified backend virtual networks | |
US11716309B1 (en) | Allocating external IP addresses from isolated pools | |
US11074091B1 (en) | Deployment of microservices-based network controller | |
US10708082B1 (en) | Unified control plane for nested clusters in a virtualized computing infrastructure | |
US10728145B2 (en) | Multiple virtual network interface support for virtual execution elements | |
US11171830B2 (en) | Multiple networks for virtual execution elements | |
US11171834B1 (en) | Distributed virtualized computing infrastructure management | |
US11743182B2 (en) | Container networking interface for multiple types of interfaces | |
US20220334864A1 (en) | Plurality of smart network interface cards on a single compute node | |
US8589554B2 (en) | Intelligent and elastic resource pools for heterogeneous datacenter environments | |
US10382597B2 (en) | System and method for transport-layer level identification and isolation of container traffic | |
US20230308398A1 (en) | Latency-aware load balancer for topology-shifting software defined networks | |
EP4199457A1 (en) | Packet drop monitoring in a virtual router | |
US11206178B2 (en) | Systems and methods for network MTU management for clustered and federated storage systems | |
EP4184323A1 (en) | Performance tuning in a network system | |
US12010093B1 (en) | Allocating addresses from pools | |
EP4075757A1 (en) | A plurality of smart network interface cards on a single compute node | |
US20240095158A1 (en) | Deployment checks for a containerized sdn architecture system | |
EP4297359A1 (en) | Metric groups for software-defined network architectures |
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 |