全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:为Pod配置QoS

更新时间:Dec 21, 2024

在线业务对网络质量敏感、对网络延迟指标要求高,而离线业务对网络带宽占用大,如果两种业务在一起运行而不做任何控制,突发的流量很可能影响在线业务,从而影响整体网络质量。通过对Pod进行细粒度的QoS配置,可以显著改善这种情况。本文介绍如何使用Kubernetes定义的Pod Annotations、涉及的带宽限制信息以及如何配置优先级控制策略。

带宽限制

Terway网络插件支持对Pod网络带宽进行控制,您可以使用以下Pod Annotations指定Pod出、入方向的带宽:

Annotation

Mean

kubernetes.io/ingress-bandwidth: 10M

Ingress bandwidth

kubernetes.io/egress-bandwidth: 10M

Egress bandwidth

带宽限制能力和集群网络类型相关,支持情况如下:

Terway Mode

Egress Shaping

Ingress Shaping

VPC Mode (legacy)

对

对

共享ENI多IP模式

对

对

共享ENI多IP模式+IPvlan eBPF(legacy)

对

错

共享ENI多IP模式+DataPathv2

对

对

说明

DataPathv2模式下,Egress 、Ingress带宽限制只对出入节点流量生效,同节点流量不生效。

DataPathv2模式下,Ingress带宽限制从Terway v1.13.0版本起提供支持。

使用Kubernetes定义的Pod Annotations

对于在Terway v1.3.0版本前新建的集群,您需要修改Terway配置文件来启用Kubernetes定义的Pod Annotations。

  1. 执行以下命令,打开和修改Terway的ConfigMap。

    kubectl edit cm -n kube-system eni-config
  2. data.10-terway.conf下,增加capabilities配置。

    apiVersion: v1
    data:
      10-terway.conf: |
        {
          "cniVersion": "0.3.1",
          "name": "terway",
          "capabilities": {"bandwidth": true},
          "type": "terway"
        }
  3. 修改完成后,按Esc键,输入:wq!并按Enter键,保存修改后的配置文件并退出编辑模式。

  4. 执行以下命令,重建Terway Pods使得配置生效。

    kubectl delete -n kube-system pod -l app=terway-eniip

配置优先级控制策略

默认情况下,网卡队列在发送数据包时执行先入先出的规则,通过对数据包进行分类,可以优先发送延迟敏感业务的数据包,从而改善延迟。默认情况下,优先级控制未启用,您需要通过配置来启用。

说明

此功能不支持DatapathV2类型集群。

Terway支持通过以下Pod Annotations指定Pod使用的优先级。

Annotation

Mean

k8s.aliyun.com/network-priority: "guaranteed"

延迟敏感业务

k8s.aliyun.com/network-priority: "best-effort"

普通业务

k8s.aliyun.com/network-priority: "burstable"

大带宽业务

通过以下配置启用优先级控制策略。

  1. 执行以下命令,打开和修改Terway的ConfigMap。

    kubectl edit cm -n kube-system eni-config
  2. data.10-terway.conf下,增加enable_network_priority开启优先级控制。

    apiVersion: v1
    data:
      10-terway.conf: |
        {
          "cniVersion": "0.3.1",
          "name": "terway",
          "enable_network_priority": true,
          "type": "terway"
        }
  3. 修改完成后,按Esc键,输入:wq!并按Enter键,保存修改后的配置文件并退出编辑模式。

  4. 重建Terway Pods使得配置生效。

    kubectl delete -n kube-system pod -l app=terway-eniip
    重要

    启用优先级控制后,ENI网卡队列将替换为mq+prio。