实现calico网络下容器实例级的带宽控制方法技术

技术编号:30025440 阅读:25 留言:0更新日期:2021-09-11 06:55
本发明专利技术公开了实现calico网络下容器实例级的带宽控制方法,该方法包括以下步骤:S1、请求代理服务接收所有带宽限制的请求信息;S2、根据请求信息中的容器信息,获取相对应的宿主机信息;S3、请求代理服务将请求数据经过组合下发到宿主机上的流量控制服务;S4、流量控制服务接受带宽限制的请求,并调用TC指令对请求代理服务传入的参数进行解析;S5、流量控制服务根据所接受的请求类型,对宿主机的虚网口进行相应的带宽配置。有益效果:通过在K8S容器集群下,利用calico网络基于BGP协议将K8S集群内的所有容器组网等方法,实现对具体某一个容器实例的带宽限制、调整及取消等动态管理功能。调整及取消等动态管理功能。调整及取消等动态管理功能。

【技术实现步骤摘要】
实现calico网络下容器实例级的带宽控制方法


[0001]本专利技术涉及DevOps领域,具体来说,涉及实现calico网络下容器实例级的带宽控制方法。

技术介绍

[0002]容器因其轻量化、隔离性、跨平台的特点在各种云原生、Devops、容器云方案中起着核心的作用,配合K8S可以快速形成容器集群,可以方便实现应用的多实例,以及实现多容器实例间的分布式通讯。目前主流的实现K8S的容器间通讯的一个网络组件是calico。
[0003]容器间的网络带宽限制有其必要性:1. K8S管理的是分布式集群的节点,机器的硬件本身会存在差异,有的节点的网络具有千兆能力,有的节点网络具有万兆能力,需要做实除级的带宽限制;2. K8S集群下所有节点上的实例也不具有对等性,在多种应用共处的分布式集群下,有的节点上网络流量本身就很小,有的节点聚集着重流量的容器应用等,需要对容器实例级进行限制;3. 一个应用通是多实例,某些场景下,个别实例触发了bug或者性能非常低效的状态、再或者容器在的节点的机器负载非常高,不便于接受更多的请求,需要进行容器级的带宽限制现有的K8S下对容器网络进行带宽限制的技术存在着一些缺点:1. 无法做到容器级实例的限制:K8S对容器管理的最小粒度是Pod,其对带宽的限制是基于Pod级的注解来实现的,本质是应用级别的,即一组容器,而非单容器;2. 无法做到动态调整容器的带宽限制:K8S对Pod带宽的限制,是以注解方式写到Pod属性中,是在创建容器时定下来,且在Pod的生命周期内是不可改变的,如果要调带宽(提高或者降低带宽限制),则需要重新调整注解,重新创建Pod,这在生产环境中是非常不利的。因此现有的方案,无法对存活的容器实施带宽限制;3. 无法做到动态调整容器的带宽限制的取消:带宽的限制不是一层不变的,在一些重大节点或者业务高峰的时段再或者集群节点做了扩容,由于存在的带宽限制,不利于业务的高并发处理,此时迫切需要取消带宽限制,最大发挥容器的性能。然而目前K8S的带宽限制方案,是将带宽的限制是绑定到Pod的生命周期的,无法做到不启容器的情况下动态取消带宽限制。
[0004]针对相关技术中的问题,目前尚未提出有效的解决方案。

技术实现思路

[0005]针对相关技术中的问题,本专利技术提出实现calico网络下容器实例级的带宽控制方法,以克服现有相关技术所存在的上述技术问题。
[0006]为此,本专利技术采用的具体技术方案如下:实现calico网络下容器实例级的带宽控制方法,该方法包括以下步骤:S1、请求代理服务接收所有带宽限制的请求信息;S2、根据请求信息中的容器信息,获取相对应的宿主机信息;S3、请求代理服务将请求数据经过组合下发到宿主机上的流量控制服务;S4、所述流量控制服务接受带宽限制的请求,并调用交通控制指令对所述请求代理服务传入的参数进行解析;S5、所述流量控制服务根据所接受的请求类型,对所述宿主机的虚网口进行相应的带宽配置。
[0007]进一步的,所述容器信息为容器名称或容器IP。
[0008]进一步的,当所述容器信息为容器名称时,所述根据请求信息中的容器信息,获取相对应的宿主机信息包括以下步骤:S21

、请求代理服务请求对外开放接口获取其中所有的容器信息;S22

、从所述容器信息中过滤出容器名称对应的容器;S23

