CN110875848B - 控制器和用于配置虚拟执行元件的虚拟网络接口的方法 - Google Patents
控制器和用于配置虚拟执行元件的虚拟网络接口的方法 Download PDFInfo
- Publication number
- CN110875848B CN110875848B CN201910809461.6A CN201910809461A CN110875848B CN 110875848 B CN110875848 B CN 110875848B CN 201910809461 A CN201910809461 A CN 201910809461A CN 110875848 B CN110875848 B CN 110875848B
- Authority
- CN
- China
- Prior art keywords
- virtual
- network
- virtual network
- namespace
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/0893—Assignment of logical groups to network elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- 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
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- 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/0876—Aspects of the degree of configuration automation
- H04L41/0886—Fully automatic configuration
-
- 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/0895—Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
-
- 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/34—Signalling channels for network management communication
- H04L41/342—Signalling channels for network management communication between virtual entities, e.g. orchestrators, SDN or NFV entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3015—Name registration, generation or assignment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- 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
-
- 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
-
- 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/04—Network management architectures or arrangements
- H04L41/044—Network management architectures or arrangements comprising hierarchical management structures
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Automation & Control Theory (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及用于虚拟执行元件的多个网络。在一些示例中,一种方法包括由虚拟化计算基础设施的编排器接收命名空间规范数据,其指定命名空间、用于命名空间的第一虚拟网络和用于命名空间的第二虚拟网络;由编排器基于命名空间规范数据向虚拟化计算基础设施的网络控制器发送至少一个请求,以便为要部署到命名空间并在虚拟化计算基础设施的计算装置中实例化的虚拟执行元件创建第一虚拟网络和第二虚拟网络的相应虚拟网络接口;并且由网络控制器向计算装置发送接口配置数据,以配置用于第一虚拟网络的第一虚拟网络接口和用于第二虚拟网络的第二虚拟网络接口。
Description
技术领域
本公开涉及一种虚拟化计算基础设施,并且更具体地,涉及为部署到网络内的虚拟化计算基础设施的虚拟执行元件配置网络连接。
背景技术
在典型的云数据中心环境中,大量互连的服务器提供计算和/或存储能力来运行各种应用程序。例如,数据中心可以包括为订户(即,数据中心的客户)托管应用程序和服务的设施。例如,数据中心可以托管所有基础设施装置,例如,网络和存储系统、冗余电源和环境控制。在典型的数据中心,存储系统和应用服务器集群经由一层或多层物理网络交换机和路由器提供的高速交换结构互连。更复杂的数据中心为遍布全球的基础设施提供位于各种物理托管设施中的用户支持装置。
虚拟化数据中心正在成为现代信息技术(IT)基础设施的核心基础。特别地,现代数据中心已经广泛利用虚拟化环境,其中,在物理计算装置的底层计算平台上部署并执行虚拟主机,例如,虚拟机或容器。
数据中心内的虚拟化可以提供几个优势。一个优势是虚拟化可以显著提高效率。随着每物理CPU具有大量核心的多核微处理器架构的出现,底层物理计算装置(即,服务器)变得越来越强大,虚拟化变得更加容易和高效。第二个优势是虚拟化提供了对计算基础设施的重要控制。随着物理计算资源成为可替代资源,例如,在基于云的计算环境中,计算基础设施的供应和管理变得更加容易。因此,除了虚拟化提供的效率和更高的投资回报(ROI)之外,企业IT人员通常更喜欢数据中心的虚拟化计算集群,因为它们具有管理优势。
容器化是一种基于操作系统级虚拟化的虚拟化方案。容器是轻型便携式执行元件,用于相互隔离以及与主机隔离的应用程序。因为容器没有与主机硬件计算环境紧密耦合,所以应用程序可以绑定到容器图像(container image),并作为单个轻型包在支持底层容器架构的任何主机或虚拟主机上执行。因此,容器解决了如何使软件在不同的计算环境中工作的问题。容器提供了从一个计算环境持续运行到另一虚拟或物理计算环境的承诺。
由于容器固有的轻型特性,单个主机可以支持比传统虚拟机(VM)更多的容器实例。容器通常是短暂的(short lived),可以比VM更有效地创建和移动,并且也可以作为逻辑相关元件的组来管理(对于某些编排平台(orchestration platforms),例如,Kubernetes,有时称为”舱”(pods))。这些容器特征影响了对容器网络解决方案的需求:网络应该是敏捷的和可扩展的。虚拟机、容器和裸机服务器可能需要在同一个计算环境中共存,能够在应用程序的不同部署之间通信。容器网络还应该不知道如何使用用于部署容器化应用程序的多种编排平台。
管理应用程序执行的部署和基础设施的计算基础设施可能涉及两个主要角色:(1)编排——用于跨主机集群自动化应用程序的部署、扩展和操作,并提供计算基础设施,可能包括以容器为中心的计算基础设施;以及(2)网络管理——用于在网络基础设施中创建虚拟网络,以实现在虚拟执行元件(例如,容器或虚拟机)上运行的应用程序之间以及在传统(例如,物理)环境上运行的应用程序之间的分组通信。软件定义的网络有助于网络管理。
发明内容
通常,描述了用于为虚拟执行元件指定网络基础设施的虚拟网络列表并创建虚拟执行元件可用于经由虚拟网络通信的多个虚拟网络接口的技术。例如,虚拟化计算基础设施命名空间的命名空间规范数据可以指定多个虚拟网络。基于命名空间规范数据,虚拟化计算基础设施的编排器可以将标有命名空间的虚拟执行元件部署到命名空间。基于命名空间规范数据中指定的多个虚拟网络,编排器可以使虚拟化计算基础设施的网络控制器为多个虚拟网络配置具有相应虚拟网络接口的虚拟执行元件。
在一些示例中,命名空间规范数据中指定的多个虚拟网络构成部署到命名空间的虚拟执行元件的主要虚拟网络组。要部署到命名空间的虚拟执行元件的配置数据还可以包括指定次要虚拟网络组的网络注释。在一些情况下,次要虚拟网络组中的至少一个不由命名空间规范数据表示(即,不在主要虚拟网络组中)。在一些示例中,对应的虚拟执行元件配置有虚拟网络接口,用于命名空间规范数据中指定的主要虚拟网络组的每个虚拟网络以及用于虚拟执行元件的配置数据中指定的次要虚拟网络组的每个虚拟网络。
这些技术可以提供一个或多个技术优势。例如,通过在命名空间规范数据中指定多个虚拟网络,部署到相应命名空间的所有虚拟执行元件将被配置为经由多个虚拟网络中的任何一个进行通信。作为另一示例,通过简单地在虚拟执行元件的命名空间中包括指定虚拟网络的注释,虚拟执行元件可以有效地分散到主要虚拟网络组。以前创建命名空间的方法使每个命名空间配置只能指定一个虚拟网络,这限制了可以在虚拟执行元件中执行的应用程序的类型。作为另一示例,因为虚拟执行元件的配置数据可以指定次要虚拟网络组,所以如本文所述部署的虚拟执行元件可以配置有用于为命名空间指定的主要虚拟网络组和为虚拟执行元件指定的次要虚拟网络组中的每个虚拟网络的虚拟网络接口。这可以为用户提供高度的多功能性以及对虚拟执行元件间通信的网络策略的粗粒度和细粒度控制。
在一个示例中,一种控制器包括一个或多个计算装置,其中,所述一个或多个计算装置中的每一个包括耦合到存储装置的处理电路,其中,所述控制器还包括:虚拟化计算基础设施的编排器,其中,所述编排器被配置为由所述处理电路执行,其中,所述编排器被配置为:接收命名空间规范数据,其指定命名空间、用于命名空间的第一虚拟网络和用于命名空间的第二虚拟网络;并且基于命名空间规范数据向虚拟化计算基础设施的网络控制器发送至少一个请求,以便为要部署到命名空间并在虚拟化计算基础设施的计算装置中实例化的虚拟执行元件创建第一虚拟网络和第二虚拟网络的相应虚拟网络接口;以及网络控制器,其中,所述网络控制器被配置为由所述处理电路执行,其中,所述网络控制器被配置为:向计算装置发送接口配置数据,以配置用于第一虚拟网络的第一虚拟网络接口和用于第二虚拟网络的第二虚拟网络接口。
在另一示例中,一种方法包括:由虚拟化计算基础设施的编排器接收命名空间规范数据,其指定命名空间、用于命名空间的第一虚拟网络和用于命名空间的第二虚拟网络;并且由编排器基于命名空间规范数据向虚拟化计算基础设施的网络控制器发送至少一个请求,以便为要部署到命名空间并在虚拟化计算基础设施的计算装置中实例化的虚拟执行元件创建第一虚拟网络和第二虚拟网络的相应虚拟网络接口;并且由网络控制器向计算装置发送接口配置数据,以配置用于第一虚拟网络的第一虚拟网络接口和用于第二虚拟网络的第二虚拟网络接口。
在另一示例中,一种非暂时性计算机可读介质包括指令,用于使一个或多个处理器:执行虚拟化计算基础设施的编排器,以接收命名空间规范数据,其指定命名空间、用于命名空间的第一虚拟网络和用于命名空间的第二虚拟网络;执行编排器,以基于命名空间规范数据向虚拟化计算基础设施的网络控制器发送至少一个请求,以便为要部署到命名空间并在虚拟化计算基础设施的计算装置中实例化的虚拟执行元件创建第一虚拟网络和第二虚拟网络的相应虚拟网络接口;并且执行网络控制器,以向计算装置发送接口配置数据,以配置用于第一虚拟网络的第一虚拟网络接口和用于第二虚拟网络的第二虚拟网络接口。
在附图和以下描述中阐述本公开的一个或多个实施例的细节。通过说明书和附图以及权利要求书,本公开的其他特征、目的和优点将变得显而易见。
附图说明
图1是示出可以实现本文描述的技术的示例的示例计算基础设施的框图;
图2是根据本公开中描述的技术的示例计算装置的框图,该示例计算装置包括用于为共享至少一个虚拟网络接口的一组一个或多个虚拟执行元件配置多个虚拟网络接口的网络模块;
图3是根据本公开中描述的技术的示例计算装置的框图;
图4是示出根据本公开中描述的技术使用单个网络模块为虚拟执行元件创建多个网络虚拟接口的流程图;
图5是示出根据本公开中描述的技术基于命名空间为虚拟执行元件创建多个网络虚拟接口的流程图。
在整个说明书和附图中,相同的附图标记表示相同的元件。
具体实施方式
图1是示出示例计算基础设施8的框图,其中,可以实现本文描述的技术的示例。通常,数据中心10为客户站点11(图示为”客户11”)的应用程序和服务提供操作环境,客户站点11具有通过服务提供商网络7耦合到数据中心的一个或多个客户网络。例如,数据中心10可以是主机基础设施装置,例如,网络和存储系统、冗余电源和环境控制。服务提供商网络7耦合到公共网络15,公共网络15可以表示由其他提供商管理的一个或多个网络,因此可以形成大规模公共网络基础设施(例如,互联网)的一部分。公共网络15可以表示例如局域网(LAN)、广域网(WAN)、互联网、虚拟LAN(VLAN)、企业LAN、第三层虚拟专用网(VPN)、由操作服务提供商网络7的服务提供商操作的互联网协议(IP)内联网、企业IP网络或其某种组合。
尽管客户站点11和公共网络15主要被图示和描述为服务提供商网络7的边缘网络,但是在一些示例中,客户站点11和公共网络15中的一个或多个可以是数据中心10或另一数据中心内的租户网络。例如,数据中心10可以托管多个租户(客户),每个租户与一个或多个虚拟专用网络(VPN)相关联,每个虚拟专用网络可以实现一个客户站点11。
服务提供商网络7提供到连接的客户站点11、数据中心10和公共网络15的基于分组的连接。服务提供商网络7可以表示由服务提供商拥有和运营的网络,以互连多个网络。服务提供商网络7可以实现多协议标签交换(MPLS)转发,并且在这种情况下,可以被称为MPLS网络或MPLS骨干网。在一些情况下,服务提供商网络7表示多个互连的自治系统,例如,互联网,其提供来自一个或多个服务提供商的服务。
在一些示例中,数据中心10可以表示许多地理上分布的网络数据中心中的一个。如图1的示例所示,数据中心10可以是为客户11提供网络服务的设施。服务提供商的客户可以是集体实体,例如,企业和政府或个人。例如,网络数据中心可以为几个企业和最终用户托管网络服务。其他示例性服务可以包括数据存储、虚拟专用网络、流量工程、文件服务、数据挖掘、科学或超级计算等。尽管被图示为服务提供商网络7的独立边缘网络,但是数据中心10的元件(例如,一个或多个物理网络功能(PNF)或虚拟网络功能(VNF))可以包括在服务提供商网络7的核心中。
在该示例中,数据中心10包括通过由一层或多层物理网络交换机和路由器提供的交换结构14互连的存储和/或计算服务器,服务器12A-12X(本文称为”服务器12”)被描绘为耦合到架顶交换机16A-16N。服务器12是计算装置,并且在本文也可以被称为“主机”或“主机装置”。尽管在图1中仅详细示出了耦合到TOR交换机16A的服务器12A,但是数据中心10可以包括耦合到数据中心10的其他TOR交换机16的许多额外服务器。
在所示示例中的交换机结构14包括互连的架顶(TOR)(或其他“叶”)交换机16A-16N(统称为”TOR交换机16”),这些交换机耦合到机箱(或“主干”或“核心”)交换机18A-18M(统称为“机架式交换机18”)的分布层。虽然未示出,但是数据中心10还可以包括例如一个或多个非边缘交换机、路由器、集线器、网关、诸如防火墙等安全装置、入侵检测和/或入侵防御装置、服务器、计算机终端、膝上型计算机、打印机、数据库、诸如蜂窝电话或个人数字助理等无线移动装置、无线接入点、网桥、电缆调制解调器、应用加速器或其他网络装置。数据中心10还可以包括一个或多个物理网络功能(PNF),例如,物理防火墙、负载平衡器、路由器、路由反射器、宽带网络网关(BNG)、演进分组核心或其他蜂窝网络元件以及其他PNF。
在这个示例中,TOR交换机16和机架式交换机18向服务器12提供到IP结构20和服务提供商网络7的冗余(多宿)连接。机架式交换机18聚合流量流,并在TOR交换机16之间提供连接。TOR交换机16可以是提供第二层(例如,MAC)和/或第三层(例如,IP)路由和/或交换功能的网络装置。TOR交换机16和机架式交换机18可以均包括一个或多个处理器和存储器,可以执行一个或多个软件进程。机架式交换机18耦合到IP结构20,该结构可以执行第3层路由,以通过服务提供商网络7在数据中心10和客户站点11之间路由网络流量。数据中心10的交换架构仅仅是一个示例。例如,其他交换架构可以具有更多或更少的交换层。
术语“分组流”、“流量流”或简单的“流”是指源自特定源装置或端点并发送到特定目的装置或端点的一组分组。单个分组流可以由5元组来识别,例如:<源网络地址、目的网络地址、源端口、目的端口、协议>。这个5元组通常识别接收到的分组对应的分组流。n元组是指从5元组中抽取的任何n个项目。例如,分组的二元组可以指分组的<源网络地址、目的网络地址>或<源网络地址、源端口>的组合。
服务器12可以均表示计算服务器、交换机或存储服务器。例如,每个服务器12可以表示计算装置,例如,基于x86处理器的服务器,其被配置为根据本文描述的技术操作。服务器12可以为NFV架构提供网络功能虚拟化基础设施(NFVI)。
服务器12中的任何服务器可以通过虚拟化服务器的资源来配置虚拟执行元件,以提供在服务器上执行的一个或多个进程(应用程序)之间的隔离。“基于管理程序”或“硬件级”或“平台”虚拟化是指创建虚拟机,每个虚拟机都包括用于执行一个或多个进程的客户操作系统。通常,虚拟机提供虚拟化/客户操作系统,用于在隔离的虚拟环境中执行应用程序。因为虚拟机是从主机服务器的物理硬件虚拟化的,所以执行应用程序与主机硬件和其他虚拟机都隔离。每个虚拟机可以配置有一个或多个虚拟网络接口,用于在相应的虚拟网络上通信。
虚拟网络是在物理网络之上实现的逻辑结构。虚拟网络可用于替代基于VLAN的隔离,并在虚拟化数据中心(例如,数据中心10)中提供多租户。每个租户或应用程序可以有一个或多个虚拟网络。除非安全策略明确允许,否则每个虚拟网络可以与所有其他虚拟网络隔离。
虚拟网络可以使用数据中心10的边缘路由器(图1中未示出)连接到物理多协议标签交换(MPLS)第3层虚拟专用网络(L3VPN)和以太网虚拟专用网络(EVPN)网络并在其上扩展。虚拟网络也可以用来实现网络功能虚拟化(NFV)和服务链接。
虚拟网络可以使用多种机制来实现。例如,每个虚拟网络可以实现为虚拟局域网(VLAN)、虚拟专用网络(VPN)等。虚拟网络也可以使用两个网络来实现——由IP结构20和交换结构14组成的物理底层网络和虚拟覆盖网络。物理底层网络的作用是提供“IP结构”,该结构提供从任何物理装置(服务器、存储装置、路由器或交换机)到任何其他物理装置的单播IP连接。底层网络可以提供从网络中的任何点到网络中的任何其他点的统一的低延迟、无阻塞、高带宽连接。
如下面关于虚拟路由器(vROUTER)21A进一步描述的,在虚拟服务器12的内核或管理程序中运行的虚拟路由器使用其间的动态“隧道”的网格在物理底层网络之上创建虚拟覆盖网络。例如,这些覆盖隧道可以是GRE/UDP隧道或VXLAN隧道或NVGRE隧道上的MPLS。底层物理路由器和交换机可能不包含任何每个租户的状态,例如,任何介质访问控制(MAC)地址、IP地址或虚拟机或其他虚拟执行元件的策略。底层物理路由器和交换机的转发表可能只包含物理服务器12的IP前缀或MAC地址。(将虚拟网络连接到物理网络的网关路由器或交换机是例外,可能包含租户MAC或IP地址。)
服务器12的虚拟路由器21确实包含每个租户的状态。虚拟路由器包含每个虚拟网络的单独转发表(路由实例)。该转发表包含虚拟机或其他虚拟执行元件(例如,容器舱)的IP前缀(在第3层覆盖的情况下)或MAC地址(在第2层覆盖的情况下)。没有单个虚拟路由器21需要包含整个数据中心中所有虚拟机的所有IP前缀或所有MAC地址。给定的虚拟路由器21只需要包含在服务器12上本地存在的那些路由实例(即,在服务器12上存在至少一个虚拟执行元件)。
网络控制器24的控制平面节点或物理网关路由器(或交换机)之间的控制平面协议可以是BGP(并且可以是用于管理的Netconf)。这是相同的控制平面协议,其也可以用于MPLS L3VPN和MPLS EVPN。例如,网络控制器24和虚拟路由器21之间的协议可以基于XMPP。
“基于容器的”或”操作系统”虚拟化是指操作系统的虚拟化,以在一台机器(虚拟或物理)上运行多个隔离系统。这种隔离系统表示容器,例如,由开源DOCKER容器应用程序或CoreOSRkt(“Rocket”)提供的容器。像虚拟机一样,每个容器都是虚拟化的,并且可以与主机和其他容器保持隔离。然而,与虚拟机不同,每个容器可以省略单独的操作系统,只提供一个应用程序包(suite)和专用库。通常,容器由作为隔离的用户空间实例的主机执行,并且可以与主机上执行的其他容器共享操作系统和公共库。因此,与虚拟机相比,容器可能需要更少的处理能力、存储和网络资源。一组一个或多个容器可以被配置为共享一个或多个虚拟网络接口,用于在相应的虚拟网络上通信。
在一些示例中,容器由其主机内核管理,以允许限制和优先化资源(CPU、内存、块I/O、网络等),而不需要启动任何虚拟机,在某些情况下,使用命名空间隔离功能,该功能允许完全隔离操作环境的应用程序(例如,给定容器)的视图,包括进程树、网络、用户标识符和安装的文件系统。在一些示例中,容器可以根据Linux容器(LXC)来部署,这是一种操作系统级虚拟化方法,用于使用单个Linux内核在控制主机上运行多个隔离的Linux系统(容器)。LXC是一种操作系统级虚拟化方法,用于在单个控制主机(LXC主机)上运行多个隔离的Linux系统(容器)。LXC不使用虚拟机(尽管LXC可能由虚拟机托管)。相反,LXC使用具有自己的CPU、内存、块I/O、网络和/或其他资源空间的虚拟环境。LXC资源控制机制由LXC主机上的Linux内核中的命名空间和cgroups提供。Linux命名空间不同于Kubernetes或其他编排系统命名空间。关于容器的其他信息可在2016年7月9日最后一次访问的docs.docker.com/engine/understanding-docker可得到的Docker公司的”Docker概述”中找到。容器化方法的其他示例包括OpenVZ、FreeBSD监狱、AIX工作负载分区和Solaris容器。因此,如本文所使用的,术语“容器”不仅可以包括LXC风格的容器,还可以包括虚拟化引擎、虚拟专用服务器、筒仓或监狱中的任何一个或多个。
服务器12托管一个或多个虚拟网络的虚拟网络端点,这些虚拟网络在此处由IP结构20和交换结构14表示的物理网络上操作。尽管主要针对基于数据中心的交换网络进行了描述,但是诸如服务提供商网络7等其他物理网络可以作为一个或多个虚拟网络的底层。
每个服务器12可以托管一个或多个虚拟执行元件,每个虚拟执行元件具有用于在物理网络中配置的一个或多个虚拟网络的至少一个虚拟网络端点。虚拟网络的虚拟网络端点可以表示共享虚拟网络的虚拟网络接口的一个或多个虚拟执行元件。例如,虚拟网络端点可以是虚拟机、一组一个或多个容器(例如,舱)或另一个或多个其他虚拟执行元件,例如,虚拟网络的第3层端点。术语“虚拟执行元件”包括虚拟机、容器和为应用程序提供至少部分独立的执行环境的其他虚拟化计算资源。术语“虚拟执行元件”也可以包括一个或多个容器的舱。如图1所示,服务器12A以具有一个或多个容器的舱22A的形式托管一个虚拟网络端点。然而,给定服务器12的硬件资源限制,服务器12可以执行尽可能多的虚拟执行元件。每个虚拟网络端点可以使用一个或多个虚拟网络接口来执行分组I/O或以其他方式处理分组。例如,虚拟网络端点可以使用由NIC 13A启用的一个虚拟硬件组件(例如,SR-IOV虚拟功能)来执行分组I/O,并在与TOR交换机16A的一个或多个通信链路上接收/发送分组。下面描述虚拟网络接口的其他示例。
每个服务器12包括至少一个网络接口卡(NIC)13,每个网络接口卡包括至少一个接口,用于通过通信链路与TOR交换机16交换分组。例如,服务器12A包括NIC 13A。任何NIC13都可以为虚拟化I/O(I/O)提供一个或多个虚拟硬件组件,例如,虚拟路由器21。用于I/O的虚拟硬件组件可以是物理NIC 13的虚拟化(“物理功能”)。例如,在外围组件接口特殊兴趣组SR-IOV规范中描述的单根I/O虚拟化(SR-IOV)中,网络接口卡(或”网络适配器”)的PCIe物理功能被虚拟化,以将一个或多个虚拟网络接口呈现为供在服务器12上执行的相应端点使用的”虚拟功能”。以这种方式,虚拟网络端点可以共享相同的PCIe物理硬件资源,并且虚拟功能是虚拟硬件组件的示例。作为另一示例,一个或多个服务器12可以实现半虚拟化框架Virtio,该虚拟化框架例如可用于Linux操作系统,其提供模拟NIC功能,作为虚拟硬件组件的类型,以向虚拟网络端点提供虚拟网络接口。作为另一示例,一个或多个服务器12可以实现Open vSwitch,以在托管的虚拟机的一个或多个虚拟NIC(vNIC)之间执行分布式虚拟多层交换,其中,这种vNIC还可以表示向虚拟网络端点提供虚拟网络接口的虚拟硬件组件的类型。在一些情况下,虚拟硬件组件是虚拟I/O(例如,NIC)组件。在某些情况下,虚拟硬件组件是SR-IOV虚拟功能。在一些示例中,服务器12中的任何服务器可以实现Linux桥,该Linux桥模拟硬件桥,并且在服务器的虚拟网络接口之间或者在服务器的虚拟网络接口和服务器的物理网络接口之间转发分组。对于由服务器托管的容器的Docker实现,在容器之间交换分组的在服务器上执行的Linux桥或其他操作系统桥可以被称为“Docker桥”。本文使用的术语“虚拟路由器”可以包括Open vSwitch(OVS)、OVS桥、Linux桥、Docker桥或位于主机装置上的并且在一个或多个虚拟网络的虚拟网络端点之间执行交换、桥接或路由分组的其他装置和/或软件,其中,虚拟网络端点由一个或多个服务器12托管。
任何NIC 13可以包括内部装置交换机,以在与NIC相关联的虚拟硬件组件之间切换数据。例如,对于支持SR-IOV的NIC,内部装置交换机可以是虚拟以太网桥(VEB),以在SR-IOV虚拟功能之间切换,并且相应地,在被配置为使用SR-IOV虚拟功能的端点之间切换,其中,每个端点可以包括客户操作系统。内部装置交换机也可以称为网卡交换机,或者,对于SR-IOV实现,称为SR-IOV NIC交换机。与NIC 13A相关联的虚拟硬件组件可以与第2层目的地址相关联,该地址可以由NIC 13A或负责配置NIC 13A的软件进程分配。物理硬件组件(或SR-IOV实现的”物理功能”)也与第2层目的地址相关联。
为了在与NIC 13A相关联的虚拟硬件组件之间交换数据,内部装置交换机可以执行第2层转发,以在NIC 13A的虚拟硬件组件和物理硬件组件之间交换或桥接第2层分组。每个虚拟硬件组件可以位于虚拟网络的虚拟局域网(VLAN)上,用于使用虚拟硬件组件进行I/O的虚拟网络端点。
一个或多个服务器12可以均包括虚拟路由器21,虚拟路由器21为数据中心10内的相应虚拟网络执行一个或多个路由实例,以提供虚拟网络接口并在虚拟网络端点之间路由分组。每个路由实例可以与网络转发表相关联。每个路由实例可以表示互联网协议-虚拟专用网络(IP-VPN)的虚拟路由和转发实例(VRF)。服务器12A的虚拟路由器21A(图示为”vROUTER21A”)例如从数据中心10的底层物理网络结构(即,IP结构20和交换结构14)接收的分组可以包括外部报头,以允许物理网络结构将有效载荷或“内部分组”隧道传输到执行虚拟路由器的服务器12A的网络接口卡13A的物理网络地址。外部报头不仅可以包括服务器的网络接口卡13A的物理网络地址,还可以包括虚拟网络标识符,例如,识别一个虚拟网络的VxLAN标签或多协议标签交换(MPLS)标签以及由虚拟路由器21A执行的相应路由实例。内部分组包括具有目的网络地址的内部报头,该目的网络地址符合由虚拟网络标识符识别的虚拟网络的虚拟网络寻址空间。
虚拟路由器21终止虚拟网络覆盖隧道,并基于分组的隧道封装报头确定接收分组的虚拟网络,并将分组转发到分组的适当目的地虚拟网络端点。对于服务器12A,例如,对于从由服务器12A(例如,舱22A)托管的虚拟网络端点输出的每个分组,虚拟路由器21A附着用于指示分组的虚拟网络的隧道封装报头,以生成封装的或“隧道”分组,并且虚拟路由器21A经由虚拟网络的覆盖隧道将封装的分组输出到物理目的地计算装置,例如,服务器12中的另一个。如本文所使用的,虚拟路由器21可以执行隧道端点的操作,以封装由虚拟网络端点发起的内部分组,以生成隧道分组并解封装隧道分组,以获得用于路由到其他虚拟网络端点的内部分组。
计算基础设施8实现自动化平台,用于在服务器12上自动化虚拟执行元件的部署、扩展和操作,以提供用于执行应用工作负载和服务的虚拟化基础设施。在一些示例中,平台可以是容器编排平台,其提供以容器为中心的基础设施,用于自动化容器的部署、缩放(scaling)和操作,以提供以容器为中心的基础设施。在虚拟化计算基础设施的上下文中的“编排”通常是指向编排平台可用的主机服务器提供、调度和管理虚拟执行元件和/或在这种虚拟执行元件上执行的应用程序和服务。具体地,容器编排允许容器协调,并且是指例如通过容器编排平台将容器部署、管理、缩放和配置到主机服务器。编排平台的示例实例包括Kubernetes、Docker Swarm、Mesos/Marathon、OpenShift、OpenStack、VMware和AmazonECS。
计算基础设施8的自动化平台的元件至少包括服务器12、编排器23和网络控制器24。使用基于集群的框架可以将虚拟执行元件部署到虚拟化计算环境,在基于集群的框架中,集群的集群主节点管理容器到集群的一个或多个集群从节点的部署和操作。本文使用的术语“主节点”和“从节点”包括用于类似装置的不同编排平台术语,这些术语区分集群的主要管理元件和集群的主要虚拟执行元件托管装置。例如,Kubernetes平台使用术语“集群主节点”和“从节点”,而Docker Swarm平台是指集群管理器和集群节点。
编排器23和网络控制器24一起实现计算基础设施8的控制器5。编排器23和网络控制器24可以在单独的计算装置或同一计算装置上执行。编排器23和网络控制器24中的每一个都可以是在一个或多个计算装置上执行的分布式应用程序。编排器23和网络控制器24可以为一个或多个集群实现相应的主节点,每个集群具有由相应的服务器12实现的一个或多个从节点。通常,网络控制器24控制数据中心10结构的网络配置,以例如建立一个或多个虚拟网络,用于虚拟网络端点之间的分组通信。网络控制器24提供逻辑上并且在某些情况下物理上集中的控制器,用于促进数据中心10内的一个或多个虚拟网络的操作。在一些示例中,网络控制器24可以响应于从编排器23和/或管理员/操作员接收的配置输入而操作。关于与数据中心10的其他装置或其他软件定义的网络一起操作的网络控制器24的额外信息可见2013年6月5日提交的名称为“虚拟网络分组流的物理链路的确定”(PHYSICAL PATHDETERMINATION FOR VIRTUAL NETWORK PACKET FLOWS)的国际申请号PCT/US2013/044378和2014年3月26日提交的名称为“虚拟网络的隧道分组聚合”(Tunneled PacketAggregation for Virtual Networks)的美国专利申请No.14/226,509,这两个申请都通过引用结合于此,如同在此完全阐述一样。美国专利申请No.14/226,509还包括虚拟路由器的进一步描述,例如,虚拟路由器21A。
通常,编排器23控制跨服务器12集群的虚拟执行元件的部署、缩放和操作,并提供计算基础设施,其可以包括以容器为中心的计算基础设施。编排器23以及在某些情况下的网络控制器24可以为一个或多个Kubernetes集群实现相应的集群主节点。Kubernetes是容器管理平台,提供跨公共云和私有云的便携性,每个云都可以为容器管理平台提供虚拟化基础设施。
Kubernetes使用各种“对象”进行操作——这些实体表示Kubernetes集群的一种状态。Kubernetes对象可以包括名称、命名空间、标签、注释、字段选择器和推荐标签的任意组合。例如,Kubernetes集群可以包括一个或多个“命名空间”对象。在某些情况下,Kubernes集群的每个命名空间都与Kubernes集群的其他命名空间隔离开来。命名空间对象可以提高Kubernetes集群的组织、安全性和性能中的至少一个。作为示例,舱可以与命名空间相关联,从而将舱与命名空间的特征(例如,虚拟网络)相关联。该特征可以使多个新创建的舱通过与一组共同的特征相关联来组织。可以根据定义命名空间的特征(包括命名空间名称)的命名空间规范数据来创建命名空间。在一个示例中,命名空间被命名为”我的命名空间”,并且每个新创建的舱可以与由”我的命名空间”表示的一组特征相关联。此外,Kubernetes还包含一个“默认”命名空间。如果新创建的舱没有指定命名空间,则新创建的舱可能与“默认”命名空间的特征相关联。
命名空间可以使一个Kubernetes集群被多个用户、用户团队或具有多个应用程序的单个用户使用。此外,每个用户、用户团队或应用程序可以在一个命名空间内与集群的每个其他用户隔离。因此,命名空间中的Kubernetes集群的每个用户都像Kubernetes集群的唯一用户一样操作。本公开的技术包括将多个虚拟网络与单个命名空间相关联的能力。这样,相应命名空间内的用户能够访问与该命名空间相关联的虚拟网络的每个虚拟网络,包括充当虚拟网络组的虚拟网络端点的虚拟执行元件。
由编排器23和网络控制器24管理的虚拟化计算基础设施可以根据几种模式中的一种进行通信。在默认模式下,所有舱都可以与所有其他舱通信,而无需使用网络地址转换(NAT)。网络控制器23创建由所有命名空间共享的虚拟网络,从中分配服务和舱IP地址。集群中产生的所有命名空间中的所有舱都能够相互通信。从编排器23中配置的舱子网被分配所有舱的IP地址。
在命名空间隔离模式下,群集管理员可以配置命名空间注释来打开隔离。因此,该命名空间中的服务不能从其他命名空间访问,除非安全组或网络策略被明确定义为允许访问。可以通过用指示注释命名空间规范数据来将命名空间配置为独立的。例如:
隔离:真
标注为“隔离”舱和服务隔离的命名空间具有以下网络行为:
·在隔离的命名空间中创建的所有舱彼此之间具有网络可达性;
·群集中其他命名空间中的舱无法到达隔离的命名空间中的舱;
·来自其他命名空间的舱无法到达隔离的命名空间中的服务。
在自定义隔离模式下,管理员和应用程序开发人员可以添加注释来指定在其中提供命名空间中的一个舱或所有舱的虚拟网络。指定该自定义虚拟网络的一个示例注释是:
网络:<fq_network_name>
如果在舱规范(舱配置数据)上配置了此注释,则舱将在命名网络中启动。如果在命名空间规范(命名空间规范数据)中配置了注释,则命名空间中的所有舱都将在提供的网络中启动。在一些示例中,网络控制器24必须在虚拟网络名称可用于注释舱或命名空间之前在计算基础设施8中配置虚拟网络。在一些示例中,网络控制器24可以在计算基础设施8中配置额外虚拟网络,作为部署将使用额外虚拟网络的虚拟执行元件的一部分。
具有上述模式的舱的网络模型可以使用不同的系统和系统的组合来实现,例如,轨迹和钨结构(Contrail and Tungsten Fabric)。
在图1所示的示例中,编排器23接受命名空间规范数据27,作为输入。命名空间规范数据27可以用人类可读的数据串行化语言编码,例如,YAML Ain’t标记语言(YAML)、JavaScript Object Notation(JSON)等。命名空间规范数据27可以表示“命名空间规范”或“命名空间spec.”。
根据本公开中描述的技术,用于指定命名空间的命名空间规范数据27包括该命名空间的多个虚拟网络的列表,更具体地,用于部署到该命名空间的虚拟执行元件之间的通信的多个虚拟网络的列表。
在一些示例中,命名空间规范数据27指定对应于由网络系统2中的网络控制器24配置的虚拟网络的多个虚拟网络的列表。虚拟网络可以使用任何虚拟网络标识符来指定,例如,名称、UUID或代码。以下是命名空间“admin”的命名空间规范数据27的示例:
在上面的示例中,网络控制器24提供商指定用于指定每个虚拟网络的模式“提供商/网络”。四个虚拟网络用虚拟网络名称指定:“管理网络”、“开发网络”、“质量保证网络”和“人力资源网络”。
命名空间规范数据27的其他示例可以使用不同的模式来指定虚拟网络。例如,下面是命名空间规范数据27的另一示例:
以上示例指定了使用Kubernetes网络(CustomResourceDefinition)对象的四个虚拟网络,以使虚拟网络规范符合Kubernetes自定义资源定义事实标准(KubernetesCustom Resource Definition De-facto Standard),该标准规定将Kubernetes舱连接到一个或多个虚拟或物理网络的要求和过程,包括使用容器网络接口(CNI)连接舱网络的插件要求。
编排器23可以处理命名空间规范数据27,以生成对应于相应命名空间的配置对象,其中,配置对象包括为命名空间指定的多个虚拟网络的相应虚拟网络配置对象。在编排器23为一个或多个Kubernetes集群实现相应的集群主节点的示例中,命名空间表示Kubernetes集群内的虚拟集群。
命名空间规范数据27中指定的虚拟网络可以表示主要虚拟网络组,其中,每个虚拟网络在主要虚拟网络组中。编排器23在请求29中将虚拟网络配置对象传递给网络控制器24,以向命名空间请求将虚拟执行元件的虚拟网络接口部署在服务器12中。
多个虚拟网络可以由网络控制器24独立于编排器23来配置。这样,编排器23可以作为命名空间规范数据27的“通过”站来操作,例如,编排器23产生命名空间规范数据27的命名空间的记录,然后将从命名空间规范数据27收集的虚拟网络配置对象或其他虚拟网络配置数据传输到网络控制器24进行处理。虽然网络控制器24可以配置由命名空间规范数据27指定的多个虚拟网络,但是编排器23是被实例化为多个虚拟网络的虚拟网络端点的虚拟执行元件(例如,舱、容器、虚拟机等)的缔造者(architect)。
舱22A是Kubernetes舱,是虚拟网络端点的一个示例。舱是一组一个或多个逻辑相关的容器(图1中未示出)、容器的共享存储以及如何运行容器的选项。在为执行而实例化的情况下,舱也可以被称为”舱副本”。舱22A的每个容器都是虚拟执行元件的一个示例。舱的容器总是位于同一台服务器上,共同调度,并在共享上下文中运行。舱的共享上下文可以是一组Linux命名空间、cgroups和隔离的其他方面。在舱的上下文中,单独的应用程序可能会应用进一步的子隔离。通常,舱中的容器有一个公共的IP地址和端口空间,并且能够经由本地主机相互检测。因为容器具有共享的上下文,所以舱中的容器也可以使用进程间通信(IPC)相互通信。IPC的示例包括SystemV信号量(semaphores)或POSIX共享内存。通常,属于不同舱的容器具有不同的IP地址,并且在没有启用该功能的配置的情况下,无法通过IPC进行通信。属于不同舱的容器通常经由舱IP地址相互通信。
编排器23管理虚拟执行元件到服务器12的部署。虚拟执行元件规范数据(图1中未示出)可以包括对应虚拟执行元件的规范,例如,舱。例如,虚拟执行元件规范数据可以包括在包含用于在计算基础设施8内部署舱22A的信息的人类可读文件中。更具体地,对应于舱22A的人类可读文件可以在YAML或JSON中编码。虚拟执行元件规范数据可以包括指定与舱22A相关联的命名空间的命名空间对象,例如,命名空间规范数据27中指示的命名空间。命名空间表示舱22A的主要虚拟网络组。额外地或替代地,舱22A的虚拟执行元件规范数据可以包括指定次要虚拟网络组的网络注释,其中,次要虚拟网络组的至少一个虚拟网络不由舱22A的命名空间指定。主要虚拟网络组和次要虚拟网络组一起构成虚拟网络的组合组,其中,舱22A将配置有相应的虚拟网络接口。
编排器23获得对应于虚拟执行元件的虚拟执行元件规范数据,其中,虚拟执行元件规范数据指定一组虚拟网络(例如,次要虚拟网络组)。编排器23可以处理虚拟执行元件规范数据,以生成对应于相应命名空间的配置对象,其中,配置对象包括为虚拟执行元件指定的多个虚拟网络的相应虚拟网络配置对象。
在一些示例中,为了指定舱应该连接到的虚拟网络,对应于舱的虚拟执行元件规范数据可以包括网络注释,以指定特定的虚拟网络。虚拟执行元件规范数据可以包含在舱规范中。虚拟执行元件规范数据可以指定舱名称、至少一个命名空间或其他对象。网络注释可以包括舱对象注释,以指示虚拟网络,其中,舱将实例化。注释可以包括一个或多个“NetworkAttachmentDefinition”对象,这些对象指定一个或多个虚拟网络,其中,舱将实例化。下面的JSON数据给出了与舱相对应的一个示例人类可读文件:
如上面的数据所示,数据指定了一种对象:舱。该舱名为“我的舱”(my-pod),命名空间为“我的命名空间”(my-namespace)。注释指定了三个虚拟网络”网络-a”(net-a)、”网络-b”(net-b)和”网络-c”(net-c)。在本示例中,”网络-a”和”网络-b”位于”我的命名空间”内,然而,”网络-c”位于另一命名空间”其他-ns”(other-ns)内。这样,对应于容器的虚拟执行元件规范数据可以注释舱将被放置在其中的虚拟网络的列表,并且虚拟网络的列表可以包括在舱的命名空间或另一命名空间内的虚拟网络。
对应于舱的虚拟执行元件规范数据还可以包括连接到一个或多个虚拟网络的舱特定的要求,例如,与注释中指定的至少一个虚拟网络相关联的特定的IP地址和媒体访问控制(MAC)地址。例如,虚拟执行元件规范数据可以由以下JSON数据给出:
可以为网络连接映射定义JSON键。例如,“名称”(name)、“命名空间”(namespace)和“ips”表示JSON键。“名称”键是NetworkAttachmentDefinition对象的名称,位于舱的命名空间(如果“命名空间”键丢失或为空)或由“命名空间”键指定的另一命名空间中。在一些示例中,“命名空间”键定义值类型字符串,并给出由“名称”键命名的NetworkAttachmentDefinition对象的命名空间。“ips”键是字符串数组类型的值。此外,“IP”键要求插件处理网络连接,以将给定的IP地址分配给舱。IPS键的值必须包含至少一个数组元素,并且每个元素必须是有效的IPv4或IPv6地址。如果该值无效则网络连接选择注释将无效,并且在舱的实现过程中被CNI插件忽略。下面的JSON片段给出了一个示例“ips”键:
CNI委派插件是将舱网络连接/分离操作委派给符合CNI规范的其他插件(例如,网络模块17A)的实现方式。换言之,CNI委派插件使得信息能够在虚拟网络的节点之间传输,该信息使得CNI插件能够将容器与计算基础设施8连接和分离。在一些示例中,CNI委派插件必须在CNI“args”映射中添加“ips”键,并将其值设置为符合“ips”键值的“ips”键的值的转换。在舱的实现过程中,“ips”可能会受到实现方式的青睐,但是CNI“args”可能会被插件忽略。因此,该实现方式确保在返回的CNI请求结构中,所请求的IP地址被分配给网络连接接口的接口。如果未分配请求的IP地址,则该实现方式可能会导致网络连接失败。给定包括调用“网络-b”的“ips”键的上述示例注释,CNI委派插件被配置为将数据转换成传递给“网络-b”的CNI调用中的每个插件(例如,名为”网络-b”的虚拟网络的每个从节点)的以下JSON片段:
舱的JSON注释可能包括“mac”键,该键表示要分配给舱的MAC地址。MAC键的值可能包含有效的6字节以太网MAC地址或有效的20字节的无限带宽IP(IP-over-InfiniBand)硬件地址。如果“mac”键的值无效,则网络连接选择注释可能会被确定为无效,并在舱的实施过程中被忽略。针对舱给出了一个示例网络连接选择注释,该注释指定虚拟网络“网络-b”,并另外指定“mac”键:
在一些示例中,“mac”键被添加到CNI“args”映射中。CNI规范可能要求实现方式遵守“mac”。然而,CNI规范可能表示CNI“args”可能被CNI插件忽略。因此,该实现方式可以确保所请求的MAC地址在返回的CNI请求结构中被分配给网络连接的接口;如果尚未分配,则该实现方式可能会导致网络连接失败。下面的JSON片段表示添加到“args”映射中的“mac”键。
在一些示例中,次要虚拟网络组包括至少一个虚拟网络,该虚拟网络同时包括在主要虚拟网络组中,从而导致虚拟网络组之间的重叠。由于主要虚拟网络组和次要虚拟网络组定义了组合虚拟网络组,其中,编排器23部署舱22A,在一些示例中,编排器23可以将舱22A部署到组合虚拟网络组的每个虚拟网络,包括重叠在主要虚拟网络组和次要虚拟网络组之间的虚拟网络。或者,在其他示例中,舱22A的网络注释可以指定同时包括在主要虚拟网络组中的至少一个重叠虚拟网络,并且网络注释可以包括放弃将舱22A部署到至少一个重叠虚拟网络的指令。换言之,组合虚拟网络组可以通过将指令包括在舱22A的网络注释中而从主要虚拟网络组的至少一个虚拟网络中排除舱22A的部署。
换言之,虚拟执行元件规范数据可以包括指定表示主要虚拟网络组的命名空间的命名空间对象和指定次要虚拟网络组的网络注释。网络控制器24被配置为解析虚拟执行元件规范数据,以在计算基础设施8中创建次要虚拟网络组。另外,编排器23被配置为将虚拟执行元件部署到次要虚拟网络组的每个虚拟网络。由网络注释指定的次要虚拟网络组可以包括不包括在主要虚拟网络组中的第一组虚拟网络和同时包括在主要虚拟网络组中的第二组虚拟网络中的至少一个。网络注释可以指示编排器32避免将虚拟执行元件部署到第二组虚拟网络的至少一个虚拟网络。
在一些示例中,当编排器32部署舱22A时,在计算基础设施8内建立次要虚拟网络组。或者,在其他示例中,在舱22A开始时,次要虚拟网络组中的至少一个并没有在计算基础设施8中建立。这样,在部署舱22A时,网络控制器24可以识别出在舱22A开始时没有在计算基础设施8内建立的次要虚拟网络组中的至少一个,并且随后创建还没有建立的虚拟网络。网络控制器24基于从解析虚拟执行元件规范数据获得的网络配置信息,在计算基础设施8中创建次要虚拟网络组。
服务器12A包括用于运行容器化应用的容器平台19A,例如,舱22A的应用。容器平台19A接收来自编排器23的请求,以在服务器12A中获得并托管容器。容器平台19A获得并执行容器。
容器平台19A包括为虚拟网络端点配置虚拟网络接口的网络模块17A。容器平台19A使用网络模块17A来管理舱(包括舱22A)的联网。例如,网络模块17A创建虚拟网络接口,以将舱连接到虚拟路由器21A,并使这种舱的容器能够通过虚拟网络经由虚拟网络接口与其他虚拟网络端点通信。网络模块17A可以例如将虚拟网络的虚拟网络接口插入到舱22A中容器的网络命名空间中,并且配置(或请求配置)虚拟路由器21A中虚拟网络的虚拟网络接口,使得虚拟路由器21A被配置为将经由虚拟网络接口从虚拟网络接收的分组发送到舱22A的容器,并且发送通过虚拟网络经由虚拟网络接口从舱22A接收的分组。网络模块17A可以分配网络地址(例如,虚拟网络的虚拟IP地址),并且可以为虚拟网络接口设置路由。在Kubernetes中,所有舱都可以与所有其他舱通信,而不需要使用网络地址转换(NAT)。在一些情况下,编排器23和网络控制器24创建由所有命名空间共享的虚拟网络,从该虚拟网络分配服务和舱网络地址。这个共享虚拟网络可以被称为服务虚拟网络。在一些情况下,在Kubernetes群集中产生的所有命名空间中的所有舱可能能够彼此通信,并且所有舱的网络地址可以从由编排器23指定的舱子网分配。除了容器舱寻址之外,网络模块17A还可以支持配置网络隔离、基于策略的安全性、网关、静态网络地址转换(SNAT)、负载平衡器和业务链接能力,以进行编排。
网络模块17A可以表示服务器12A的库、插件、模块、运行时刻其他可执行代码。网络模块17A可以至少部分符合容器网络接口(CNI)规范或rkt网络提案。网络模块17A可以表示轨迹(Contrail)、OpenContrail或钨结构网络插件。网络模块17A也可以称为网络插件或CNI插件。就CNI规范而言,容器可以被认为是Linux网络命名空间的同义词。对应于哪一个单元取决于特定的容器运行时刻的实现方式:例如,在应用程序容器规范(例如,rkt)的实现中,每个舱在唯一的网络命名空间中运行。然而,在Docker中,网络命名空间通常存在于每个单独的Docker容器中。就CNI规范而言,网络是指一组可唯一寻址并可相互通信的实体。这可以是单独的容器、机器/服务器(真实的或虚拟的)、或某个其他网络装置(例如,路由器)。容器可以在概念上添加到一个或多个网络中或从其中移除。
CNI规范规定了一致性插件(conforming plugin)(“CNI插件”)的一些考虑事项。这些包括以下内容:
在调用任何CNI插件之前,容器运行时必须为容器创建一个新的网络命名空间;
容器运行时必须确定这个容器应该属于哪个网络,以及对于每个网络,必须执行哪些插件;
容器运行时必须通过依次为每个网络执行相应的插件,将容器添加到每个网络中。
在一些示例中,单个网络模块17A为舱22A配置多个虚拟网络接口26A-26N(”虚拟网络接口”),用于在交换结构14中配置的相应虚拟网络。这样,如下文进一步描述的,网络模块17A解决了严格符合CNI规范的CNI插件的某些限制。虚拟网络接口26可以是命名空间规范数据27(主要组)中指定的多个虚拟网络的接口、舱22A(次要组)的虚拟执行元件规范数据中指定的一个或多个虚拟网络的接口或者这种虚拟网络的组合(组合组)的接口。
每个虚拟网络接口26可以表示虚拟以太网(”veth”)对,其中,该对的每一端是单独的装置(例如,Linux/Unix装置),该对的一端被分配给舱22A,该对的一端被分配给虚拟路由器21A。veth对或veth对的端有时被称为”端口”。每个虚拟网络接口26可替换地表示macvlan网络,其具有分配给舱22A和虚拟路由器21A的媒体访问控制(MAC)地址,用于在舱22A和虚拟路由器21A之间通信。每个虚拟网络接口26可替换地表示虚拟路由器21A或其他网络虚拟实体和虚拟网络端点之间的不同类型的接口。例如,虚拟网络接口26可替换地被称为虚拟机接口(VMI)、舱接口、容器网络接口、分接头接口、veth接口或简单的网络接口(在特定上下文中)。
在图1的示例服务器12A中,舱22A是多个不同虚拟网络中的虚拟网络端点。编排器23可以存储或以其他方式管理用于应用部署的配置数据,该配置数据指定多个虚拟网络并指定舱22A(或其中的一个或多个容器)是多个虚拟网络中的每一个的虚拟网络端点。例如,编排器23可以从用户、操作员/管理员或其他机器系统接收配置数据。
作为创建舱22A的过程的一部分,编排器23发送请求29,以请求网络控制器24为多个虚拟网络创建相应的虚拟网络接口(在配置数据中指示)。编排器23可以存储、发送或以其他方式通知网络控制器24为舱22A指定的多个虚拟网络中的虚拟网络配置对象。网络控制器24可以配置计算基础设施8中尚未配置的任何虚拟网络。
网络控制器24处理请求29,以生成舱22A的多个虚拟网络接口26的接口配置数据25,用于经由命名空间规范数据27、虚拟执行元件规范数据或这两者中指示的虚拟网络进行通信。接口配置数据25可以包括容器或舱唯一标识符以及为每个虚拟网络接口26指定用于配置虚拟网络接口的网络配置数据的列表或其他数据结构。虚拟网络接口的网络配置数据可以包括网络名称、分配的虚拟网络地址、MAC地址和/或域名服务器值。JSON格式的网络配置数据示例如下。多个虚拟网络接口26分别对应于多个虚拟网络。网络控制器24将接口配置数据25发送到服务器12A,更具体地,在一些情况下,发送到虚拟路由器21A。为了为舱22A配置一个或多个虚拟网络接口,容器平台19A调用网络模块17A的单个实例。网络模块17A获得并处理接口配置数据25。对于接口配置数据25中指定的每个虚拟网络接口,网络模块17A创建一个虚拟网络接口26。例如,网络模块17A可以将实现虚拟网络接口26A的veth对的一端连接到虚拟路由器21A,并且可以将同一veth对的另一端连接到舱22A。类似地,网络模块17A可以将实现虚拟网络接口26N的veth对的一端连接到虚拟路由器21A,并且可以将同一veth对的另一端连接到舱22A。以这种方式,网络模块17A的单个实例为共享至少一个虚拟网络接口的一个或多个虚拟执行元件(在这种情况下为舱22A)配置多个虚拟网络接口26。
以下是单个虚拟网络接口26A的舱22A的示例网络配置数据:
舱22A的网络配置数据可以包括多个类似于上面为多个不同虚拟网络接口26提供的注释。
传统的CNI插件由容器平台/运行时刻(runtime)调用,从容器平台接收添加命令,以将容器添加到单个虚拟网络,然后这种插件保持在服务器的运行时刻存储器(runtimememory)中,以随后从容器/运行时刻接收删除命令并从虚拟网络移除容器。这就需要每个虚拟网络有单独的CNI插件。由容器平台19A调用的单个网络模块17A通过获得接口配置数据25和添加多个不同的虚拟网络接口26来扩展传统CNI插件的功能。术语“调用”可以指由微处理器210执行的存储器(例如,用户空间245)中的软件组件或模块的实例化,作为可执行代码。然而,在一些情况下,可以调用网络模块17A的多个实例来配置虚拟网络接口26。
这些技术可以提供一个或多个技术优势。例如,通过在命名空间规范数据27中指定多个虚拟网络,部署到相应命名空间的舱22A将被配置为经由多个虚拟网络中的任何一个进行通信。作为另一示例,通过简单地在虚拟执行元件的命名空间中包括指定虚拟网络的注释,虚拟执行元件可以有效地分散到主要虚拟网络组。以前创建命名空间的方法使每个命名空间配置只能指定一个虚拟网络,这限制了可以在虚拟执行元件中执行的应用程序的类型。作为另一示例,因为虚拟执行元件的配置数据可以指定次要虚拟网络组,所以如本文所述部署的虚拟执行元件可以配置有虚拟网络接口,该虚拟网络接口用于为命名空间指定的主要虚拟网络组中的、和为虚拟执行元件指定的次要虚拟网络组中的每个虚拟网络。这可以为用户提供高度的通用性以及对部署到一个或多个命名空间的虚拟执行元件间通信的网络策略的粗粒度和细粒度控制。
图2是根据本公开中描述的技术的示例计算装置的框图,该示例计算装置包括用于为共享至少一个虚拟网络接口的一组一个或多个虚拟执行元件配置多个虚拟网络接口的网络模块。图2的计算装置200可以表示真实或虚拟服务器,并且可以表示图1的任何服务器12的示例实例。在该示例中,计算装置200包括耦合计算装置200硬件环境的硬件组件的总线242。总线242耦合网络接口卡(NIC)230、存储盘246和一个或多个微处理器210(以下称为“微处理器210”)。NIC 230可能支持IOV。在某些情况下,前端总线可以耦合微处理器210和存储器244。在一些示例中,总线242可以耦合存储器244、微处理器210和NIC 230。总线242可以表示外围组件接口(PCI)快速(PCIe)总线。在一些示例中,直接存储器访问(DMA)控制器可以控制耦合到总线242的组件之间的DMA传输。在一些示例中,耦合到总线242的组件控制耦合到总线242的组件之间的DMA传输。
微处理器210可以包括一个或多个处理器,每个处理器包括独立的执行单元,以执行符合指令集架构的指令,这些指令存储到存储介质。执行单元可以被实现为单独的集成电路(IC),或者可以组合在一个或多个多核处理器(或”多核”处理器)内,每个多核处理器使用单个IC(即,芯片多处理器)来实现。
磁盘246表示计算机可读存储介质,其包括以用于存储诸如处理器可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和/或非易失性、可移动和/或不可移动介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD-ROM、数字多功能盘(DVD)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储装置或可用于存储所需信息并可由微处理器210访问的任何其他介质。
主存储器244包括一个或多个计算机可读存储介质,其可以包括随机存取存储器(RAM),例如,各种形式的动态RAM(DRAM)(例如,DDR2/DDR3 SDRAM)或静态RAM(SRAM)、闪存、或任何其他形式的固定或可移动存储介质,其可以用于以指令或数据结构的形式携带或存储期望的程序代码和程序数据并且可以被计算机访问。主存储器244提供由可寻址存储位置组成的物理地址空间。
网络接口卡(NIC)230包括一个或多个接口232,其被配置为使用底层物理网络的链路交换分组。接口232可以包括具有一个或多个网络端口的端口接口卡。NIC 230还可以包括卡上存储器,以例如存储分组数据。NIC 230和耦合到总线242的其他装置之间的直接存储器访问传输可以从NIC存储器读取/写入NIC存储器。
存储器244、NIC 230、存储盘246和微处理器210可以为软件堆栈提供操作环境,该软件堆栈包括在内核空间中执行的操作系统内核214。内核214可以表示例如可从微软公司获得的Linux、伯克利软件分发(BSD)、另一Unix变体内核或Windows服务器操作系统内核。在一些情况下,操作系统可以执行管理程序和由管理程序管理的一个或多个虚拟机。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、可从VMware获得的ESXi、可从微软获得的Windows Hyper-V以及其他开源和专有管理程序。术语管理程序可以包括虚拟机管理器(VMM)。包括内核214的操作系统为用户空间245中的一个或多个进程提供执行环境。
内核214包括使用网络接口卡230的物理驱动器225。网络接口卡230还可以实现SR-IOV,以使得能够在一个或多个虚拟执行元件之间共享物理网络功能(I/O),例如,容器229A-229B或一个或多个虚拟机(图2中未示出)。共享的虚拟装置(例如,虚拟功能)可以提供专用资源,使得每个虚拟执行元件可以访问NIC 230的专用资源,因此,对于每个虚拟执行元件来说,NIC 230表现为专用NIC。虚拟功能可以表示轻型PCIe功能,其与物理驱动器225使用的物理功能以及其他虚拟功能共享物理资源。对于支持SR-IOV的NIC 230,根据SR-IOV标准,NIC 230可以具有数千个可用的虚拟功能,但是对于I/O密集型应用程序,配置的虚拟功能的数量通常要少得多。
计算装置200可以耦合到物理网络交换结构,该物理网络交换结构包括覆盖网络,该覆盖网络将交换结构从物理交换机扩展到耦合到交换结构的物理服务器的软件或“虚拟”路由器,包括虚拟路由器220。虚拟路由器可以是由物理服务器(例如,图1的服务器12)执行的进程或线程或其组件,其动态创建和管理可用于在虚拟网络端点之间通信的一个或多个虚拟网络。在一个示例中,虚拟路由器使用覆盖网络实现每个虚拟网络,该覆盖网络提供将端点的虚拟地址与端点正在其上执行的服务器的物理地址(例如,IP地址)解耦的能力。每个虚拟网络可以使用其自己的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交(orthogonal)。可以使用各种技术通过物理网络在虚拟网络内部和上传输分组。本文使用的术语“虚拟路由器”可以包括开放式vSwitch(OVS)、OVS桥、Linux桥、Docker桥或位于主机装置上并且在一个或多个虚拟网络的虚拟网络端点之间执行交换、桥接或路由分组的其他装置和/或软件,其中,虚拟网络端点由一个或多个服务器12托管。在图2的示例计算装置200中,虚拟路由器220在内核214内执行,但是在各种实现中,虚拟路由器220可以在管理程序、主机操作系统、主机应用程序或虚拟机内执行。
虚拟路由器220可以替换和包含通常用于舱202的Kubernetes部署的Linux网桥/OVS模块的虚拟路由/桥接功能。虚拟路由器220可以为虚拟网络执行桥接(例如,E-VPN)和路由(例如,L3VPN、IP-VPN)。虚拟路由器220可以执行网络服务,例如,应用安全策略、NAT、多播、镜像和负载平衡。在”BGP/MPLS IP Virtual Private Networks(VPN)”征求意见4364(互联网工程任务组网络工作组,2006年2月)(以下简称”RFC 4364”)中,描述IP-VPN的其他细节,该文件通过引用整体结合于此。虚拟路由器220可以表示PE路由器,并且虚拟执行端点可以是RFC 4364中描述的CE装置的示例。
通常,每个舱202A-202B(统称为”舱202”)可以分配一个或多个虚拟网络地址,以在相应的虚拟网络中使用,其中,每个虚拟网络可以与虚拟路由器220提供的不同虚拟子网相关联。舱202B可以分配其自己的虚拟第三层(L3)IP地址,例如,用于发送和接收通信,但是可能不知道舱202B所在的计算装置200的IP地址。虚拟网络地址因此可以不同于底层物理计算机系统(例如,计算装置200)的逻辑地址。
计算装置200包括虚拟路由器代理216,其控制计算装置200的虚拟网络的覆盖并协调计算装置200内的数据分组路由。通常,虚拟路由器代理216与虚拟化基础设施的网络控制器24通信,网络控制器24生成命令来控制创建虚拟网络和配置网络虚拟化端点,例如,计算装置200,更具体地,虚拟路由器220以及虚拟网络接口212、213。
在一个示例中,由虚拟网络域内的容器229A-229B生成或使用的(consumed)网络分组(例如,第三层(L3)IP分组或第二层(L2)以太网分组)可以封装在由物理网络传输的另一分组(例如,另一IP或以太网分组)中。在虚拟网络中传输的分组在本文可以被称为“内部分组”,而物理网络分组在本文可以被称为“外部分组”或“隧道分组”。虚拟路由器220可以执行物理网络分组内虚拟网络分组的封装和/或解封装。该功能在本文被称为隧道,并且可以用于创建一个或多个覆盖网络。除了IPinIP之外,可以使用的其他示例隧道协议包括通用路由封装(GRE)上的IP、VxLAN、GRE上的多协议标签交换(MPLS)、用户数据报协议(UDP)上的MPLS等。虚拟路由器220对源自/去往舱202的任何容器的分组执行隧道封装/解封装,并且虚拟路由器220经由总线242和/或NIC 230的网桥与舱202交换分组。
如上所述,网络控制器24可以提供逻辑上集中的控制器,以便于一个或多个虚拟网络的操作。网络控制器24可以例如维护路由信息库,例如,存储物理网络以及一个或多个覆盖网络的路由信息的一个或多个路由表。虚拟路由器220为相应的虚拟网络实现一个或多个虚拟路由和转发实例(VRF)222A-222B,虚拟路由器220作为相应的隧道端点对其进行操作。通常,每个VRF 222存储对应虚拟网络的转发信息,并识别数据包将被转发到哪里以及数据包是否将封装在隧道协议中,例如,具有隧道报头,该隧道报头可以包括虚拟网络协议栈的不同层的一个或多个报头。每个VRF 222可以包括存储虚拟网络的路由和转发信息的网络转发表。
NIC 230可以接收隧道分组。虚拟路由器220处理隧道分组,以从隧道封装报头确定内部分组的源端点和目的端点的虚拟网络。虚拟路由器220可以剥离第2层报头和隧道封装报头,以便仅在内部转发内部分组。隧道封装报头可以包括虚拟网络标识符,例如,VxLAN标签或MPLS标签,其指示虚拟网络,例如,对应于VRF 222A的虚拟网络。VRF 222A可以包括内部分组的转发信息。例如,VRF 222A可以将内部分组的目的地第3层地址映射到虚拟网络接口212A。作为响应,VRF 222A经由虚拟网络接口212A将内部分组转发到舱202A。
容器229A–229B也可以是内部分组的源而作为源虚拟网络端点。例如,容器229A可以生成去往由另一计算装置(即,非计算装置200)执行的目的地虚拟网络端点或容器229A–229B中的另一个的第3层内部分组。容器229A经由连接到VRF 222A的虚拟网络接口212A将第3层内部分组发送到虚拟路由器220。
虚拟路由器220接收内部分组和第2层报头,并为内部分组确定虚拟网络。虚拟路由器220可以使用任何上述虚拟网络接口实现技术(例如,macvlan、veth等)来确定虚拟网络。虚拟路由器220使用对应于内部分组的虚拟网络的VRF 222A来生成内部分组的外部报头,外部报头包括覆盖隧道的外部IP报头和识别虚拟网络的隧道封装报头。虚拟路由器220用外部报头封装内部分组。虚拟路由器220可以用新的第2层报头封装隧道分组,该报头具有与计算装置200外部的装置(例如,TOR交换机16或一个服务器12)相关联的目的地第2层地址。如果在计算装置200外部,则虚拟路由器220使用物理功能221向NIC 230输出具有新的第2层报头的隧道分组。NIC 230在输出接口上输出分组。如果目的地是在计算装置200上执行的另一虚拟网络端点,则虚拟路由器220将分组路由到虚拟网络接口212、213中的适当一个。
在一些示例中,计算装置200的控制器(例如,图1的网络控制器24)在每个舱202中配置默认路由,以使得虚拟机224使用虚拟路由器220作为输出分组的初始下一跳。在一些示例中,NIC 230配置有一个或多个转发规则,以使得从虚拟机224接收的所有分组切换到虚拟路由器220。
舱202A-202B可以更详细地表示图1的舱22A的示例实例。舱202A包括一个或多个容器229A,舱202B包括一个或多个容器229B。
容器平台204可以更详细地表示图1的容器平台19A的示例实例。容器平台204包括容器引擎208、编排代理209、服务代理211和网络模块206A-206B。每个网络模块206A-206B可以表示图1的网络模块17A的示例实例。在一些情况下,每个舱202调用一个网络模块206。然而,在一些情况下,为不同的虚拟网络接口212、213调用额外的网络模块206实例,和/或网络模块206可以为多个舱配置多个虚拟网络接口212、213。
容器引擎208包括可由微处理器210执行的代码。容器引擎208可以是一个或多个计算机进程。容器引擎208以容器229A–229B的形式运行容器化应用程序。容器引擎208可以表示Dockert、rkt或用于管理容器的其他容器引擎。通常,容器引擎208接收请求并管理诸如图像、容器、网络和卷等对象。图像是带有创建容器的指令的模板。容器是图像的可执行实例。基于来自编排代理209的指令,容器引擎208可以获得图像,并将其实例化为舱202A-202B中的可执行容器229A-229B。
服务代理211包括可由微处理器210执行的代码。服务代理211可以是一个或多个计算机进程。服务代理211监视服务和端点对象的添加和移除,并且维护计算装置200的网络配置,以确保舱和容器之间的通信,例如,使用服务。服务代理211还可以管理iptables来捕捉到服务的虚拟IP地址和端口的流量,并将流量重定向到代理备份舱的代理端口。服务代理211可以表示kubernetes集群的从节点的Kube代理。在一些示例中,容器平台204不包括服务代理211,或者禁用服务代理211,以支持网络模块206对虚拟路由器220和舱202的配置。
编排代理209包括可由微处理器210执行的代码。编排代理209可以是一个或多个计算机进程。编排代理209可以表示Kubernetes集群的从节点的kubelet。编排代理209是编排器的代理,例如,图1的编排器23,其接收容器的容器规范数据并确保容器由计算装置200执行。容器规范数据可以是从编排器23发送到编排代理209或者经由命令行接口、HTTP端点或HTTP服务器间接接收的清单文件的形式。容器规范数据可以是容器229的一个舱202的舱规范(例如,PodSpec——描述舱的YAML(又一种标记语言)或JSON对象)。基于容器规范数据,编排代理209指示容器引擎208获得并实例化容器229的容器图像,用于由计算装置200执行容器229。容器规范数据是虚拟执行元件规范数据的示例。
在一些示例中,编排器23经由编排代理209将舱202部署到用户空间245。更具体地,编排器23响应于确定托管用户空间245的计算装置200是由舱202A指定的虚拟网络列表的至少一个虚拟网络的一部分,将舱(例如,舱202A)部署到用户空间245。在一些示例中,计算装置200是虚拟网络的自定义列表中多于一个虚拟网络的一部分。
根据本文描述的技术,编排代理209实例化网络模块206中的至少一个,以便为每个舱202配置一个或多个虚拟网络接口。每个网络模块206可以表示图1的网络模块17A的示例实例。例如,编排代理209接收舱202A的容器规范数据,并指示容器引擎208基于舱202A的容器规范数据创建具有容器229A的舱202A。编排代理209还调用网络模块206A为舱202A配置多个虚拟网络接口212A-212B,用于分别对应于VRF 222A-222B的虚拟网络。以类似的方式,编排代理209指示容器引擎208基于舱202B的容器规范数据创建具有容器229B的舱202B。编排代理209还调用单个网络模块206B来为舱202B配置对应于VRF 222B的虚拟网络的虚拟网络接口213。在该示例中,舱202A和舱202B都是对应于VRF22B的虚拟网络的虚拟网络端点。虚拟网络接口212、213中的任何一个可以表示图1中描述的一个虚拟网络接口26的示例实例。
网络模块206A可以获得用于为舱202配置虚拟网络接口的接口配置数据。虚拟路由器代理216作为虚拟网络控制平面模块操作,用于使网络控制器24能够配置虚拟路由器220。与管理虚拟执行元件的供应、调度和管理的编排控制平面(包括用于从节点和主节点的容器平台204,例如,编排器23)不同,虚拟网络控制平面(包括用于从节点的网络控制器24和虚拟路由器代理216)管理部分由从节点的虚拟路由器220在数据平面中实现的虚拟网络的配置。虚拟路由器代理216向网络模块206传送虚拟网络接口的接口配置数据,以使编排控制平面元件(即,网络模块206)能够根据网络控制器24确定的配置状态来配置虚拟网络接口,从而桥接编排控制平面和虚拟网络控制平面之间的间隙。此外,这可以使单个网络模块206A能够获得舱的多个虚拟网络接口的接口配置数据,并配置多个虚拟网络接口,这可以减少调用单独的网络模块206来配置每个虚拟网络接口所固有的通信和资源开销。
图3是根据本公开中描述的技术的示例计算装置的框图。计算装置300是用于云计算基础设施的控制器5的示例实例。图3的计算装置300可以表示一个或多个被配置为对网络控制器24和编排器23中的至少一个执行操作的物理服务器或虚拟服务器。这样,计算装置300在一些情况下可以为相应的集群实现一个或多个主节点。
尽管调度器322、API服务器320、控制器管理器326、网络控制器324、网络控制器管理器325和配置存储328被示出和描述为由单个计算装置300执行,但是可以分布在组成计算系统或硬件/服务器集群的多个计算装置300中。换言之,多个计算装置300中的每一个可以为调度器322、API服务器320、网络控制器管理器326、网络控制器324、网络控制器管理器325或配置存储328中的任何一个或多个的一个或多个实例提供硬件操作环境。网络控制器324可以表示图1的网络控制器24的示例实例。调度器322、API服务器320、控制器管理器326和网络控制器管理器325可以实现编排器23的示例实例。网络控制器管理器325可以表示Kubernetes云控制器管理器的示例实现。网络控制器324可以表示网络控制器24的示例实例。
在该示例中,计算装置300包括耦合计算装置300硬件环境的硬件组件的总线342。总线342耦合网络接口卡(NIC)330、存储盘346和一个或多个微处理器310(以下称为”微处理器310”)。在某些情况下,前端总线可以耦合微处理器310和存储器344。在一些示例中,总线342可以耦合存储器344、微处理器310和NIC 330。总线342可以表示外围组件接口(PCI)快速(PCIe)总线。在一些示例中,直接存储器访问(DMA)控制器可以控制耦合到总线242的组件之间的DMA传输。在一些示例中,耦合到总线342的组件控制耦合到总线342的组件之间的DMA传输。
微处理器310可以包括一个或多个处理器,每个处理器包括独立的执行单元,以执行符合指令集架构的指令,这些指令存储到存储介质。执行单元可以被实现为单独的集成电路(IC),或者可以组合在一个或多个多核处理器(或”多核”处理器)内,每个多核处理器使用单个IC(即,芯片多处理器)来实现。
磁盘346表示计算机可读存储介质,其包括以用于存储诸如处理器可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和/或非易失性、可移动和/或不可移动介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存、CD-ROM、数字多功能盘(DVD)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储装置或可用于存储所需信息并可由微处理器310访问的任何其他介质。
主存储器344包括一个或多个计算机可读存储介质,其可以包括随机存取存储器(RAM),例如,各种形式的动态RAM(DRAM)(例如,DDR2/DDR3 SDRAM)或静态RAM(SRAM)、闪存、或任何其他形式的固定或可移动存储介质,其可以用于以指令或数据结构的形式携带或存储期望的程序代码和程序数据并且可以被计算机访问。主存储器344提供由可寻址存储位置组成的物理地址空间。
网络接口卡(NIC)330包括一个或多个接口332,其被配置为使用底层物理网络的链路交换分组。接口332可以包括具有一个或多个网络端口的端口接口卡。NIC 330还可以包括卡上存储器,以例如存储分组数据。NIC 330和耦合到总线342的其他装置之间的直接存储器访问传输可以从NIC存储器读取/写入NIC存储器。
存储器344、NIC 330、存储盘346和微处理器310可以为软件堆栈提供操作环境,该软件堆栈包括在内核空间中执行的操作系统内核314。内核314可以表示例如可从微软公司获得的Linux、伯克利软件分发(BSD)、另一Unix变体内核或Windows服务器操作系统内核。在一些情况下,操作系统可以执行管理程序和由管理程序管理的一个或多个虚拟机。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、可从VMware获得的ESXi、可从微软获得的Windows Hyper-V以及其他开源和专有管理程序。术语管理程序可以包括虚拟机管理器(VMM)。包括内核314的操作系统为用户空间345中的一个或多个进程提供执行环境。内核314包括使用网络接口卡230的物理驱动器327。
计算装置300可以耦合到物理网络交换结构,该物理网络交换结构包括覆盖网络,该覆盖网络将交换结构从物理交换机扩展到耦合到交换结构的物理服务器的软件或“虚拟”路由器,例如,图2的虚拟路由器220。计算装置300可以使用一个或多个专用虚拟网络来配置集群的从节点。
API服务器320、调度器322、控制器管理器326和配置存储可以实现集群的主节点,并且可替换地被称为“主组件”。集群可以是Kubernetes集群,主节点可以是Kubernetes主节点,在这种情况下,主组件是Kubernetes主组件。
API服务器320包括可由微处理器310执行的代码。API服务器320可以是一个或多个计算机进程。API服务器320验证和配置对象的数据,例如,虚拟执行元件(例如,容器舱)、服务和复制控制器。服务可以是一个抽象,定义了一组逻辑舱和用于访问这些舱的策略。基于服务定义选择实现服务的一组舱。服务可以部分实现为负载平衡器,或者以其他方式包括负载平衡器。API服务器320可以实现表述性状态传递(REST)接口,以处理REST操作,并向存储在配置存储328中的相应集群的共享状态提供前端。API服务器320可以认证和授权请求。API服务器320与其他组件通信,以实例化计算基础设施8中的虚拟执行元件。API服务器320可以表示Kubernetes API服务器。
配置存储328是所有集群数据的后备存储。集群数据可以包括集群状态和配置数据。配置数据还可以为服务发现(service discovery)提供后端和/或提供锁定服务。配置存储328可以实现为键值存储。配置存储328可以是中央数据库或分布式数据库。配置存储328可以表示etcd存储。配置存储328可以表示Kubernetes配置存储。
调度器322包括可由微处理器310执行的代码。调度器322可以是一个或多个计算机进程。调度器322监视新创建或请求的虚拟执行元件(例如,容器舱),并选择虚拟执行元件将在其上运行的从节点。在一些示例中,调度器322可以基于资源需求、硬件约束、软件约束、策略约束、位置等来选择从节点。在其他示例中,调度器322可以基于由相应虚拟执行元件指定的虚拟网络的自定义列表来选择从节点。调度器322可以表示Kubernetes调度器。
通常,API服务器320可以调用调度器322来调度虚拟执行元件,虚拟执行元件可以选择一个从节点并将所选从节点的标识符返回给API服务器320,API服务器320可以将标识符与虚拟执行元件相关联地写入配置存储328。API服务器320可以为所选从节点调用编排代理209,这可以使得所选从节点的容器引擎208从存储服务器获得虚拟执行元件,并在从节点上创建虚拟执行元件。所选从节点的编排代理209可以向API服务器320更新虚拟执行元件的状态,API服务器320将该新状态保持到配置存储328。以这种方式,计算装置300在计算基础设施8中实例化新的虚拟执行元件。
控制器管理器326包括可由微处理器310执行的代码。控制器管理器326可以是一个或多个计算机进程。控制器管理器326可以嵌入核心控制循环,通过从API服务器320获得通知来监控集群的共享状态。控制器管理器326可以尝试将集群的状态移向期望的状态。由控制器管理器326管理的示例控制器(未示出)可以包括复制控制器、端点控制器、命名空间控制器和服务帐户控制器。控制器管理器326可以执行生命周期功能,例如,命名空间创建和生命周期、事件垃圾收集、终止舱垃圾收集、级联删除垃圾收集、节点垃圾收集等。控制器管理器326可以表示Kubernetes集群的Kubernetes控制器管理器。
网络控制器324包括可由微处理器310执行的代码。网络控制器324可以包括一个或多个计算机进程。网络控制器324可以表示图1的网络控制器24的示例实例。网络控制器324可以是逻辑上集中但物理上分布的软件定义网络(SDN)控制器,其负责提供虚拟化网络的管理、控制和分析功能。特别地,网络控制器324可以是计算基础设施8的逻辑上集中的控制平面和管理平面,并且为一个或多个从节点编排vRouter。
网络控制器324可以为在网络基础设施上运行的计算架构提供云网络。云网络可能包括企业或服务提供商的私有云、基础设施即服务(IaaS)和云服务提供商的虚拟私有云(VPCs)。私有云、VPC和IaaS用例可能涉及多租户虚拟化数据中心,如图1所述。在这种情况下,数据中心中的多个租户共享相同的物理资源(物理服务器、物理存储、物理网络)。每个租户都分配了自己的逻辑资源(虚拟机、容器或其他形式的虚拟执行元件;虚拟存储;虚拟网络)。除非安全策略特别允许,否则这些逻辑资源相互隔离。数据中心中的虚拟网络也可以互连到物理IP VPN或L2 VPN。
网络控制器324可以向诸如商业边缘网络、宽带用户管理边缘网络和移动边缘网络等网络提供网络功能虚拟化(NFV)。NFV涉及在虚拟机、容器或其他虚拟执行元件中的而不是在物理硬件设备上的网络功能的编排和管理,例如,防火墙、入侵检测或防御系统(IDS/IPS)、深度包检查(DPI)、缓存、广域网(WAN)优化等。市场上的网络服务虚拟化的主要驱动因素是上市时间和成本优化。
网络控制器324对网络基础设施元件编程,以创建虚拟网络,并且可以为虚拟网络的虚拟网络接口创建接口配置。例如,网络控制器324可以从网络控制器管理器325接收指示命名空间规范数据27的数据。基于命名空间规范数据27,网络控制器管理器325可以创建指定主要虚拟网络组的命名空间。网络控制器324可以解析指示命名空间规范数据27的数据,该数据被格式化为人类可读的文本文件。通过解析人类可读文本文件,网络控制器可以获得用于创建主要虚拟网络组的信息。在一些示例中,网络控制器324使用该信息来配置TOR交换机16和机架式交换机18的任意组合,以在计算基础设施8中创建主要虚拟网络组。网络控制器324可以独立于API服务器320、调度器322、网络控制器管理器325和控制器管理器326创建主要虚拟网络组。
另外,当API服务器320和调度器322调度新的虚拟执行元件时,新的虚拟执行元件可以包括指定命名空间的命名空间对象和指定次要虚拟网络组的网络注释。命名空间对象中指定的命名空间可以指定主要虚拟网络组。在一些示例中,次要虚拟网络组中的至少一个虚拟网络不包括在主要虚拟网络组中。网络控制器324可以建立次要虚拟网络组中的、在调度虚拟执行元件时尚未建立的每个虚拟网络。
在国际申请号PCT/US2013/044378和美国专利申请No.14/226,509中可以找到关于与数据中心10的其他装置或其他软件定义的网络一起操作的网络控制器324的额外信息,这两个申请通过引用结合于此。
网络控制器管理器325包括可由微处理器310执行的代码。网络控制器管理器325可以是一个或多个计算机进程。网络控制器管理器325作为面向编排的元件(例如,调度器322、API服务器320、控制器管理器326和配置存储328)和网络控制器324之间的接口操作。通常,网络控制器管理器325监控集群中的新对象(例如,舱和服务)。网络控制器管理器325可以隔离虚拟网络中的舱并连接舱和服务。
网络控制器管理器325可以作为集群的主节点的容器来执行。在一些情况下,使用网络控制器管理器325使得能够禁用从节点的服务代理(例如,Kubernetes kube代理),从而使用虚拟路由器实现所有舱连接,如本文所述。
网络控制器管理器325可以使用编排平台的控制器框架来监听(或以其他方式监控)在API中定义的对象的变化,并向这些对象中的一些添加注释。注释可以是指定对象属性的标签或其他标识符(例如,“虚拟网络绿色”)。网络控制器管理器325可以使用到网络控制器324的接口为应用程序创建网络解决方案,以定义网络对象,例如,虚拟网络、虚拟网络接口和访问控制策略。网络控制器324可以通过例如在虚拟路由器中配置一个或多个虚拟网络和虚拟网络接口来在计算基础设施中实现网络解决方案。
网络控制器管理器325可以使用用于配置舱副本主机(pod replica host)的单个网络模块206A来驱动每个舱副本的多个虚拟网络接口的创建。
图1-3中示出的和/或本公开其他地方示出或描述的各种组件、功能单元和/或模块可以执行使用驻留在一个或多个计算装置中和/或在一个或多个计算装置上执行的软件、硬件、固件或硬件、软件和固件的混合物描述的操作。例如,计算装置可以用多个处理器或多个装置来执行一个或多个这样的模块。计算装置可以执行一个或多个这样的模块,作为在底层硬件上执行的虚拟机。一个或多个这样的模块可以作为操作系统或计算平台的一个或多个服务来执行。一个或多个这样的模块可以作为一个或多个可执行程序在计算平台的应用层执行。在其他示例中,模块提供的功能可以由专用硬件装置实现。尽管一个或多个存储装置中包括的某些模块、数据存储、组件、程序、可执行文件、数据项、功能单元和/或其他项可以单独示出,但是一个或多个这样的项可以组合并操作,作为单个模块、组件、程序、可执行文件、数据项或功能单元。例如,一个或多个模块或数据存储可以组合或部分组合,使得作为单个模块操作或提供功能。此外,一个或多个模块可以彼此结合操作,使得例如一个模块充当另一模块的服务或扩展。此外,存储装置内示出的每个模块、数据存储、组件、程序、可执行文件、数据项、功能单元或其他项可以包括多个组件、子组件、模块、子模块、数据存储和/或未示出的其他组件或模块或数据存储。此外,存储装置中示出的每个模块、数据存储、组件、程序、可执行文件、数据项、功能单元或其他项可以以各种方式实现。例如,存储装置内示出的每个模块、数据存储、组件、程序、可执行文件、数据项、功能单元或其他项可以被实现为在计算装置上执行的操作系统的一部分。
图4是示出根据本公开中描述的技术使用单个网络模块为虚拟执行元件创建多个网络虚拟接口的流程图。参考图2至图3的计算装置200和300的组件来描述操作。API服务器320接收实例化舱202A的请求,并用用于创建舱202A的配置修改配置存储328(402)。调度器322可以选择计算装置200作为舱202A的主机从节点。API服务器320可以用多个虚拟网络的列表和舱的uuid(pod_uuid)来注释舱202A。可以使用舱的其他形式的标识符。注释可以是指示虚拟网络的舱配置的标签,例如,“虚拟网络A”和“虚拟网络B”。
网络控制器管理器325监听来自API服务器320的新对象,并确定舱202A将在计算装置200上实例化,并根据注释确定舱202A需要与注释中指示的多个虚拟网络的虚拟网络接口。例如,监听可以响应于在RESTful接口上订阅API服务器320通知。
网络控制器管理器325指示网络控制器324创建虚拟网络,并为虚拟网络的舱202A创建虚拟网络接口(404)。网络控制器管理器325可以用将由网络控制器324创建的一个或多个虚拟网络接口(vni_uuids)的相应uuid以及分配的相应唯一专用虚拟网络地址(以及在某些情况下的MAC地址)来注释舱。可以使用虚拟网络接口的其他形式的标识符。
网络控制器324可以为虚拟网络创建虚拟网络接口的列表,并且可以在舱202A的接口配置数据25中将vni_uuids与pod_uuid相关联。网络控制器324可以向计算装置200的虚拟路由器220的虚拟路由器代理216发送接口配置数据25,并在计算装置200中配置相应的虚拟网络接口212A、212B(406)。虚拟网络接口此时可以表示连接到不同于虚拟路由器220的网桥的veth对。虚拟路由器代理216可以存储每个vni_uuid与相应配置的虚拟网络接口的关联。
为了设置舱202A,编排代理209获得舱202A的容器规范数据,并确保容器由计算装置200执行(408)。容器规范数据可以包括舱202A的pod_uuid。编排代理209调用单个网络模块206A来配置舱202A的虚拟网络接口(410)。网络模块206A从虚拟路由器代理216请求(412)并获得接口配置数据25(414)。网络模块206A可以通过请求对应于舱202A的容器规范数据中包括的pod_uuid的舱的接口配置数据,从虚拟路由器代理216获得接口配置数据25。
为了创建接口配置数据25(416)中指示的虚拟网络接口212A、212B中的每一个,网络模块206A可以将虚拟网络接口插入舱202A网络命名空间(例如,作为虚拟网络接口的veth对的一端)(418),并且可以在计算装置200上进行任何必要的变化(例如,将veth对的另一端连接到虚拟路由器220中——该端可能先前已经连接到另一网桥)。网络模块206A可以配置舱202A网络命名空间内的虚拟网络地址,并且可以通过调用适当的IPAM插件来设置与IP地址管理部分一致的路由。
网络模块206A通知虚拟路由器代理216现在操作的虚拟网络接口212A、212B(通过插入舱202A)(420)。网络模块206A还可以从虚拟路由器代理216获得虚拟网络地址(422),并通过通知编排代理209来更新编排控制平面(424)。
这样,这些技术描述了用户可以在舱202A YAML中提供网络列表作为注释的方式。网络控制器管理器325可以解析该网络列表,并在虚拟路由器220中创建相应的端口。当在计算装置200上调度舱202A时,网络模块206A可以向虚拟路由器代理216查询端口。虚拟路由器代理216将以端口列表进行响应,并且对于该列表的每个成员,网络模块206A将创建分接头接口(tap interface)并将分接头接口连接到舱202A。因为所有虚拟网络接口212A、212B都是在单个调用流中创建的,所以这可以在创建虚拟网络接口并将其连接到舱时提供更好的性能。容器229A可以经由虚拟网络接口212A、212B中的任一个进行通信,以与相应网络上的集群的其他舱交换分组,或者使用例如网关在虚拟网络和集群的舱的外部交换分组。
在某些情况下,这些技术可以使用编排平台在计算基础设施中运行不同的容器网络功能,例如,容器化安全装置或容器化路由器。容器网络功能可以通常需要多个网络的网络接口,例如,路由器、NAT装置、分组分析器和防火墙或其他安全装置。因此,这些技术可以为以容器为中心的计算基础设施启用与容器编排平台的服务链接。
例如,容器229A中的任何一个或多个可以表示容器化网络功能或容器化网络功能虚拟化(NFV)实例。舱202A的容器229A具有与对应于VRF 222A的第一虚拟网络的虚拟网络接口212A和与对应于VRF 222B的第二虚拟网络的虚拟网络接口212B。在计算装置200或集群的其他从节点上的舱中执行并且在第一虚拟网络或第二虚拟网络中具有虚拟网络接口的其他容器化应用程序可以与容器229A和容器化网络功能交换分组。一个或多个容器化网络功能的服务链可以将服务序列应用于穿过服务链的网络分组。用于从节点的虚拟路由器220的VRF 222可以被配置为使得流量沿着服务序列转发,例如,通过将用于容器化网络功能的服务VRF配置为用作服务的剩余VRF。
在一个示例用例中,对于具有前端和数据库支持的两层应用程序,前端舱可以被配置为虚拟网络A的虚拟网络端点(对应于VRF 222A),并且数据库舱可以被配置为虚拟网络B的虚拟网络端点(对应于VRF 222B)。容器式防火墙可以被部署为舱202A的容器229A实例。虚拟网络接口212A是虚拟网络A的接口,虚拟网络接口212B是虚拟网络B的接口。在虚拟网络接口212A处从前端舱接收的分组可以由容器化防火墙处理,并且经由虚拟网络接口212B通过虚拟网络B输出到后端数据库舱。
图5是示出根据本公开中描述的技术基于命名空间为虚拟执行元件创建多个网络虚拟接口的流程图。参考图2至图3的计算装置200和300的组件来描述操作。API服务器320接收创建一个或多个命名空间的请求,并用用于创建一个或多个命名空间的配置来修改配置存储328(502)。在一些示例中,创建一个或多个命名空间的请求包括命名空间规范数据27。例如,命名空间规范数据27可以用人类可读的数据串行化语言(例如,YAML、JSON等)编码。命名空间规范数据27指定至少一个命名空间。另外,至少一个命名空间的每个命名空间指定多个虚拟网络。网络控制器管理器325基于命名空间规范数据27生成命名空间配置数据,并指示网络控制器324基于命名空间规范数据创建虚拟网络(504)。网络控制器管理器325可以通过例如经由API向网络控制器324发出请求,或者通过将一个或多个网络配置对象存储在虚拟化计算基础设施的配置存储中,以这种方式指导网络控制器324。在一些示例中,命名空间规范数据27包括由每个命名空间指定的多个虚拟网络的网络拓扑框架。这样,网络控制器324可以解析命名空间规范数据,以获得用于创建多个虚拟网络的网络拓扑框架。步骤502和/或504可以作为实例化舱的一部分来执行。
API服务器320接收实例化舱202A的请求,并用用于创建舱202A的配置修改配置存储328(506)。调度器322可以选择计算装置200作为舱202A的主机从节点。API服务器320可以用多个虚拟网络的列表和舱的uuid(pod_uuid)来注释舱202A。可以使用舱的其他形式的标识符。注释可以是指示虚拟网络的舱配置的标签,例如,“虚拟网络A”和“虚拟网络B”。
网络控制器管理器325监听来自API服务器320的新对象,并确定舱202A将在计算装置200上被实例化,并根据注释确定舱202A需要与注释中指示的多个虚拟网络的虚拟网络接口。例如,监听可以响应于在RESTful接口上订阅API服务器320通知。
网络控制器管理器325指示网络控制器324为虚拟网络的舱202A创建虚拟网络接口(508)。网络控制器管理器325可以用将由网络控制器324创建的一个或多个虚拟网络接口(vni_uuids)的相应uuid以及分配的相应唯一专用虚拟网络地址(以及在某些情况下的MAC地址)来注释舱。可以使用虚拟网络接口的其他形式的标识符。
网络控制器324可以为虚拟网络创建虚拟网络接口的列表,并且可以在舱202A的接口配置数据25中将vni_uuids与pod_uuid相关联。网络控制器324可以向计算装置200的虚拟路由器220的虚拟路由器代理216发送接口配置数据25,并在计算装置200中配置相应的虚拟网络接口212A、212B(510)。虚拟网络接口此时可以表示连接到不同于虚拟路由器220的网桥的veth对。虚拟路由器代理216可以存储每个vni_uuid与相应配置的虚拟网络接口的关联。
为了设置舱202A,编排代理209获得舱202A的容器规范数据,并确保容器由计算装置200执行(512)。容器规范数据可以包括舱202A的pod_uuid。编排代理209调用单个网络模块206A来配置舱202A的虚拟网络接口(514)。网络模块206A从虚拟路由器代理216请求(516)并获得接口配置数据25(518)。网络模块206A可以通过请求对应于舱202A的容器规范数据中包括的pod_uuid的舱的接口配置数据,从虚拟路由器代理216获得接口配置数据25。
为了创建接口配置数据25(520)中指示的虚拟网络接口212A、212B中的每一个,网络模块206A可以将虚拟网络接口插入舱202A网络命名空间(例如,作为虚拟网络接口的veth对的一端)(522),并且可以在计算装置200上进行任何必要的变化(例如,将veth对的另一端连接到虚拟路由器220中——该端可能先前已经连接到另一网桥)。网络模块206A可以配置舱202A网络命名空间内的虚拟网络地址,并且可以通过调用适当的IPAM插件来设置与IP地址管理部分一致的路由。
网络模块206A通知虚拟路由器代理216现在操作的虚拟网络接口212A、212B(通过插入舱202A)(524)。网络模块206A还可以从虚拟路由器代理216获得虚拟网络地址(526),并通过通知编排代理209来更新编排控制平面(528)。
本文描述的技术可以用硬件、软件、固件或其任意组合来实现。被描述为模块、单元或组件的各种特征可以一起在集成逻辑装置中实现,或者单独实现为分立但可互操作的逻辑装置或其他硬件装置。在某些情况下,电子电路的各种特征可以实现为一个或多个集成电路装置,例如,集成电路芯片或芯片组。
如果以硬件实现,则本公开可以涉及诸如处理器或集成电路装置之类的装置,例如,集成电路芯片或芯片组。替代地或另外,如果以软件或固件实现,则这些技术可以至少部分地由包括指令的计算机可读数据存储介质实现,这些指令在被执行时促使处理器执行上述一种或多种方法。例如,计算机可读数据存储介质可以存储这样的指令,以供处理器执行。
计算机可读介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括封装材料。计算机可读介质可以包括计算机数据存储介质,例如,随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁或光数据存储介质等。在一些示例中,制品可以包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非暂时性介质。术语”非暂时性”可以表示存储介质不在载波或传播信号中体现。在某些示例中,非暂时性存储介质可以存储随时间变化的数据(例如,在RAM或高速缓存中)。
代码或指令可以是由处理电路执行的软件和/或固件,该处理电路包括一个或多个处理器,例如,一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他等效集成或分立逻辑电路。因此,本文使用的术语”处理器”可以指任何前述结构或适合于实现本文描述的技术的任何其他结构。此外,在一些方面,可以在软件模块或硬件模块内提供本公开中描述的功能。
Claims (19)
1.一种控制器,包括一个或多个计算装置,其中,一个或多个计算装置中的每一个包括耦合到存储装置的处理电路,其中,所述控制器还包括:
虚拟化计算基础设施的编排器,其中,所述编排器被配置为由所述处理电路执行,其中,所述编排器被配置为:
接收命名空间规范数据,所述命名空间规范数据指定命名空间、用于命名空间的第一虚拟网络和用于命名空间的第二虚拟网络;并且
基于命名空间规范数据向所述虚拟化计算基础设施的网络控制器发送至少一个请求,以便为要部署到命名空间并在所述虚拟化计算基础设施的计算装置的用户空间中实例化的虚拟执行元件创建第一虚拟网络和第二虚拟网络的相应虚拟网络接口;以及
网络控制器,其中,所述网络控制器被配置为由所述处理电路执行,其中,所述网络控制器被配置为:
向所述计算装置发送接口配置数据,以配置用于第一虚拟网络的第一虚拟网络接口和用于第二虚拟网络的第二虚拟网络接口,其中,虚拟路由器被配置在所述计算装置内,其中,对应于所述第一虚拟网络的第一虚拟路由和转发实例VRF和对应于所述第二虚拟网络的第二VRF被配置在所述虚拟路由器内,其中,发送所述接口配置数据使所述计算装置将所述第一虚拟网络接口附接至所述虚拟执行元件和所述第一VRF,以使得所述虚拟执行元件能够在所述第一虚拟网络上进行分组通信,并且
其中,发送所述接口配置数据使所述计算装置将所述第二虚拟网络接口附接至所述虚拟执行元件和所述第二VRF,以使得所述虚拟执行元件能够在所述第二虚拟网络上进行分组通信。
2.根据权利要求1所述的控制器,
其中,所述编排器还被配置为基于所述命名空间规范数据来指导所述网络控制器创建所述第一虚拟网络,并且
其中,所述网络控制器被配置为响应于创建所述第一虚拟网络的指导,在所述虚拟化计算基础设施中配置所述第一虚拟网络。
3.根据权利要求1所述的控制器,其中,所述命名空间规范数据使用符合用于为所述网络控制器指定虚拟网络的模式的数据来指定所述第一虚拟网络和所述第二虚拟网络。
4.根据权利要求1所述的控制器,其中,所述编排器还被配置为:
接收指定虚拟执行元件的虚拟执行元件规范数据,其中,所述虚拟执行元件规范数据包括命名空间对象,该命名空间对象将由命名空间规范数据指定的命名空间指定为虚拟执行元件的命名空间,
其中,为了发送为第一虚拟网络和第二虚拟网络创建相应虚拟网络接口的至少一个请求,所述编排器被配置为基于命名空间对象发送所述至少一个请求。
5.根据权利要求4所述的控制器,
其中,所述第一虚拟网络和所述第二虚拟网络定义了主要虚拟网络组,
其中,所述虚拟执行元件规范数据指定一个或多个虚拟网络的次要组,
其中,为第一虚拟网络和第二虚拟网络创建相应虚拟网络接口的至少一个请求包括为一个或多个虚拟网络的次要组创建相应虚拟网络接口的至少一个请求,并且
其中,所述接口配置数据包括一个或多个虚拟网络的次要组的相应虚拟网络接口。
6.根据权利要求5所述的控制器,其中,虚拟网络的次要组包括不是第一虚拟网络或第二虚拟网络的第三虚拟网络。
7.根据权利要求5所述的控制器,其中,虚拟网络的次要组包括作为第一虚拟网络的第三虚拟网络。
8.根据权利要求1所述的控制器,
其中,所述接口配置数据包括第一虚拟网络的第一虚拟网络接口的标识符和第二虚拟网络的第二虚拟网络接口的标识符。
9.根据权利要求8所述的控制器,其中,所述网络控制器被配置为:
向计算装置的虚拟路由器的虚拟路由器代理发送第一虚拟网络的第一虚拟网络接口的标识符和第二虚拟网络的第二虚拟网络接口的标识符。
10.根据权利要求8所述的控制器,其中,所述网络控制器被配置为:
向计算装置的虚拟路由器的虚拟路由器代理发送第一虚拟网络的第一虚拟网络接口的标识符和第二虚拟网络的第二虚拟网络接口的标识符;
向虚拟路由器代理发送虚拟执行元件的标识符、第一虚拟网络的第一虚拟网络接口的标识符和第二虚拟网络的第二虚拟网络接口的标识符的关联。
11.根据权利要求8所述的控制器,其中,所述编排器包括用于所述网络控制器的网络控制器管理器,其中,所述网络控制器管理器被配置为由所述处理电路执行,其中,所述网络控制器管理器被配置为:
为第一虚拟网络接口分配虚拟网络地址;
为第二虚拟网络接口分配虚拟网络地址;
指导网络控制器用第一虚拟网络接口的虚拟网络地址配置第一虚拟网络接口;并且
指导网络控制器用第二虚拟网络接口的虚拟网络地址配置第二虚拟网络接口。
12.根据权利要求1至11中任一项所述的控制器,其中,所述虚拟执行元件包括一个或多个容器。
13.根据权利要求1至11中任一项所述的控制器,其中,所述虚拟执行元件包括Kubernetes舱。
14.一种用于配置虚拟执行元件的虚拟网络接口的方法,所述方法包括:
由虚拟化计算基础设施的编排器接收命名空间规范数据,所述命名空间规范数据指定命名空间、用于命名空间的第一虚拟网络和用于命名空间的第二虚拟网络;
由编排器基于命名空间规范数据向虚拟化计算基础设施的网络控制器发送至少一个请求,以便为要部署到命名空间并在虚拟化计算基础设施的计算装置的用户空间中实例化的虚拟执行元件创建第一虚拟网络和第二虚拟网络的相应虚拟网络接口;并且
由网络控制器向计算装置发送接口配置数据,以配置用于第一虚拟网络的第一虚拟网络接口和用于第二虚拟网络的第二虚拟网络接口,其中,虚拟路由器被配置在所述计算装置内,其中,对应于所述第一虚拟网络的第一虚拟路由和转发实例VRF和对应于所述第二虚拟网络的第二VRF被配置在所述虚拟路由器内,
其中,发送所述接口配置数据使所述计算装置将所述第一虚拟网络接口附接至所述虚拟执行元件和所述第一VRF,以使得所述虚拟执行元件能够在所述第一虚拟网络上进行分组通信,并且
其中,发送所述接口配置数据使所述计算装置将所述第二虚拟网络接口附接至所述虚拟执行元件和所述第二VRF,以使得所述虚拟执行元件能够在所述第二虚拟网络上进行分组通信。
15.根据权利要求14所述的方法,
由所述编排器基于所述命名空间规范数据来指导所述网络控制器创建所述第一虚拟网络;并且
由网络控制器响应于创建第一虚拟网络的指导,在虚拟化计算基础设施中配置第一虚拟网络。
16.根据权利要求14所述的方法,其中,所述命名空间规范数据使用符合用于为所述网络控制器指定虚拟网络的模式的数据来指定所述第一虚拟网络和所述第二虚拟网络。
17.根据权利要求14至16中任一项所述的方法,还包括:
由编排器接收指定虚拟执行元件的虚拟执行元件规范数据,其中,所述虚拟执行元件规范数据包括命名空间对象,该命名空间对象将由命名空间规范数据指定的命名空间指定为虚拟执行元件的命名空间,
其中,发送为第一虚拟网络和第二虚拟网络创建相应虚拟网络接口的至少一个请求包括:基于命名空间对象发送所述至少一个请求。
18.根据权利要求17所述的方法,
其中,所述第一虚拟网络和所述第二虚拟网络定义了主要虚拟网络组,
其中,所述虚拟执行元件规范数据指定一个或多个虚拟网络的次要组,
其中,为第一虚拟网络和第二虚拟网络创建相应虚拟网络接口的至少一个请求包括为一个或多个虚拟网络的次要组创建相应虚拟网络接口的至少一个请求,并且
其中,所述接口配置数据包括一个或多个虚拟网络的次要组的相应虚拟网络接口。
19.一种非暂时性计算机可读介质,包括指令,用于使一个或多个处理器:
执行虚拟化计算基础设施的编排器,以接收命名空间规范数据,其中,所述命名空间规范数据指定命名空间、用于命名空间的第一虚拟网络和用于命名空间的第二虚拟网络;
执行编排器,以基于命名空间规范数据向虚拟化计算基础设施的网络控制器发送至少一个请求,以便为要部署到命名空间并在虚拟化计算基础设施的计算装置的用户空间中实例化的虚拟执行元件创建第一虚拟网络和第二虚拟网络的相应虚拟网络接口;并且执行网络控制器,以向计算装置发送接口配置数据,以配置用于第一虚拟网络的第一虚拟网络接口和用于第二虚拟网络的第二虚拟网络接口,其中,虚拟路由器被配置在所述计算装置内,其中,对应于所述第一虚拟网络的第一虚拟路由和转发实例VRF和对应于所述第二虚拟网络的第二VRF被配置在所述虚拟路由器内,其中,执行所述编排器以发送所述接口配置数据使所述计算装置将所述第一虚拟网络接口附接至所述虚拟执行元件和所述第一VRF,以使得所述虚拟执行元件能够在所述第一虚拟网络上进行分组通信,并且
其中,执行所述网络控制器以发送所述接口配置数据使所述计算装置将所述第二虚拟网络接口附接至所述虚拟执行元件和所述第二VRF,以使得所述虚拟执行元件能够在所述第二虚拟网络上进行分组通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310701349.7A CN116723106A (zh) | 2018-08-30 | 2019-08-29 | 控制器和网络配置方法 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/118,107 | 2018-08-30 | ||
US16/118,107 US10728145B2 (en) | 2018-08-30 | 2018-08-30 | Multiple virtual network interface support for virtual execution elements |
US16/129,441 | 2018-09-12 | ||
US16/129,441 US10855531B2 (en) | 2018-08-30 | 2018-09-12 | Multiple networks for virtual execution elements |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310701349.7A Division CN116723106A (zh) | 2018-08-30 | 2019-08-29 | 控制器和网络配置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110875848A CN110875848A (zh) | 2020-03-10 |
CN110875848B true CN110875848B (zh) | 2023-06-27 |
Family
ID=67137589
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910809461.6A Active CN110875848B (zh) | 2018-08-30 | 2019-08-29 | 控制器和用于配置虚拟执行元件的虚拟网络接口的方法 |
CN202310701349.7A Pending CN116723106A (zh) | 2018-08-30 | 2019-08-29 | 控制器和网络配置方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310701349.7A Pending CN116723106A (zh) | 2018-08-30 | 2019-08-29 | 控制器和网络配置方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10855531B2 (zh) |
EP (2) | EP4322005A1 (zh) |
CN (2) | CN110875848B (zh) |
Families Citing this family (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9882968B1 (en) * | 2014-12-09 | 2018-01-30 | Amazon Technologies, Inc. | Virtual network interface multiplexing |
US10819675B2 (en) * | 2017-08-14 | 2020-10-27 | Nicira, Inc. | Managing network connectivity between cloud computing service endpoints and virtual machines |
US20220232024A1 (en) | 2017-11-27 | 2022-07-21 | Lacework, Inc. | Detecting deviations from typical user behavior |
US11894984B2 (en) | 2017-11-27 | 2024-02-06 | Lacework, Inc. | Configuring cloud deployments based on learnings obtained by monitoring other cloud deployments |
US10425437B1 (en) | 2017-11-27 | 2019-09-24 | Lacework Inc. | Extended user session tracking |
US11765249B2 (en) | 2017-11-27 | 2023-09-19 | Lacework, Inc. | Facilitating developer efficiency and application quality |
US20220232025A1 (en) | 2017-11-27 | 2022-07-21 | Lacework, Inc. | Detecting anomalous behavior of a device |
US11785104B2 (en) | 2017-11-27 | 2023-10-10 | Lacework, Inc. | Learning from similar cloud deployments |
US11818156B1 (en) | 2017-11-27 | 2023-11-14 | Lacework, Inc. | Data lake-enabled security platform |
US11849000B2 (en) | 2017-11-27 | 2023-12-19 | Lacework, Inc. | Using real-time monitoring to inform static analysis |
US11770398B1 (en) | 2017-11-27 | 2023-09-26 | Lacework, Inc. | Guided anomaly detection framework |
US11741238B2 (en) | 2017-11-27 | 2023-08-29 | Lacework, Inc. | Dynamically generating monitoring tools for software applications |
US11792284B1 (en) | 2017-11-27 | 2023-10-17 | Lacework, Inc. | Using data transformations for monitoring a cloud compute environment |
US11973784B1 (en) | 2017-11-27 | 2024-04-30 | Lacework, Inc. | Natural language interface for an anomaly detection framework |
US11979422B1 (en) | 2017-11-27 | 2024-05-07 | Lacework, Inc. | Elastic privileges in a secure access service edge |
US10942788B2 (en) | 2018-06-15 | 2021-03-09 | Vmware, Inc. | Policy constraint framework for an sddc |
US10812337B2 (en) | 2018-06-15 | 2020-10-20 | Vmware, Inc. | Hierarchical API for a SDDC |
US11563677B1 (en) | 2018-06-28 | 2023-01-24 | Cable Television Laboratories, Inc. | Systems and methods for secure network management of virtual network function |
US11822946B2 (en) * | 2018-06-28 | 2023-11-21 | Cable Television Laboratories, Inc. | Systems and methods for secure network management of virtual network functions |
US10778540B2 (en) * | 2018-12-10 | 2020-09-15 | Sap Se | Scalable infrastructure for developing, running, and deploying arbitrary applications |
US11212366B2 (en) | 2018-12-11 | 2021-12-28 | Sap Se | Kubernetes as a distributed operating system for multitenancy/multiuser |
US11381476B2 (en) | 2018-12-11 | 2022-07-05 | Sap Se | Standardized format for containerized applications |
US10897408B2 (en) | 2018-12-14 | 2021-01-19 | Sap Se | Application server programming language running in vsystem |
US11301279B2 (en) * | 2019-02-26 | 2022-04-12 | International Business Machines Corporation | Associating virtual IP address of virtual server with appropriate operating system in server cluster |
US11895092B2 (en) * | 2019-03-04 | 2024-02-06 | Appgate Cybersecurity, Inc. | Network access controller operation |
EP3722951A1 (en) * | 2019-04-08 | 2020-10-14 | Schneider Electric Industries SAS | Service deployment in a cluster of i/o devices |
US11586752B1 (en) * | 2019-04-09 | 2023-02-21 | Equinix, Inc. | Encryption key namespace for containerized workloads |
US11128490B2 (en) * | 2019-04-26 | 2021-09-21 | Microsoft Technology Licensing, Llc | Enabling access to dedicated resources in a virtual network using top of rack switches |
US11418399B2 (en) * | 2019-04-30 | 2022-08-16 | Cisco Technology, Inc. | Multi-fabric deployment and management platform |
US10965544B2 (en) * | 2019-07-30 | 2021-03-30 | Vmware, Inc. | Augmented reality for slice management in a telco network |
US11528194B2 (en) * | 2019-09-06 | 2022-12-13 | Jpmorgan Chase Bank, N.A. | Enterprise control plane for data streaming service |
US11201955B1 (en) | 2019-12-23 | 2021-12-14 | Lacework Inc. | Agent networking in a containerized environment |
US11256759B1 (en) | 2019-12-23 | 2022-02-22 | Lacework Inc. | Hierarchical graph analysis |
US11188571B1 (en) | 2019-12-23 | 2021-11-30 | Lacework Inc. | Pod communication graph |
US11546208B2 (en) | 2019-12-31 | 2023-01-03 | Vmware, Inc. | Multi-site hybrid networks across cloud environments |
US11394577B2 (en) * | 2020-01-16 | 2022-07-19 | Charter Communications Operating, Llc | Expandable network device |
US11153261B2 (en) * | 2020-01-22 | 2021-10-19 | Cisco Technology, Inc. | Routing traffic for virtualized/containerized network functions |
US11894983B2 (en) * | 2020-03-16 | 2024-02-06 | Red Hat, Inc. | Simulation and testing of infrastructure as a service scale using a container orchestration engine |
US11316947B2 (en) * | 2020-03-30 | 2022-04-26 | International Business Machines Corporation | Multi-level cache-mesh-system for multi-tenant serverless environments |
US11907905B2 (en) * | 2020-04-01 | 2024-02-20 | VMware LLC | Namespace management techniques for facilitating multi-cluster application development |
WO2021196080A1 (en) | 2020-04-01 | 2021-10-07 | Vmware Information Technology (China) Co., Ltd. | Auto deploying network elements for heterogeneous compute elements |
US11822949B2 (en) * | 2020-04-02 | 2023-11-21 | Vmware, Inc. | Guest cluster deployed as virtual extension of management cluster in a virtualized computing system |
CN111491040B (zh) * | 2020-04-09 | 2023-03-24 | 北京城市网邻信息技术有限公司 | 一种ip分配方法以及ip分配装置 |
US11620166B2 (en) | 2020-04-14 | 2023-04-04 | Vmware, Inc. | Communications framework for multi-cluster management systems |
US11182219B2 (en) | 2020-04-14 | 2021-11-23 | Vmware, Inc. | SaaS infrastructure for flexible multi-tenancy |
US11470071B2 (en) * | 2020-04-20 | 2022-10-11 | Vmware, Inc. | Authentication for logical overlay network traffic |
US11231967B2 (en) * | 2020-04-20 | 2022-01-25 | Stratum, Llc | Dynamically allocating and managing cloud workers |
US11595350B2 (en) * | 2020-05-08 | 2023-02-28 | Ribbon Communications Operating Company, Inc. | Networking as a service |
CN113691572B (zh) * | 2020-05-19 | 2023-09-22 | 中移(成都)信息通信科技有限公司 | 一种数据转发方法、装置、设备及计算机存储介质 |
US11689455B2 (en) | 2020-05-28 | 2023-06-27 | Oracle International Corporation | Loop prevention in virtual layer 2 networks |
US20220006778A1 (en) * | 2020-07-02 | 2022-01-06 | Kaloom Inc. | Computing device and method for generating a functional ipv6 address of a pod |
US11501026B2 (en) * | 2020-07-13 | 2022-11-15 | Avaya Management L.P. | Method to encrypt the data at rest for data residing on Kubernetes persistent volumes |
EP4183119A1 (en) * | 2020-07-14 | 2023-05-24 | Oracle International Corporation | Virtual layer-2 network |
CN111835862B (zh) * | 2020-07-22 | 2023-05-30 | 浪潮云信息技术股份公司 | 一种参考流量类型部署对象存储后端服务的实现方法 |
US11803408B2 (en) | 2020-07-29 | 2023-10-31 | Vmware, Inc. | Distributed network plugin agents for container networking |
US11863352B2 (en) | 2020-07-30 | 2024-01-02 | Vmware, Inc. | Hierarchical networking for nested container clusters |
US11811558B2 (en) | 2020-08-12 | 2023-11-07 | Microsoft Technology Licensing, Llc | Cross-subscription multi-VNet homing |
US11349910B2 (en) * | 2020-08-12 | 2022-05-31 | Verizon Patent And Licensing Inc. | Pinhole access for elevated containerized process capability |
CN111740869B (zh) * | 2020-08-19 | 2021-01-08 | 广东省新一代通信与网络创新研究院 | 基于物理网卡的kubernetes网络实现方法、系统、设备及介质 |
CN112000441B (zh) * | 2020-08-24 | 2023-01-20 | 浪潮云信息技术股份公司 | 一种基于kubernetes声明式编排管理虚机生命周期的方法 |
US11190406B1 (en) * | 2020-09-14 | 2021-11-30 | Microsoft Technology Licensing, Llc | Injecting network endpoints into a SDN |
US11750450B1 (en) * | 2020-11-02 | 2023-09-05 | Veritas Technologies Llc | Methods and systems for network configuration in storage environments |
CN112187671B (zh) * | 2020-11-05 | 2024-03-12 | 北京金山云网络技术有限公司 | 一种网络接入方法及其相关设备 |
CN112422330B (zh) * | 2020-11-06 | 2023-05-30 | 北京连星科技有限公司 | 一种企业网络IPv6代际升迁全生命周期管理的方法 |
US20220158912A1 (en) * | 2020-11-16 | 2022-05-19 | Juniper Networks, Inc. | Active assurance of network slices |
CN112565047B (zh) * | 2020-11-19 | 2022-03-04 | 浪潮思科网络科技有限公司 | 一种在docker中使用VPP构建网络的方法、装置、设备及介质 |
US11846929B2 (en) | 2020-12-04 | 2023-12-19 | Rockwell Automation Technologies, Inc. | Automation visualization content delivery via container orchestration systems |
US12015552B2 (en) | 2020-12-30 | 2024-06-18 | Oracle International Corporation | Layer-2 networking information in a virtualized cloud environment |
US11658933B2 (en) * | 2020-12-31 | 2023-05-23 | Juniper Networks, Inc. | Dynamically learning media access control and internet protocol addresses |
US11463312B2 (en) * | 2021-01-21 | 2022-10-04 | Cisco Technology, Inc. | Secure onboarding of network devices |
US11671355B2 (en) | 2021-02-05 | 2023-06-06 | Oracle International Corporation | Packet flow control in a header of a packet |
US11777897B2 (en) | 2021-02-13 | 2023-10-03 | Oracle International Corporation | Cloud infrastructure resources for connecting a service provider private network to a customer private network |
US11743182B2 (en) * | 2021-03-01 | 2023-08-29 | Juniper Networks, Inc. | Container networking interface for multiple types of interfaces |
WO2022187796A1 (en) * | 2021-03-01 | 2022-09-09 | Juniper Networks, Inc. | Containerized router with virtual networking |
CN112637037B (zh) * | 2021-03-10 | 2021-06-18 | 北京瑞莱智慧科技有限公司 | 跨地域容器通讯系统、方法、存储介质及计算机设备 |
US11632268B2 (en) * | 2021-03-30 | 2023-04-18 | Juniper Networks, Inc. | Generating route target values for virtual private network routes |
US11743232B2 (en) | 2021-04-08 | 2023-08-29 | Cisco Technology, Inc. | Software defined branch single internet protocol orchestration |
CN113419813B (zh) * | 2021-05-21 | 2023-02-24 | 济南浪潮数据技术有限公司 | 一种基于容器平台部署裸机管理服务的方法及装置 |
US11606254B2 (en) * | 2021-06-11 | 2023-03-14 | Vmware, Inc. | Automatic configuring of VLAN and overlay logical switches for container secondary interfaces |
CN115550225A (zh) * | 2021-06-30 | 2022-12-30 | 瞻博网络公司 | 使用具有处理单元的网络接口卡来确定延迟 |
US11838206B2 (en) | 2021-07-23 | 2023-12-05 | Vmware, Inc. | Edge node with datapath split between pods |
GB2609258B (en) * | 2021-07-27 | 2024-01-31 | Cubic Telecom Ltd | Vehicle data |
TWI803035B (zh) * | 2021-08-12 | 2023-05-21 | 威聯通科技股份有限公司 | 適用於容器的電子裝置及運行中容器系統的軟體更新方法 |
US11829780B2 (en) * | 2021-09-22 | 2023-11-28 | International Business Machines Corporation | Open-source container cluster hot plug adapter |
US11902160B2 (en) * | 2021-09-30 | 2024-02-13 | Juniper Networks, Inc. | EVPN host routed bridging (HRB) and EVPN cloud native data center |
CN114553771B (zh) * | 2021-12-24 | 2023-10-13 | 天翼云科技有限公司 | 用于虚拟路由器加载的方法及相关设备 |
US11659027B1 (en) * | 2022-01-06 | 2023-05-23 | Vmware, Inc. | Multi-network/domain service discovery in a container orchestration platform |
US20230231741A1 (en) | 2022-01-14 | 2023-07-20 | Vmware, Inc. | Per-namespace ip address management method for container networks |
US20230239268A1 (en) * | 2022-01-21 | 2023-07-27 | Vmware, Inc. | Managing ip addresses for dpdk enabled network interfaces for cloud native pods |
CN114520752A (zh) * | 2022-02-11 | 2022-05-20 | 北京秒如科技有限公司 | 基于智能网卡的vxlan协议控制平面卸载方法及装置 |
CN115086166B (zh) * | 2022-05-19 | 2024-03-08 | 阿里巴巴(中国)有限公司 | 计算系统、容器网络配置方法及存储介质 |
CN115473760B (zh) * | 2022-08-31 | 2023-12-26 | 上海仙途智能科技有限公司 | 数据传输方法及装置、终端设备、计算机可读存储介质 |
US20240129161A1 (en) * | 2022-09-09 | 2024-04-18 | Juniper Networks, Inc. | Network segmentation for container orchestration platforms |
CN115357369B (zh) * | 2022-10-21 | 2023-03-24 | 之江实验室 | 一种k8s容器云平台中CRD应用集成调用方法与装置 |
US11848910B1 (en) | 2022-11-11 | 2023-12-19 | Vmware, Inc. | Assigning stateful pods fixed IP addresses depending on unique pod identity |
CN115834291B (zh) * | 2022-11-16 | 2024-04-09 | 中国联合网络通信集团有限公司 | 分布式内网服务数据获取方法、装置、设备及存储介质 |
US11831511B1 (en) | 2023-01-17 | 2023-11-28 | Vmware, Inc. | Enforcing network policies in heterogeneous systems |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6351751B1 (en) | 1998-05-14 | 2002-02-26 | Sun Microsystems, Inc. | Persistent storage managers for configuring client/server environments |
US6115715A (en) | 1998-06-29 | 2000-09-05 | Sun Microsystems, Inc. | Transaction management in a configuration database |
US7227838B1 (en) | 2001-12-14 | 2007-06-05 | Cisco Technology, Inc. | Enhanced internal router redundancy |
US7489700B2 (en) | 2002-11-20 | 2009-02-10 | Hitachi Communication Technologies, Ltd. | Virtual access router |
US20040210623A1 (en) | 2003-03-06 | 2004-10-21 | Aamer Hydrie | Virtual network topology generation |
US7436840B1 (en) | 2003-05-16 | 2008-10-14 | Sprint Communications Company L.P. | Network system manager for telecommunication carrier virtual networks |
US7539135B1 (en) | 2003-05-16 | 2009-05-26 | Sprint Communications Company L.P. | System and method for establishing telecommunication carrier virtual networks |
US7460526B1 (en) | 2003-10-30 | 2008-12-02 | Sprint Communications Company L.P. | System and method for establishing a carrier virtual network inverse multiplexed telecommunication connection |
US9043792B1 (en) * | 2004-11-17 | 2015-05-26 | Vmware, Inc. | Virtual local area network (vlan) coordinator providing access to vlans |
US20070288921A1 (en) | 2006-06-13 | 2007-12-13 | King Steven R | Emulating a network-like communication connection between virtual machines on a physical device |
US7738457B2 (en) | 2006-12-20 | 2010-06-15 | Oracle America, Inc. | Method and system for virtual routing using containers |
EP2111010A1 (en) | 2008-04-17 | 2009-10-21 | Nokia Siemens Networks Oy | Method for preserving the network address during a vertical handover |
US8413241B2 (en) | 2009-09-17 | 2013-04-02 | Oracle America, Inc. | Integrated intrusion deflection, detection and introspection |
US8442048B2 (en) | 2009-11-04 | 2013-05-14 | Juniper Networks, Inc. | Methods and apparatus for configuring a virtual network switch |
JP5664557B2 (ja) | 2010-01-14 | 2015-02-04 | 日本電気株式会社 | 計算機、ネットワーク接続切替え方法およびプログラム |
US20120042054A1 (en) * | 2010-08-13 | 2012-02-16 | Dell Products, Lp | System and Method for Virtual Switch Architecture to Enable Heterogeneous Network Interface Cards within a Server Domain |
US20120170462A1 (en) * | 2011-01-05 | 2012-07-05 | Alcatel Lucent Usa Inc. | Traffic flow control based on vlan and priority |
US9276816B1 (en) * | 2011-01-17 | 2016-03-01 | Cisco Technology, Inc. | Resource management tools to create network containers and virtual machine associations |
US20120287931A1 (en) | 2011-05-13 | 2012-11-15 | International Business Machines Corporation | Techniques for securing a virtualized computing environment using a physical network switch |
JP5477426B2 (ja) | 2011-09-05 | 2014-04-23 | 横河電機株式会社 | パケット転送装置及び無線通信システム |
US8949830B2 (en) | 2012-03-29 | 2015-02-03 | International Business Machines Corporation | Emulating a data center network on a single physical host with support for virtual machine mobility |
US10516607B2 (en) | 2012-04-12 | 2019-12-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Layer 3 service implementation in cloud servers and method |
US8750288B2 (en) | 2012-06-06 | 2014-06-10 | Juniper Networks, Inc. | Physical path determination for virtual network packet flows |
US20140254565A1 (en) | 2013-03-05 | 2014-09-11 | Qualcomm Incorporated | Systems and methods for multiple concurrent wlan operational modes |
US9473394B1 (en) | 2014-01-10 | 2016-10-18 | Juniper Networks, Inc. | Proactive flow table for virtual networks |
US9860117B2 (en) | 2014-02-03 | 2018-01-02 | Sprint Communications Company, L.P. | Automatically generated virtual network elements for virtualized packet networks |
US9479457B2 (en) * | 2014-03-31 | 2016-10-25 | Juniper Networks, Inc. | High-performance, scalable and drop-free data center switch fabric |
US9602422B2 (en) | 2014-05-05 | 2017-03-21 | Nicira, Inc. | Implementing fixed points in network state updates using generation numbers |
US9910765B2 (en) | 2014-05-22 | 2018-03-06 | Citrix Systems, Inc. | Providing testing environments for software applications using virtualization and a native hardware layer |
US9712436B2 (en) | 2014-07-03 | 2017-07-18 | Red Hat Israel, Ltd. | Adaptive load balancing for bridged systems |
US9722877B2 (en) * | 2014-09-12 | 2017-08-01 | Viasat, Inc. | Method and apparatus for managing virtual networks via cloud hosted application |
CN104253866B (zh) * | 2014-09-20 | 2018-03-27 | 华为技术有限公司 | 虚拟网络功能网元的软件部署方法、系统及相关设备 |
US9935829B1 (en) | 2014-09-24 | 2018-04-03 | Amazon Technologies, Inc. | Scalable packet processing service |
US9755898B2 (en) | 2014-09-30 | 2017-09-05 | Nicira, Inc. | Elastically managing a service node group |
US10069933B2 (en) | 2014-10-23 | 2018-09-04 | Cisco Technology, Inc. | System and method for creating virtual interfaces based on network characteristics |
US9559898B2 (en) * | 2014-12-19 | 2017-01-31 | Vmware, Inc. | Automatically configuring data center networks with neighbor discovery protocol support |
CN104601592B (zh) * | 2015-01-31 | 2017-10-17 | 华为技术有限公司 | 一种接入云服务的方法及接入设备 |
WO2016159813A1 (en) * | 2015-03-30 | 2016-10-06 | Emc Corporation | Network address sharing in a multitenant, monolithic application environment |
US9792141B1 (en) | 2015-05-28 | 2017-10-17 | Amazon Technologies, Inc. | Configured generation of virtual machine images |
US10721290B2 (en) | 2015-06-05 | 2020-07-21 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment using executable containers and virtual machines |
US10148493B1 (en) | 2015-06-08 | 2018-12-04 | Infoblox Inc. | API gateway for network policy and configuration management with public cloud |
US9979639B2 (en) | 2015-07-28 | 2018-05-22 | Futurewei Technologies, Inc. | Single network interface for multiple interface virtual network functions |
US10121009B2 (en) | 2015-09-25 | 2018-11-06 | Synack, Inc. | Computer system for discovery of vulnerabilities in applications including guided tester paths based on application coverage measures |
US10892942B2 (en) | 2016-01-22 | 2021-01-12 | Equinix, Inc. | Container-based cloud exchange disaster recovery |
WO2017173142A1 (en) | 2016-03-31 | 2017-10-05 | Alibaba Group Holding Limited | Interworking between physical network and virtual network |
US10819630B1 (en) | 2016-04-20 | 2020-10-27 | Equinix, Inc. | Layer three instances for a cloud-based services exchange |
CN109154887A (zh) | 2016-05-23 | 2019-01-04 | W·特纳 | 包括用户接口、服务层和配备有操作系统内核的核心层的超融合系统 |
US20180063201A1 (en) | 2016-08-25 | 2018-03-01 | Tianhu Zhang | Device and method for managing a communication interface of a communication device |
US10333959B2 (en) | 2016-08-31 | 2019-06-25 | Nicira, Inc. | Use of public cloud inventory tags to configure data compute node for logical network |
US10484302B2 (en) | 2016-08-27 | 2019-11-19 | Nicira, Inc. | Managed forwarding element executing in public cloud data compute node with different internal and external network addresses |
WO2018063332A1 (en) | 2016-09-30 | 2018-04-05 | Intel Corporation | Geographic service classification and routing |
US10761896B2 (en) | 2017-02-22 | 2020-09-01 | Cisco Technology, Inc. | System and method of lightweight decentralized NFV orchestration |
US20180302490A1 (en) * | 2017-04-13 | 2018-10-18 | Cisco Technology, Inc. | Dynamic content delivery network (cdn) cache selection without request routing engineering |
US10432466B2 (en) | 2017-06-22 | 2019-10-01 | Nicira, Inc. | Translating PAAS/CAAS abstractions to logical network topologies |
US10721095B2 (en) | 2017-09-26 | 2020-07-21 | Oracle International Corporation | Virtual interface system and method for multi-tenant cloud networking |
US10805215B2 (en) | 2018-03-20 | 2020-10-13 | Cisco Technology, Inc. | Intra-host and end-to-end packet path and treatment tracing using in-situ OAM in container networking architecture |
US10250677B1 (en) | 2018-05-02 | 2019-04-02 | Cyberark Software Ltd. | Decentralized network address control |
US10778646B2 (en) * | 2018-05-07 | 2020-09-15 | Cisco Technology, Inc. | Globally deployable context aware VPN headends in scale through namespaces |
US10728145B2 (en) * | 2018-08-30 | 2020-07-28 | Juniper Networks, Inc. | Multiple virtual network interface support for virtual execution elements |
-
2018
- 2018-09-12 US US16/129,441 patent/US10855531B2/en active Active
-
2019
- 2019-06-28 EP EP23184558.7A patent/EP4322005A1/en active Pending
- 2019-06-28 EP EP19183175.9A patent/EP3617880A1/en not_active Withdrawn
- 2019-08-29 CN CN201910809461.6A patent/CN110875848B/zh active Active
- 2019-08-29 CN CN202310701349.7A patent/CN116723106A/zh active Pending
-
2020
- 2020-11-11 US US16/949,699 patent/US11171830B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3617880A1 (en) | 2020-03-04 |
EP4322005A1 (en) | 2024-02-14 |
CN110875848A (zh) | 2020-03-10 |
US11171830B2 (en) | 2021-11-09 |
US20210067408A1 (en) | 2021-03-04 |
US10855531B2 (en) | 2020-12-01 |
US20200076685A1 (en) | 2020-03-05 |
CN116723106A (zh) | 2023-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110875848B (zh) | 控制器和用于配置虚拟执行元件的虚拟网络接口的方法 | |
CN111756785B (zh) | 一种配置负载平衡器的系统及方法 | |
CN110875844B (zh) | 用于虚拟执行元件的多虚拟网络接口支持 | |
US12010093B1 (en) | Allocating addresses from pools | |
US11074091B1 (en) | Deployment of microservices-based network controller | |
US10708082B1 (en) | Unified control plane for nested clusters in a virtualized computing infrastructure | |
US11159366B1 (en) | Service chaining for virtual execution elements | |
US11743182B2 (en) | Container networking interface for multiple types of interfaces | |
US11171834B1 (en) | Distributed virtualized computing infrastructure management | |
US20220334864A1 (en) | Plurality of smart network interface cards on a single compute node | |
US11658933B2 (en) | Dynamically learning media access control and internet protocol addresses | |
US11991077B2 (en) | Data interfaces with isolation for containers deployed to compute nodes | |
US20230079209A1 (en) | Containerized routing protocol process for virtual private networks | |
CN116506329A (zh) | 虚拟路由器中的数据包丢失监控 | |
EP4075757A1 (en) | A plurality of smart network interface cards on a single compute node | |
EP4160410A1 (en) | Cloud native software-defined network architecture | |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Juniper Networks, Inc. Address before: California, USA Applicant before: Jungle network |
|
GR01 | Patent grant | ||
GR01 | Patent grant |