Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Enable resource isolation based on the L3 cache and MBA

Última atualização: Jun 27, 2026

Limite o cache L3 e a largura de banda de memória dos pods BestEffort para proteger cargas de trabalho sensíveis à latência em nós compartilhados.

Como funciona

A Intel Resource Director Technology (RDT) particiona os recursos de hardware por nó. O ack-koordinator lê o ConfigMap ack-slo-config e aplica as configurações do grupo resctrl conforme a classe de QoS de cada pod. Por padrão, os pods BestEffort (BE) recebem 30% do cache L3, enquanto os pods sensíveis à latência (LS) recebem 100%. A largura de banda de memória padrão é de 100% para ambas as classes.

Pré-requisitos

Verifique se você tem:

Faturamento

O ack-koordinator é gratuito. Custos podem ocorrer em duas áreas:

  • Consumo de recursos do nó: O ack-koordinator não é gerenciado e roda nos nós de trabalho. Especifique as solicitações de recursos por módulo durante a instalação para controlar a sobrecarga.

  • Métricas do Prometheus: Se você ativar as métricas do Prometheus para o ack-koordinator e usar o Managed Service for Prometheus, as métricas serão contabilizadas como métricas personalizadas e faturadas adequadamente. As cobranças dependem do tamanho do cluster e da quantidade de aplicações. Revise o faturamento do Managed Service for Prometheus antes de ativar e monitore o uso com Consulta de dados observáveis e faturas.

Etapa 1: Verificar e ativar o RDT no kernel do nó

  1. Verifique se o kernel tem o RDT ativado:

    cat /proc/cmdline

    Procure por l3cat e mba na saída:

    # Other fields omitted. This example shows only the RDT portion of the BOOT_IMAGE field.
    BOOT_IMAGE=... rdt=cmt,l3cat,l3cdp,mba

    Se l3cat e mba aparecerem, o RDT já está ativado. Pule para a Etapa 2.

  2. Adicione as opções de RDT aos parâmetros de inicialização do kernel. Em /etc/default/grub, anexe o seguinte a GRUB_CMDLINE_LINUX:

    Importante

    Separe as opções de RDT das configurações existentes com um espaço. Não sobrescreva outros parâmetros do kernel.

    # Other fields omitted. This example shows only the RDT portion of the GRUB_CMDLINE_LINUX field.
    GRUB_CMDLINE_LINUX="... rdt=cmt,mbmtotal,mbmlocal,l3cat,l3cdp,mba"
  3. Regenere a configuração do GRUB:

    # The file path may differ depending on your OS distribution.
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  4. Reinicie o nó:

    sudo systemctl reboot

    Após reiniciar o nó, execute novamente cat /proc/cmdline e verifique se l3cat e mba aparecem.

Etapa 2: Configure o isolamento de cache L3 e MBA

O ConfigMap ack-slo-config no namespace kube-system controla o isolamento de cache L3 e MBA. Aplique o ConfigMap e rotule os pods com a classe de QoS correspondente para ativar a política.

Aplicar o ConfigMap

Crie o arquivo configmap.yaml com o seguinte conteúdo:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ack-slo-config
  namespace: kube-system
data:
  # resource-qos-config: configures QoS-based resource isolation features.
  # resctrlQOS: controls Intel RDT (L3 cache and MBA) isolation per QoS class.
  #   enable: set to true to activate L3 cache and MBA isolation for pods of this class.
  resource-qos-config: |
    {
      "clusterStrategy": {
        "beClass": {
          "resctrlQOS": {
            "enable": true
          }
        }
      }
    }

Em seguida, aplique o ConfigMap:

  • Se o ack-slo-config já existir no namespace kube-system, aplique um patch para preservar outras configurações:

    kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)"
  • Caso o ConfigMap não exista, crie-o:

    kubectl apply -f configmap.yaml

(Opcional) Ajustar porcentagens de isolamento por classe de QoS

Para ajustar o cache L3 e a largura de banda de memória por classe de QoS, atualize o ConfigMap com porcentagens explícitas:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ack-slo-config
  namespace: kube-system
data:
  resource-qos-config: |
    {
      "clusterStrategy": {
        "lsClass": {
          "resctrlQOS": {
            "enable": true,
            "catRangeEndPercent": 100,  # LS pods: 100% of L3 cache (default)
            "mbaPercent": 100           # LS pods: 100% memory bandwidth (default)
          }
        },
        "beClass": {
          "resctrlQOS": {
            "enable": true,
            "catRangeEndPercent": 30,   # BE pods: 30% of L3 cache (default)
            "mbaPercent": 100           # BE pods: 100% memory bandwidth (default)
          }
        }
      }
    }

Parâmetros de resctrlQOS:

Parâmetro

Tipo

Valores válidos

Padrão (classe LS)

Padrão (classe BE)

Descrição

enable

Booleano

true / false

Ativa ou desativa o isolamento de cache L3 e MBA.

catRangeEndPercent

Inteiro

0–100 (%)

100

30

Porcentagem do cache L3 alocada à classe de QoS.

mbaPercent

Inteiro

0–100 (%), deve ser múltiplo de 10

100

100

Porcentagem da largura de banda de memória disponível para a classe de QoS.

Rotular pods com uma classe de QoS

Aplique o rótulo koordinator.sh/qosClass aos pods que deseja isolar. Este exemplo cria um pod BE que executa uma carga de trabalho de estresse de memória:

apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  labels:
    koordinator.sh/qosClass: 'BE'  # Assigns this pod to the BE QoS class.
spec:
  containers:
  - name: pod-demo
    image: polinux/stress
    resources:
      requests:
        cpu: 1
        memory: "50Mi"
      limits:
        cpu: 1
        memory: "1Gi"
    command: ["stress"]
    args: ["--vm", "1", "--vm-bytes", "256M", "-c", "2", "--vm-hang", "1"]
Nota

Para Deployments, defina o rótulo

koordinator.sh/qosClass

no campo

template.metadata

, e não no nível do Deployment.

Implante o pod:

kubectl apply -f pod-demo.yaml

Próximas etapas