、从对应的容器的属性中查找出容器IP及容器所在的宿主机IP。
[0009]进一步的,当所述容器信息为容器IP时,所述根据请求信息中的容器信息,获取相对应的宿主机信息包括以下步骤:S21
′′
、请求代理服务访问calico的客户端,通过客户端获取请求,获取所有的虚拟网络实体;S22
′′
、从所有的虚拟网络实体中,过滤出容器IP的容器在宿主机上的虚网口Mac地址。
[0010]进一步的,所述请求数据包括请求信息与虚网口。
[0011]进一步的,所述请求类型包括限制带宽、取消限制带宽与更新限制带宽。
[0012]进一步的,当所述请求类型为限制带宽时,所述流量控制服务根据所接受的请求类型,对虚网口进行相应的带宽配置包括以下步骤:S51

、所述流量控制服务调用交通控制对传入的虚网口创建令牌桶过滤器队列;S52

、控制容器管理平台下使用容器网络的容器的带宽。
[0013]进一步的,当所述请求类型为取消限制带宽时,所述流量控制服务根据所接受的请求类型,对虚网口进行相应的带宽配置包括以下步骤:S51
′′
、所述流量控制服务调用交通控制对传入的虚网口删除令牌桶过滤器队列;S52
′′
、取消单容器的带宽限制。
[0014]进一步的,当所述请求类型为限制带宽时,所述流量控制服务根据所接受的请求类型,对虚网口进行相应的带宽配置包括以下步骤:S51
′′′
、所述流量控制服务调用交通控制对传入的虚网口实施宽带清理;S52
′′′
、调用TC对传入的虚网口实施带限配置。
[0015]进一步的,所述请求代理服务与所述流量控制服务之间的通讯协议为HTTP或HTTPS。
[0016]本专利技术的有益效果为:通过在K8S容器集群下,利用calico网络基于BGP协议将K8S集群内的所有容器组网,并基于calico的客户端从K8S的ETCD数据库中获取目标容器在宿
主机上的虚网口信息,然后利用LinuxTC的SHAPING技术对容器在宿主机上的虚网口进行带宽的规则配置,从而实现对具体某一个容器实例的带宽限制、带带限制调整、带宽限制取消等动态管理功能。
[0017]具体的,可以对K8S容器集群下的任意一个容器实施带宽限制;可以取消某一个容器的带宽限制;可以更新某个容器的带宽限制;支持单个容器带宽的设置是很有好处的,非常有利于在资源受限的机器上降低流量请求,增强系统稳定性,而目前K8S官方对容器带宽的限制,只能做到Pod级别,只能对一组容器实施带宽限制。
[0018]此外,还可以动态的对K8S容器集群下的任意一个容器实施带宽设置,包括创建、更新、取消,这个动态是非常有好处的,不需要重建容器而实施生效,不会中断业务应用;而目前K8S官方对容器带宽的限制,是作用到一组容器,不具备动态调整带宽的能力,且其取消、更新容器的带宽,只能通过编辑Pod的配置,重新建新的容器,因此本专利技术能够避免目前生产过程中业务的中断,进而提高生产效率。
附图说明
[0019]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1是根据本专利技术实施例的实现calico网络下容器实例级的带宽控制方法的流程图;图2是根据本专利技术实施例的实现calico网络下本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.实现calico网络下容器实例级的带宽控制方法,其特征在于,该方法包括以下步骤:S1、请求代理服务接收所有带宽限制的请求信息;S2、根据请求信息中的容器信息,获取相对应的宿主机信息;S3、请求代理服务将请求数据经过组合下发到宿主机上的流量控制服务;S4、所述流量控制服务接受带宽限制的请求,并调用交通控制指令对所述请求代理服务传入的参数进行解析;S5、所述流量控制服务根据所接受的请求类型,对所述宿主机的虚网口进行相应的带宽配置。2.根据权利要求1所述的实现calico网络下容器实例级的带宽控制方法,其特征在于,所述容器信息为容器名称或容器IP。3.根据权利要求2所述的实现calico网络下容器实例级的带宽控制方法,其特征在于,当所述容器信息为容器名称时,所述根据请求信息中的容器信息,获取相对应的宿主机信息包括以下步骤:S21

、请求代理服务请求对外开放接口获取其中所有的容器信息;S22

、从所述容器信息中过滤出容器名称对应的容器;S23

、从对应的容器的属性中查找出容器IP及容器所在的宿主机IP。4.根据权利要求3所述的实现calico网络下容器实例级的带宽控制方法,其特征在于,当所述容器信息为容器IP时,所述根据请求信息中的容器信息,获取相对应的宿主机信息包括以下步骤:S21
′′
、请求代理服务访问calico的客户端,通过客户端获取请求,获取所有的虚拟网络实体;S22
′′
、从所有的虚拟网络实体中,过滤出容器IP的容器在宿主机上的虚网口Mac地址。5.根据权利要求4所述的实现calico网络下容器实例级的带宽...

【专利技术属性】
技术研发人员:杜加根王玉木刘启铨
申请(专利权)人:浩鲸云计算科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1