Em cenários de overcommit dinâmico de recursos, a CPU ociosa de pods de alta prioridade (Guaranteed e Burstable) pode ser alocada para workloads BestEffort (BE). O CPU Suppress limita dinamicamente o uso de CPU dos pods BE com base na utilização do nó, protegendo os pods sensíveis à latência (LS) e mantendo o uso de recursos do cluster dentro de um limiar seguro.
O CPU Suppress requer overcommit dinâmico de recursos .
Como funciona
O CPU Suppress monitora a utilização de CPU do nó em relação a um limiar configurável (cpuSuppressThresholdPercent, padrão: 65%). O cpuset dos pods BE se expande e contrai conforme a margem disponível dos pods LS:
Aumento da carga LS — O CPU Suppress reduz o cpuset dos pods BE para proteger os tempos de resposta LS
Redução da carga LS — O CPU Suppress expande o cpuset dos pods BE para recuperar a capacidade ociosa
A figura a seguir ilustra a relação entre o limiar de CPU, o uso dos pods LS e a restrição de CPU dos pods BE.
A figura utiliza os seguintes termos:
CPU Threshold: o limiar de utilização de CPU do nó
Pod (LS).Usage: uso de CPU pelos pods LS
CPU Restriction for BE: recursos de CPU disponíveis para os pods BE
Alinhe o parâmetro cpuSuppressThresholdPercent com a marca d'água de CPU reservada na sua configuração de overcommit dinâmico de recursos.
Pré-requisitos
Verifique se você possui:
O componente ack-koordinator (ack-slo-manager) instalado na versão 0.4.0 ou superior
Consulte as classes Pod QoS e a seção sobre como atribuir recursos de memória a containers e pods na documentação do Kubernetes.
Faturamento
A instalação e o uso do ack-koordinator são gratuitos. No entanto, cobranças podem ocorrer nas seguintes situações:
Recursos dos nós worker: como o ack-koordinator é um componente não gerenciado, ele consome recursos dos nós worker após a instalação. É possível controlar as solicitações de recursos de cada módulo durante o processo de instalação.
Métricas do Prometheus: caso você ative as métricas do Prometheus para o ack-koordinator e utilize o Managed Service for Prometheus, essas métricas serão contabilizadas como métricas personalizadas e gerarão custos. As taxas variam conforme o tamanho do cluster e a quantidade de aplicações. Antes de ativar esse recurso, revise a página de Faturamento do Managed Service for Prometheus para entender a cota gratuita e as regras de cobrança. Para monitorar o uso, consulte Consultar a quantidade de dados observáveis e faturas.
Procedimento
A configuração do CPU Suppress ocorre no nível do cluster por meio do ConfigMap ack-slo-config no namespace kube-system.
-
Crie um arquivo chamado
configmap.yamlcom o seguinte conteúdo:apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: resource-threshold-config: | { "clusterStrategy": { "enable": true } } -
Aplique o ConfigMap. O método varia dependendo da existência prévia do
ack-slo-configno seu cluster:-
Se o ConfigMap já existir, aplique um patch para atualizar apenas o campo relevante:
kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)" -
Se o ConfigMap não existir, crie-o:
kubectl apply -f configmap.yaml
-
-
Verifique se o CPU Suppress está ativo checando a alocação de CPU dos pods BE:
cat /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-besteffort.slice/cpuset.cpusSaída esperada:
10-25,35-51,62-77,87-103Essa saída confirma que os pods BE estão restritos a um subconjunto de CPUs e que o CPU Suppress está ativo.
-
Opcional: Defina o limiar de utilização de CPU. Atualize o arquivo
configmap.yamlcom o conteúdo abaixo e reaplique-o:apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: resource-threshold-config: | { "clusterStrategy": { "enable": true, "cpuSuppressThresholdPercent": 65 } }Valor padrão: 65%. Alinhe o parâmetro
cpuSuppressThresholdPercentao perfil das suas workloads ou à marca d'água de CPU do overcommit dinâmico de recursos.
Parâmetros
|
Parâmetro |
Tipo |
Intervalo de valores |
Padrão |
Descrição |
|
|
Booleano |
|
— |
Ativa ( |
|
|
Inteiro |
[0, 100] |
|
Limiar de utilização de CPU do nó (%). Os recursos de CPU dos pods BE diminuem quando a utilização excede esse valor e aumentam quando ficam abaixo dele. |
Próximas etapas
O ack-koordinator oferece limites adicionais de recursos para workloads com overcommit: