En escenarios de sobreasignación dinámica de recursos, la CPU no utilizada por pods de alta prioridad (Guaranteed y Burstable) se puede asignar a cargas de trabajo BestEffort (BE). CPU Suppress limita dinámicamente el uso de CPU de los pods BE según la utilización del nodo para proteger los pods sensibles a la latencia (LS) y mantener el uso de recursos del clúster dentro de un umbral seguro.
CPU Suppress requiere dynamic resource overcommitment .
Funcionamiento
CPU Suppress monitorea la utilización de CPU del nodo con respecto a un umbral configurable (cpuSuppressThresholdPercent, predeterminado: 65%). El cpuset de los pods BE se expande y contrae según la capacidad disponible de los pods LS:
La carga LS aumenta: CPU Suppress reduce el cpuset de los pods BE para proteger los tiempos de respuesta de LS.
La carga LS disminuye: CPU Suppress expande el cpuset de los pods BE para recuperar la capacidad inactiva.
La siguiente figura muestra la relación entre el umbral de CPU, el uso de los pods LS y la restricción de CPU de los pods BE.
La figura utiliza los siguientes términos:
CPU Threshold: el umbral de utilización de CPU del nodo.
Pod (LS).Usage: uso de CPU de los pods LS.
CPU Restriction for BE: recursos de CPU disponibles para los pods BE.
Alinee cpuSuppressThresholdPercent con la marca de agua de CPU reservada en su configuración de sobreasignación dinámica de recursos.
Requisitos previos
Asegúrese de contar con lo siguiente:
ack-koordinator (ack-slo-manager) versión 0.4.0 o posterior instalada
Consulte Pod QoS classes y Assign memory resources to containers and pods en la documentación de Kubernetes.
Facturación
La instalación y el uso de ack-koordinator son gratuitos. Sin embargo, pueden generarse cargos en los siguientes casos:
Recursos de nodos worker: ack-koordinator es un componente no administrado que consume recursos del nodo worker tras la instalación. Durante la instalación, puede controlar las solicitudes de recursos para cada módulo.
Métricas de Prometheus: si habilita las métricas de Prometheus para ack-koordinator y utiliza Managed Service for Prometheus, dichas métricas se consideran custom metrics y generan cargos. Las tarifas dependen del tamaño del clúster y la cantidad de aplicaciones. Antes de habilitarlas, revise la página de Billing de Managed Service for Prometheus para conocer la cuota gratuita y las reglas de facturación. Para monitorear el uso, consulte Query the amount of observable data and bills.
Procedimiento
CPU Suppress se configura a nivel de clúster mediante el ConfigMap ack-slo-config en el namespace kube-system.
-
Cree un archivo llamado
configmap.yamlcon el siguiente contenido:apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: resource-threshold-config: | { "clusterStrategy": { "enable": true } } -
Aplique el ConfigMap. El método depende de si
ack-slo-configya existe en su clúster:-
Si el ConfigMap existe, aplíquele un parche para actualizar solo el campo correspondiente:
kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)" -
Si el ConfigMap no existe, créelo:
kubectl apply -f configmap.yaml
-
-
Compruebe que CPU Suppress está activo mediante la verificación de la asignación de CPU de los pods BE:
cat /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-besteffort.slice/cpuset.cpusSalida esperada:
10-25,35-51,62-77,87-103Esto confirma que los pods BE están restringidos a un subconjunto de CPU y que CPU Suppress se encuentra activo.
-
Opcional: Establezca el umbral de utilización de CPU. Actualice
configmap.yamlcon el siguiente contenido y vuelva a aplicarlo:apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: resource-threshold-config: | { "clusterStrategy": { "enable": true, "cpuSuppressThresholdPercent": 65 } }Valor predeterminado: 65%. Alinee
cpuSuppressThresholdPercentcon el perfil de su carga de trabajo o con la marca de agua de CPU de sobreasignación dinámica de recursos.
Parámetros
|
Parámetro |
Tipo |
Rango de valores |
Predeterminado |
Descripción |
|
|
Booleano |
|
— |
Habilita ( |
|
|
Entero |
[0, 100] |
|
Umbral de utilización de CPU del nodo (%). Los recursos de CPU de los pods BE se reducen cuando la utilización supera este valor y se expanden cuando cae por debajo. |
Siguientes pasos
ack-koordinator proporciona límites de recursos adicionales para cargas de trabajo sobreasignadas: