CN111770162B - 网络带宽限制方法、装置、主节点及存储介质 - Google Patents
网络带宽限制方法、装置、主节点及存储介质 Download PDFInfo
- Publication number
- CN111770162B CN111770162B CN202010595722.1A CN202010595722A CN111770162B CN 111770162 B CN111770162 B CN 111770162B CN 202010595722 A CN202010595722 A CN 202010595722A CN 111770162 B CN111770162 B CN 111770162B
- Authority
- CN
- China
- Prior art keywords
- network bandwidth
- pod
- created
- node
- child node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000004044 response Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 238000002372 labelling Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
-
- 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/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/78—Architectures of resource allocation
- H04L47/783—Distributed allocation of resources, e.g. bandwidth brokers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及Kubernetes技术领域,提供了一种网络带宽限制方法、装置、主节点及存储介质,所述方法包括:获取待创建Pod的资源需求信息;当资源需求信息中包括网络带宽需求信息时,依据网络带宽需求信息更新待创建Pod,以使待创建Pod运行时依据网络带宽需求信息对待创建Pod使用的实时网络带宽进行限制;依据网络带宽需求信息对待创建Pod进行调度,以从多个子节点中确定目标子节点、并在目标子节点创建并运行待创建Pod。与现有技术相比,本发明解决了因网络带宽资源抢占严重、网络带宽资源利用不合理而导致的网络带宽资源的使用不均衡的问题,进而改善了Kubernetes集群的性能。
Description
技术领域
本发明涉及Kubernetes技术领域,具体而言,涉及一种网络带宽限制方法、装置、主节点及存储介质。
背景技术
Kubernetes将多台服务器组成集群,其中的服务器节点分为主节点(也称为Master节点)和子节点(也称为Node节点),主节点主要负责运行集群的控制平面,子节点主要负责运行具体业务,应用以Pod形式部署至Kubernetes平台的子节点中。默认情况下,应用可以申请自身需要使用的CPU、内存、存储等硬件资源,系统根据应用的申请情况进行合理调度,将应用运行在集群中合适的服务器上。
在Pod运行过程中经常会出现网络带宽资源的使用不均衡、进而影响Kubernetes集群性能等问题。
发明内容
本发明实施例的目的在于提供了一种网络带宽限制方法、装置、主节点及存储介质,其能够通过限制Pod运行时使用的子节点的网络带宽,并结合网络带宽需求信息对Pod进行合理调度,解决了因网络带宽资源抢占严重、网络带宽资源利用不合理而导致的网络带宽资源的使用不均衡的问题,进而改善了Kubernetes集群的性能。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供一种网络带宽限制方法,应用于Kubernetes集群中的主节点,主节点与多个子节点通信连接,所述方法包括:获取待创建Pod的资源需求信息;当资源需求信息中包括网络带宽需求信息时,依据网络带宽需求信息更新待创建Pod,以使待创建Pod运行时依据网络带宽需求信息对待创建Pod使用的实时网络带宽进行限制;依据网络带宽需求信息对待创建Pod进行调度,以从多个子节点中确定目标子节点、并在目标子节点创建并运行待创建Pod。
第二方面,本发明实施例提供一种网络带宽限制装置,应用于Kubernetes集群中的主节点,所述主节点与多个子节点通信连接,所述装置包括获取模块、更新模块及调度模块,其中,获取模块用于获取待创建Pod的资源需求信息;更新模块用于当资源需求信息中包括网络带宽需求信息时,依据网络带宽需求信息更新待创建Pod,以使待创建Pod运行时依据网络带宽需求信息对待创建Pod使用的实时网络带宽进行限制;调度模块用于依据网络带宽需求信息对待创建Pod进行调度,以从多个子节点中确定目标子节点、并在目标子节点创建并运行待创建Pod。
第三方面,本发明实施例提供一种主节点,主节点包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的网络带宽限制方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的网络带宽限制方法。
相对于现有技术,本发明实施例提供了一种网络带宽限制方法、装置、主节点及存储介质,当待创建Pod有网络带宽需求时,依据待创建Pod的资源需求信息中的网络带宽需求信息更新待创建Pod,以使待创建Pod运行时依据网络带宽需求信息对其使用的实时网络带宽进行限制,依据网络带宽需求信息对待创建Pod进行调度,以从多个子节点中确定目标子节点,并在目标子节点创建并运行待创建Pod,与现有技术相比,本发明实施例通过限制Pod运行时使用的子节点的实时网络带宽,并结合网络带宽需求信息对Pod进行合理调度,解决了因网络带宽资源抢占严重、网络带宽资源利用不合理而导致的网络带宽资源的使用不均衡的问题,进而改善了Kubernetes集群的性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的应用场景图。
图2示出了本发明实施例提供的主节点的方框示意图。
图3示出了本发明实施例提供的一种网络带宽限制方法的流程图。
图4示出了本发明实施例提供的另一种网络带宽限制方法的流程图。
图5示出了本发明实施例提供的另一种网络带宽限制方法的流程图。
图6示出了本发明实施例提供的另一种网络带宽限制方法的流程图。
图7示出了本发明实施例提供的网络带宽限制装置的方框示意图。
图8示出了本发明实施例提供Kubernetes集群中另一种模块划分方式的示意图。
图标:10-主节点;11-处理器;12-存储器;13-总线;14-通信接口;20-子节点;100-网络带宽限制装置;110-获取模块;120-更新模块;130-调度模块;140-上报模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
请参考图1,图1示出了本发明实施例提供的应用场景图,Kubernetes集群包括一个主节点10和多个子节点20,主节点10与每一子节点20均通信连接,当一个应用需要部署至Kubernetes集群时,首先,该应用会以Pod的形式实现,在子节点创建后运行该Pod,由此实现该应用的部署,其中,一个应用可以是一个完整的程序软件,也可以是一个程序软件中的一个独立功能模块等。主节点根据Pod的资源需求信息从多个子节点20中确定一个目标子节点,在该目标子节点上创建该Pod后运行该Pod,由此实现该Pod对应的应用的部署。
针对在Pod运行过程中出现的网络带宽资源的使用不均衡的问题,申请人发现,传统的Pod调度方法在对Pod进行调度时,并未提供对Pod所需的网络带宽资源进行申请的方法,因而,无法在Pod调度时像对CPU、内存、存储等硬件资源那样对网络带宽资源进行调度。
为了实现网络带宽资源在各子节点上的均衡利用,虽然可以通过现有技术中亲和性调度策略,将申请大量网络资源的Pod尽可能地分散调度,尽量满足业务的网络资源需求,但是,这一方法存在着非常大的弊端,一方面,这一解决方案只能定性而无法定量地解决问题,Pod所需的网络资源量千差万别,单纯地分散调度,仍旧有可能将多个资源需求量较大的Pod调度在同一个节点上;另外,每一个节点的网络带宽都不一样,单纯的分散调度还是无法充分利用各节点的网络带宽资源。
另外,申请人还发现,当前技术中,Pod在运行时,对于其所在的子节点的网络带宽的占用几乎是没有限制的,因此,运行于同一个子节点的多个Pod对于网络带宽资源的抢占是非常严重的,这也是导致网络带宽资源在各子节点上的不能得以均衡利用原因之一。
经过上述分析,申请人提供了一种网络带宽限制方法、装置、主节点及存储介质,既可以限制Pod运行时使用的子节点的网络带宽,又使得网络带宽在Pod创建时作为一种硬件资源进行定量申请以对Pod进行合理调度,从而实现了网络带宽资源在各子节点上的均衡利用,下面将对此进行详细描述。
在本实施例中,基于图1的场景,主节点10获取到待创建Pod的资源需求信息后,判断资源需求信息中是否包括网络带宽需求信息,若包括网络带宽需求信息,则依据网络带宽需求信息更新待创建Pod,主节点10再依据网络带宽需求信息对待创建Pod进行调度,以从多个子节点20中确定目标子节点,在目标子节点创建并运行待创建Pod,待创建Pod运行时依据所述网络带宽需求信息对所述待创建Pod使用的实时网络带宽进行限制。
需要说明的是,图1只是示例,每个子节点20上只运行了一个Pod,事实上,实际应用场景中,一个子节点20上可以同时运行多个Pod。
主节点10可以是由一个服务器实现,也可以是多个服务器组成的服务器组实现,或者是云端服务器等,此处的服务器可以是实体服务器,或者可以实现与实体服务器具有相同功能的虚拟机等。
子节点20可以是物理主机,也可以是实现与物理主机具有相同功能的虚拟机等。
基于图1,本发明实施例还给出了图1中的主节点10的方框示意图,请参照图2,图2示出了本发明实施例提供的主节点10的方框示意图,主节点10包括处理器11、存储器12、总线13、通信接口14,处理器11、存储器12及通信接口14通过总线13连接。
处理器11可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,网络带宽限制方法的各步骤可以通过处理器11中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器11可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器12用于存储程序,例如上述网络带宽限制装置。网络带宽限制装置包括至少一个可以软件或固件(firmware)的形式存储于存储器12中或固化在主节点10的操作系统(operating system,OS)中的软件功能模块。处理器11在接收到执行指令后,执行所述程序以实现下述实施例揭示的网络带宽限制方法。
主节点10通过通信接口14与子节点20、或者与其他外设设备进行通信。
在图1和图2的基础上,本发明实施例提供了一种网络带宽限制方法,请参照图3,图3示出了本发明实施例提供的一种网络带宽限制方法的流程图,该方法包括以下步骤:
步骤S110,获取待创建Pod的资源需求信息。
在本实施例中,资源需求信息包括、但不限于CPU资源需求信息、内存资源需求信息等,例如,CPU资源需求信息包括、但不限于CPU资源需求量、CPU资源需求的性能指标等。
在本实施例中,资源需求信息可以、但不限于用YAML格式、JSON格式等文件格式进行组织。
步骤S120,当资源需求信息中包括网络带宽需求信息时,依据网络带宽需求信息更新待创建Pod,以使待创建Pod运行时依据网络带宽需求信息对待创建Pod使用的实时网络带宽进行限制。
在本实施例中,网络带宽需求信息用于表征待创建Pod运行时所需的网络带宽,网络带宽需求信息包括、但不限于网络带宽需求量、网络带宽需求的类型(是出网带宽还是入网带宽)、网络带宽上限值、网络带宽的下限值等。
在本实施例中,资源需求信息中携带网络带宽需求信息的具体方式可以是:在spec.resources.request和spec.resources.limits字段中进行标识,由于网络带宽为扩展资源类型,两个字段中的数值应该相等,例如,spec.resources.request=100Mb/s,spec.resources.limits=100Mb/s。
下面是对request和limit字段进行设置的结果:
在本实施例中,由于不是所有应用场景都需要考虑网络带宽需求信息,当资源需求信息中不包括网络带宽需求信息时,待创建Pod按照现有的方式进行处理。由此,保证了根据网络带宽需求信息进行处理的灵活性。
步骤S130,依据网络带宽需求信息对待创建Pod进行调度,以从多个子节点中确定目标子节点、并在目标子节点创建并运行待创建Pod。
在本实施例中,目标子节点为最终运行待创建Pod的子节点,通过网络带宽需求信息首先将多个子节点中不满足网络带宽需求信息表征的网络带宽需求的子节点过滤掉,例如,待创建Pod所需的网络带宽为100Mb/s,网络带宽低于100Mb/s的子节点首先被过滤掉。
本发明实施例提供的上述方法,依据网络带宽需求信息更新待创建Pod,使得待创建Pod运行时可以依据网络带宽需求信息对待创建Pod运行时使用的目标子节点的实时网络带宽进行限制,同时结合网络带宽需求信息对Pod进行合理调度,解决了因网络带宽资源抢占严重、网络带宽资源利用不合理而导致的网络带宽资源的使用不均衡的问题,进而改善了Kubernetes集群的性能。
在图3的基础上,本发明实施例还提供另一种网络带宽限制方法,请参照图4,图4示出了本发明实施例提供的另一种网络带宽限制方法的流程图,步骤S120还包括以下子步骤:
子步骤S1201,基于预设模板及网络带宽需求信息生成补丁数据。
在本实施例中,预设模板用于表征补丁数据的生成规则,以便根据生成的补丁数据更新待创建Pod,使更新后的待创建Pod中包括网络带宽需求信息。
在本实施例中,补丁数据包括了需要更新至待创建Pod的网络带宽需求信息。
作为一种具体实施方式,子步骤S1201可以运行在主节点,也可以运行在独立于主节点的主机上。当运行在独立于主节点的主机上时,主节点与主机可以以HTTP方式进行通信,主节点可以将待创建Pod的资源需求信息或者直接将网络带宽需求信息放入至HTTPRequest数据包中,主机提取收到的HTTP Request数据包中的网络带宽需求信息,并基于预设模板及网络带宽需求信息,生成补丁数据,再将补丁数据放入至HTTP Response数据包中返回至主节点。
子步骤S1202,通过补丁数据,将与网络带宽需求信息对应的预设字段加入至待创建Pod,以对待创建Pod使用的实时网络带宽的限制进行标注。
在本实施例中,作为一种具体的更新待创建Pod的实施方式,补丁数据会修改Pod的Annotation字段,例如:
metadata:
annotations:
kubernetes.io/ingress-bandwidth:100M
kubernetes.io/egress-bandwidth:100M
其中,kubernetes.io/ingress-bandwidth和kubernetes.io/egress-bandwidth为与网络带宽需求信息对应的预设字段。
需要说明的是,通过补丁数据更新待创建Pod是依据网络带宽需求信息更新待创建Pod的一种实现方式,事实上,除了补丁数据这种更新方式之外,还可以通过JSON PATCH、JSON Merge PATCH和Strategic Merge PATCH等方式对待创建Pod进行更新。
在本实施例中,通过补丁数据更新待创建Pod后,在待创建Pod创建过程中,根据预设字段为Pod构建网络栈时,生成网络流量控制规则,实现Pod实际使用网络带宽的限制。
本发明实施例提供的上述方法,通过补丁数据的更新方式更新待创建Pod,只需要新增的网络带宽需求信息对应的预设字段,无需对待创建Pod中的其他数据进行更新,由此减少了待创建Pod的数据更新量,同时提高了更新方式的灵活性。
在图3的基础上,本发明实施例还提供另一种网络带宽限制方法,请参照图5,图5示出了本发明实施例提供的另一种网络带宽限制方法的流程图,步骤S130还包括以下子步骤:
子步骤S1301,获取每一子节点的网络带宽。
在本实施例中,对于任意一个子节点来说,该子节点的网络带宽可以是与主节点通信的网卡的网络带宽,例如子节点1包括2张网卡,网卡1和网卡2,其中子节点1通过网卡1与主节点进行通信,则网卡1的网络带宽即为子节点1的网络带宽。
子步骤S1302,将满足预选策略、且网络带宽满足网络带宽需求量的子节点作为预选子节点。
在本实施例中,网络带宽需求信息包括网络带宽需求量,即满足待创建Pod运行需求的网络带宽。
在本实施例中,主节点预先存储有预选策略和优选策略,预选策略用于过滤掉不满足Pod运行的最低要求的子节点,优选策略用于对预选子节点进行评分和排名,以找到最适合待创建Pod运行的子节点。
在本实施例中,网络带宽是本发明实施例引入的一种与CPU、内存资源类似的新资源,为了保证最终从多个子节点中确定的用于创建并运行待创建Pod的子节点能够满足网络带宽需求量,预选子节点除了满足预选策略,同时还要满足网络带宽需求量。例如,子节点为:节点1~节点5,满足预选策略的子节点为:节点1,节点3、节点4和节点5,满足网络带宽需求量的子节点为:节点4和节点5,则预选子节点为:节点4和节点5。
需要说明的是,预选策略可以包括多个预选策略项,满足预选策略是指满足预选策略中所有预选策略项。
子步骤S1303,依据优选策略对每一预选子节点进行评分,得到每一预选子节点的得分。
在本实施例中,优选策略可以有多个优选策略项,每一优选策略项可以对应一个优选权重,当存在多个优选策略项时,针对每一个预选子节点,使用每一优选策略项进行评分,得到每一优选策略项的得分,根据每一优选策略项的得分及对应的优选权重,计算最终的加权总分,得到该预选子节点的得分。
子步骤S1304,将得分最高的预选子节点作为目标子节点。
在本实施例中,目标子节点为既满足待创建Pod的资源需求(包括网卡带宽需求量)又是最适合待创建Pod运行的子节点,最终保证各子节点上网络带宽资源的均衡利用。
在本实施例中,作为示例,在目标子节点创建并运行待创建Pod后,目标子节点可以根据Annotations中的预设字段添加流量控制配置,实现待创建Pod的实时网络带宽限制:
#tc qdisc show
qdisc noqueue 0:dev lo root refcnt 2
……
qdisc noqueue 0:dev calieadf0fd67eb root refcnt 2
qdisc tbf 1:dev calif4f1e224be6root refcnt 2rate 100Mbit burst 256Mblat 25.0ms
qdisc ingress ffff:dev calif4f1e224be6parent ffff:fff1----------------
qdisc tbf 1:dev calidc0c3c5b24c root refcnt 2rate 100Mbit burst 256Mblat 25.0ms
qdisc ingress ffff:dev calidc0c3c5b24c parent ffff:fff1----------------
qdisc noqueue 0:dev cali433e2888302root refcnt 2
qdisc tbf 1:dev 834e root refcnt 2rate 100Mbit burst 256Mb lat 25.0ms
qdisc tbf 1:dev 3986root refcnt 2rate 100Mbit burst 256Mb lat 25.0ms
在目标子节点进行网络带宽限制之前,Pod能够无限制地使用目标子节点的带宽:
在限制网络带宽之后,Pod只能够使用节点的部分带宽(此处限制为100Mbps):
本发明实施例提供的上述方法,将网络带宽需求信息用于预选节点的筛选,在预选阶段就将网络带宽不满足要求的子节点筛选掉,减少了后期优选策略处理的子节点的数据量,提高了处理效率。
在本实施例中,当子节点上的网卡发生变化时,子节点的网络带宽也会随之变化,为了使主节点可以及时根据网络带宽的变化对新创建的Pod进行合理的调度,本发明实施例在图3的基础上还提供了另一种网络带宽限制方法的具体实施方式,请参照图6,图6示出了本发明实施例提供的另一种网络带宽限制方法的流程图,该方法还包括以下步骤:
步骤S140,周期性地接收每一子节点上报的网络带宽,其中,网络带宽是每一子节点从本地获取的网卡的网络带宽。
在本实施例中,子节点首先获取网卡名称,根据网卡名称抓取网卡的详细数据,网卡的详细数据包括、但不限于网络带宽、网卡名称、网卡索引、网卡地址、网卡类型等。
在本实施例中,子节点周期性地从本地获取网卡的网络带宽并上报至主节点,以使主节点可以及时地根据最新的子节点的网络带宽在创建新Pod时对网络带宽资源的均衡处理。
在本实施例中,子节点从主节点获取配置文件,该配置文件中定义有网络带宽资源名称,其中网络带宽资源名称可以是任何符合Kubernetes集群扩展资源要求的名称,主节点将每个子节点上报的网卡数据更新至Kubernetes集群中。
在本实施例中,网络带宽将作为一种扩展资源加入Kubernetes集群,并标注至Kubernetes集群中每个子节点的Capacity和Allocatable字段。作为一种具体实施方式,此处将网络带宽资源名称命名为"network/bandwidth",标注后可以使用如下命令查看:
在本实施例中,作为一种具体实施方式,子节点可以与Kubernetes集群中任何一个主节点上的APIServer模块进行通信,以将最新的网络带宽上报至主节点,具体上报方式包括但不限于PATCH、UPDATE等方法。
本发明实施例提供的上述方法,一方面,主节点周期性地接收子节点上报的网卡带宽,避免子节点网卡发生变化后主节点中记录的子节点的网卡带宽不能及时更新,影响新创建Pod时各子节点的网络带宽资源不能得以均衡利用,另一方面,将网络带宽资源作为一种扩展资源标注在节点中,解决了当前Kubernetes集群的调度解决方案中无法定量地为Pod预留网络资源的这一大问题。
需要说明的是,上述图4中的步骤S1201~S1202可以和图5、图6、图3组合使用,即用图4中的步骤S1201~S1202替换图5、图6、图3中的步骤S120,图5中的步骤S1301~S1304可以和图4、图6及图3组合使用,图6中的步骤可以和图4、图5组合使用。
为了执行上述实施例及各个可能的实施方式中的相应步骤,下面给出一种网络带宽限制装置100的实现方式。请参照图7,图7示出了本发明实施例提供的网络带宽限制装置100的方框示意图。需要说明的是,本实施例所提供的网络带宽限制装置100,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及指出。
网络带宽限制装置100包括至少一个可以软件或固件(firmware)的形式存储于图2中存储器12中的软件功能模块,处理器11在接收到执行指令后,从存储器12读出该软件功能模块并执行,以实现上述实施例揭示的网络带宽限制方法。网络带宽限制装置100包括获取模块110、更新模块120、调度模块130及上报模块140。
获取模块110,用于获取待创建Pod的资源需求信息。
更新模块120,用于当资源需求信息中包括网络带宽需求信息时,依据网络带宽需求信息更新待创建Pod,以使待创建Pod运行时依据网络带宽需求信息对待创建Pod使用的实时网络带宽进行限制。
作为一种具体实施方式,更新模块120具体用于:基于预设模板及网络带宽需求信息生成补丁数据;通过补丁数据,将与网络带宽需求信息对应的预设字段加入至待创建Pod,以对待创建Pod使用的实时网络带宽的限制进行标注。
需要说明的是,作为一种具体实施方式,更新模块120可以在Kubernetes集群中以Pod运行,也可以在Kubernetes集群中主节点中以服务运行,还可以在Kubernetes集群以外的服务器上以服务运行,本实施例对运行更新模块120的实体设备或者运行方式不作具体限制。
调度模块130,用于依据网络带宽需求信息对待创建Pod进行调度,以从多个子节点中确定目标子节点、并在目标子节点创建并运行待创建Pod。
作为一种具体实施方式,网络带宽需求信息包括网络带宽需求量,主节点预先存储有预选策略和优选策略,调度模块130具体用于:获取每一子节点的网络带宽;将满足预选策略、且网络带宽满足网络带宽需求量的子节点作为预选子节点;依据优选策略对每一预选子节点进行评分,得到每一预选子节点的得分;将得分最高的预选子节点作为目标子节点。
上报模块140,用于周期性地接收每一子节点上报的网络带宽,其中,网络带宽是每一子节点从本地获取的网卡的网络带宽。
本发明实施例还提供了将Kubernetes集群作为一个整体时的另一种模块划分方式,请参照图8,图8示出了本发明实施例提供Kubernetes集群中另一种模块划分方式的示意图,图8中,主节点与子节点及主机均通信连接,主节点包括应用探测模块ACM(Application Check Module,ACM),主机包括应用更新服务模块AUM(Application UpdateModule,AUM),当然,也可以没有主机,在没有主机的情况下,应用更新服务模块在主节点中,子节点包括网络带宽标注模块BAM(Bandwidth Annotate Module,BAM)和网络带宽限制模块BRM(Bandwidth Restrain Module,BRM)。需要说明的是,由于Kubernetes集群中应用都是以Pod形式部署的,故在本段及下文的描述中,应用和上文中所说的Pod是可以互换的。
应用探测模块,用于监测应用的创建事件,并根据需要调用应用更新服务模块、更新应用。
应用更新服务模块,用于接收应用探测模块的请求,并根据请求数据返回应用更新补丁数据。
上述应用探测模块和应用更新服务模块相当于上文中的获取模块110和更新模块120。
网络带宽标注模块,用于定时将Kubernetes集群中每个子节点的网络带宽资源上报至Kubernetes集群的主节点。网络带宽标注模块与上文中的应用于主节点的上报模块140相对应,即网络带宽标注模块负责将子节点的网络带宽资源上报至主节点,主节点负责接收子节点上报的网络带宽资源。
网络带宽限制模块,用于检测本地子节点上运行的Pod是否存在网络流量控制的配置字段,若存在,则根据应用的具体数据添加网络流量控制规则,以根据该网络流量控制规则进行网络带宽限制。网络带宽限制模块相当于主节点在子节点上创建并运行Pod之后,Pod依据通过补丁数据新增的预设字段为子节点添加网络流量控制规则。
除此之外,还存在一个与主节点通信连接的监控系统,监控系统包括数据抓取模块,数据抓取模块根据需求从Kubernetes集群、服务器、运行中的Pod等抓取所需数据。
图8中应用探测模块、应用更新服务模块、网络带宽标注模块及网络带宽限制模块之间的交互过程可以根据本申请实施例中前面所述的内容类比得到,此处不再赘述。
需要说明的是,图8中并未标识出本发明实施例的全部功能模块,例如上述调度模块130未在图8中标出,但不代表图8中不存在该模块,实际上调度模块130存在于图8中的主节点,是运行于主节点的一个功能模块。
综上所述,本发明实施例提供了一种网络带宽限制方法、装置、主节点及存储介质,应用于Kubernetes集群中的主节点,主节点与多个子节点通信连接,所述方法包括:获取待创建Pod的资源需求信息;当资源需求信息中包括网络带宽需求信息时,依据网络带宽需求信息更新待创建Pod,以使待创建Pod运行时依据网络带宽需求信息对待创建Pod使用的实时网络带宽进行限制;依据网络带宽需求信息对待创建Pod进行调度,以从多个子节点中确定目标子节点、并在目标子节点创建并运行待创建Pod。与现有技术相比,本发明实施例通过限制Pod运行时使用的子节点的网络带宽,并结合网络带宽需求信息对Pod进行合理调度,解决了因网络带宽资源抢占严重、网络带宽资源利用不合理而导致的网络带宽资源的使用不均衡的问题,进而改善了Kubernetes集群的性能。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种网络带宽限制方法,其特征在于,应用于Kubernetes集群中的主节点,所述主节点与多个子节点及主机通信连接,所述方法包括:
获取待创建Pod的资源需求信息;
当所述资源需求信息中包括网络带宽需求信息时,依据所述网络带宽需求信息更新所述待创建Pod,以使所述待创建Pod运行时依据所述网络带宽需求信息对所述待创建Pod使用的实时网络带宽进行限制,所述网络带宽需求信息用于表征待创建Pod运行时所需的网络带宽,且所述网络带宽需求信息为扩展资源类型;
依据所述网络带宽需求信息对所述待创建Pod进行调度,以从所述多个子节点中确定目标子节点、并在所述目标子节点创建并运行所述待创建Pod;
所述依据所述网络带宽需求信息更新所述待创建Pod的步骤包括:
将待创建Pod的网络带宽需求信息放入至HTTP Request数据包中发送至主机,以使所述主机提取收到的HTTP Request数据包中的网络带宽需求信息,并基于预设模板及网络带宽需求信息,生成补丁数据,再将所述补丁数据放入至HTTP Response数据包中返回至主节点,所述预设模板用于表征补丁数据的生成规则;
接收所述主机发送的补丁数据,并根据所述补丁数据更新待创建Pod,使更新后的待创建Pod中包括所述网络带宽需求信息;
通过所述补丁数据,将与所述网络带宽需求信息对应的预设字段加入至所述待创建Pod,以对所述待创建Pod使用的实时网络带宽的限制进行标注,以使所述目标子节点在创建并运行所述待创建Pod时根据所述预设字段添加流量控制配置,以实现所述目标子节点上运行的待创建Pod的实时网络带宽限制。
2.如权利要求1所述的网络带宽限制方法,其特征在于,所述网络带宽需求信息包括网络带宽需求量,所述主节点预先存储有预选策略和优选策略,所述依据所述网络带宽需求信息对所述待创建Pod进行调度,以从所述多个子节点中确定目标子节点的步骤包括:
获取每一所述子节点的网络带宽;
将满足所述预选策略、且所述网络带宽满足所述网络带宽需求量的子节点作为预选子节点;
依据所述优选策略对每一所述预选子节点进行评分,得到每一所述预选子节点的得分;
将得分最高的所述预选子节点作为目标子节点。
3.如权利要求1所述的网络带宽限制方法,其特征在于,每一所述子节点包括网卡,所述方法还包括:
周期性地接收每一所述子节点上报的网络带宽,其中,所述网络带宽是每一所述子节点从本地获取的网卡的网络带宽。
4.一种网络带宽限制装置,其特征在于,应用于Kubernetes集群中的主节点,所述主节点与多个子节点及主机通信连接,所述装置包括:
获取模块,用于获取待创建Pod的资源需求信息;
更新模块,用于当所述资源需求信息中包括网络带宽需求信息时,依据所述网络带宽需求信息更新所述待创建Pod,以使所述待创建Pod运行时依据所述网络带宽需求信息对所述待创建Pod使用的实时网络带宽进行限制,所述网络带宽需求信息用于表征待创建Pod运行时所需的网络带宽,且所述网络带宽需求信息为扩展资源类型;
调度模块,用于依据所述网络带宽需求信息对所述待创建Pod进行调度,以从所述多个子节点中确定目标子节点、并在所述目标子节点创建并运行所述待创建Pod;
所述更新模块具体用于:
将待创建Pod的网络带宽需求信息放入至HTTP Request数据包中发送至主机,以使所述主机提取收到的HTTP Request数据包中的网络带宽需求信息,并基于预设模板及网络带宽需求信息,生成补丁数据,再将所述补丁数据放入至HTTP Response数据包中返回至主节点,所述预设模板用于表征补丁数据的生成规则;
接收所述主机发送的补丁数据,并根据所述补丁数据更新待创建Pod,使更新后的待创建Pod中包括所述网络带宽需求信息;
通过所述补丁数据,将与所述网络带宽需求信息对应的预设字段加入至所述待创建Pod,以对所述待创建Pod使用的实时网络带宽的限制进行标注,以使所述目标子节点在创建并运行所述待创建Pod时根据所述预设字段添加流量控制配置,以实现所述目标子节点上运行的待创建Pod的实时网络带宽限制。
5.如权利要求4所述的网络带宽限制装置,其特征在于,所述网络带宽需求信息包括网络带宽需求量,所述主节点预先存储有预选策略和优选策略,所述调度模块具体用于:
获取每一所述子节点的网络带宽;
将满足所述预选策略、且所述网络带宽满足所述网络带宽需求量的子节点作为预选子节点;
依据所述优选策略对每一所述预选子节点进行评分,得到每一所述预选子节点的得分;
将得分最高的所述预选子节点作为目标子节点。
6.如权利要求4所述的网络带宽限制装置,其特征在于,每一所述子节点包括网卡,所述装置还包括上报模块,所述上报模块用于:
周期性地接收每一所述子节点上报的网络带宽,其中,所述网络带宽是每一所述子节点从本地获取的网卡的网络带宽。
7.一种主节点,其特征在于,所述主节点包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1~3中任一项所述的网络带宽限制方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1~3中任一项所述的网络带宽限制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010595722.1A CN111770162B (zh) | 2020-06-24 | 2020-06-24 | 网络带宽限制方法、装置、主节点及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010595722.1A CN111770162B (zh) | 2020-06-24 | 2020-06-24 | 网络带宽限制方法、装置、主节点及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111770162A CN111770162A (zh) | 2020-10-13 |
CN111770162B true CN111770162B (zh) | 2023-05-02 |
Family
ID=72722301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010595722.1A Active CN111770162B (zh) | 2020-06-24 | 2020-06-24 | 网络带宽限制方法、装置、主节点及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111770162B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4274178A4 (en) * | 2021-01-13 | 2024-03-13 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | METHOD AND APPARATUS FOR DETERMINING NODE FOR DISTRIBUTED TASK, AND DEVICE AND MEDIUM |
WO2022151071A1 (zh) * | 2021-01-13 | 2022-07-21 | Oppo广东移动通信有限公司 | 分布式任务的节点确定方法、装置、设备及介质 |
CN113419819B (zh) * | 2021-06-25 | 2023-09-08 | 重庆紫光华山智安科技有限公司 | 容器管理方法、装置、设备及介质 |
CN113821328A (zh) * | 2021-11-23 | 2021-12-21 | 江苏苏宁银行股份有限公司 | 一种容器集群的调度方法、装置、电子设备和存储介质 |
CN115134310B (zh) * | 2022-08-31 | 2022-12-06 | 浙江大华技术股份有限公司 | 流量的调度方法、装置、存储介质及电子装置 |
CN115550371B (zh) * | 2022-12-05 | 2023-03-21 | 安超云软件有限公司 | 基于Kubernetes的Pod调度方法、系统及云平台 |
CN116233025A (zh) * | 2022-12-20 | 2023-06-06 | 中国电信股份有限公司 | 一种网络管理方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597623A (zh) * | 2019-08-13 | 2019-12-20 | 平安普惠企业管理有限公司 | 容器资源分配方法、装置、计算机设备和存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012149726A1 (zh) * | 2011-09-06 | 2012-11-08 | 华为技术有限公司 | 下发带宽调整方法及模块、动态带宽分配设备 |
WO2016022925A2 (en) * | 2014-08-08 | 2016-02-11 | Oracle International Corporation | Policy based resource management and allocation system |
CN107483364A (zh) * | 2016-06-08 | 2017-12-15 | 国家计算机网络与信息安全管理中心 | 一种Hadoop Yarn网络带宽资源调度、隔离方法和装置 |
CN108519911A (zh) * | 2018-03-23 | 2018-09-11 | 上饶市中科院云计算中心大数据研究院 | 一种基于容器的集群管理系统中资源的调度方法和装置 |
CN109040180B (zh) * | 2018-06-22 | 2021-12-21 | 杭州才云科技有限公司 | 基于Neutron和GBP的网络访问控制方法、存储介质、电子设备 |
CN109167835B (zh) * | 2018-09-13 | 2021-11-26 | 重庆邮电大学 | 一种基于kubernetes的物理资源调度方法及系统 |
-
2020
- 2020-06-24 CN CN202010595722.1A patent/CN111770162B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597623A (zh) * | 2019-08-13 | 2019-12-20 | 平安普惠企业管理有限公司 | 容器资源分配方法、装置、计算机设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
"K8S中Pods";佚名;《https://www.cnblogs.com/dalianpai/p/12064489.html》;20191218;全文 * |
"容器网络限流实践";佚名;《https://www.sohu.com/a/288767156_198222》;20190114;正文第1页和第4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111770162A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111770162B (zh) | 网络带宽限制方法、装置、主节点及存储介质 | |
US11704144B2 (en) | Creating virtual machine groups based on request | |
US10862760B2 (en) | Network functions virtualization | |
CN108370341B (zh) | 资源配置方法、虚拟网络功能管理器和网元管理系统 | |
CN111880936B (zh) | 资源调度方法、装置、容器集群、计算机设备和存储介质 | |
CN109194617A (zh) | Xml报文的自动解析、封装方法和装置 | |
CN111245634B (zh) | 一种虚拟化管理方法及装置 | |
US11303583B2 (en) | Resource trees by management controller | |
CN111930525B (zh) | Gpu资源使用方法、电子设备及计算机可读介质 | |
CN113382077B (zh) | 微服务调度方法、装置、计算机设备和存储介质 | |
CN112564994B (zh) | 流量监测方法、装置、云服务器及存储介质 | |
CN105592122A (zh) | 一种云平台监控方法以及云平台监控系统 | |
CN114338738B (zh) | 基于Actor模型的规则引擎及场景联动实现方法 | |
CN112698838A (zh) | 多云容器部署系统及其容器部署方法 | |
CN116800616A (zh) | 虚拟化网络设备的管理方法及相关装置 | |
CN112882794B (zh) | pod扩容方法、装置、节点及存储介质 | |
CN114565502A (zh) | Gpu资源管理方法、调度方法、装置、电子设备及存储介质 | |
CN104657240B (zh) | 多内核操作系统的失效控制方法及装置 | |
CN113434281A (zh) | 设备调度方法及云平台 | |
CN116339927B (zh) | 设备确定方法、装置、存储介质及电子装置 | |
CN113434190B (zh) | 数据处理方法和装置、存储介质及电子设备 | |
CN113504981A (zh) | 任务调度方法和装置、存储介质及电子设备 | |
CN111885159B (zh) | 数据采集方法、装置、电子设备及存储介质 | |
CN115113535A (zh) | 一种跨协议的设备互联互通方法、系统、设备、存储介质 | |
CN117632531A (zh) | 集群中消息的处理方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |