容器服务 网络精细调度

网络精细调度能力提供了一系列功能,保证业务网络方面的服务质量保证。全方位提升网络表现,以及灵活限制容器对网络的使用。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、功能介绍

限制某个容器的入、出带宽。

二、使用方式

1. 部署 QoS Agent。

2. 在集群里的“扩展组件”页面,找到部署成功的 QoS Agent,单击右侧的更新配置。

3. 在修改 QoS Agent 的组件配置页面,勾选网络 QoS 增强。

4. 单击完成。

5. 部署业务。

6. 部署关联该业务的 PodQOS 对象,选择需要作用的业务,示例如下:

apiVersion: ensurance.crane.io/v1alpha1kind: PodQOSmetadata: name: aspec: labelSelector: matchLabels: k8s-app: a # 选择需要降低优先级的业务的 Label resourceQOS: netIOQOS: netIOLimits: rxBps: 50 # rxBps 代表入方向的最大带宽,单位为 Mbps,0表示无限制,最大可以输入13位的整数 txBps: 50 # txBps 代表出方向的最大带宽,单位为 Mbps,0表示无限制,最大可以输入13位的整数

三、功能介绍

用户为不同的容器设置不同的优先级,按照优先级分配网口的带宽资源。以三档优先级为例说明网络入带宽的调度策略,可扩展到更多档优先级:

·最高优先级(优先级为0)的容器不受网络 QoS 限制,可任意使用带宽资源。

·所有较低优先级(优先级为1、2)容器使用的带宽之和小于 rx_bps_max 减最高优先级带宽时,每个容器可以使用的带宽不受限制,并都可以超过 rx_bps_min。

·所有较低优先级(优先级为1、2)容器使用的带宽之和大于 rx_bps_max 时,最多可以使用 rx_bps_max 减较高优先级容器的总流量的差值,如果差值小于 rx_bps_min,则保障低优先级容器至少可使用 rx_bps_min 的带宽。

·最高优先级(优先级为0)容器的带宽可以突破 rx_bps_max/tx_bps_max,较低优先级容器不能突破此参数。

四、场景一

·高优先级容器使用带宽较低时,将空闲带宽分配给低优先级容器。

·高优先级容器使用带宽较高,超过 rx_bw_max 时,只给低优先级容器分配最低保障带宽。


五、场景二

·高优先级容器使用带宽较低时,将空闲带宽分配给低优先级容器。

·新增一个中间优先级的容器时,抢占相对较低优先级容器的带宽。


六、场景三

·高优先级容器使用带宽较低时,将空闲带宽分配给低优先级容器。

·新增一个中间优先级的容器时,抢占相对较低优先级容器的带宽。最多能抢占的带宽要减去较高优先级容器所用带宽,还要减去较低优先级容器最低保障带宽。


七、使用方式

1. 部署 QoS Agent。

2. 在集群里的“扩展组件”页面,找到部署成功的 QoS Agent,单击右侧的更新配置。

3. 在修改 QoS Agent 的组件配置页面,勾选 网络 QoS 增强。

4. 单击完成。

5. 部署业务 A。

6. 部署关联该业务的 PodQOS 对象,选择需要作用的业务,示例如下:

apiVersion: ensurance.crane.io/v1alpha1kind: PodQOSmetadata: name: aspec: labelSelector: matchLabels: k8s-app: a # 选择业务的 Label resourceQOS: netIOQOS: netIOPriority: 6 # 选择网络优先级,0-7,总共8级

7. 部署业务 B。

8. 部署关联该业务的 PodQOS 对象,选择需要作用的业务,示例如下:

apiVersion: ensurance.crane.io/v1alpha1kind: PodQOSmetadata: name: bspec: labelSelector: matchLabels: k8s-app: b # 选择业务的 Label resourceQOS: netIOQOS: netIOPriority: 7 # 选择网络优先级,0-7,总共8级

该功能需要搭配 NodeQOS 中的节点带宽限制联合使用,配合 NodeQOS 指定 rxBpsMin,rxBpsMax,txBpsMin,txBpsMax。

·rxBpsMin:per-priority 级别的入方向最低保障带宽。为该级别的容器所共享。目前不同优先级的入方向最低保障带宽相同。优先级0除外。

·txBpsMin:per-priority 级别的出方向最低保障带宽。为该级别的容器所共享。目前不同优先级的出方向最低保障带宽相同。优先级0除外。

·rxBpsMax:网口的最大入带宽。

·txBpsMax:网口的最大出带宽。

注意:单位为Mbps。

apiVersion: ensurance.crane.io/v1alpha1kind: NodeQOSmetadata: name: totalspec: netLimits: rxBpsMin: 10 rxBpsMax: 10240 txBpsMin: 10 txBpsMax: 10240

八、功能介绍

为了防止低优先级容器被饿死,有两种机制:

1. per-priority 的最低保障带宽:由该优先级的容器所共享。

2. 端口白名单机制:用户可以将容器中的某个本地端口、或对端端口添加到白名单,这个端口的流量将不被限流。通常用于保护特定协议的控制报文。

九、使用方式

1. 部署 QoS Agent。

2. 在集群里的“扩展组件”页面,找到部署成功的 QoS Agent,单击右侧的更新配置。

3. 在修改 QoS Agent 的组件配置页面,勾选 网络 QoS 增强。

4. 单击完成。

5. 部署业务。

6. 部署关联该业务的 PodQOS 对象,选择需要作用的业务,示例如下:

apiVersion: ensurance.crane.io/v1alpha1kind: PodQOSmetadata: name: aspec: labelSelector: matchLabels: k8s-app: a # 选择业务的 Label resourceQOS: netIOQOS: whitelistPorts: # 代表业务a的本地端口 5201 和远端端口 5205 被设置为白名单端口,不做限流。lports,rports 默认值都为0,取值范围为0 ~ 13位整数 lports: 5201 rports: 5205

赞 (0)
上一篇 4天前
下一篇 4天前