
Mi máquina tiene 48 CPU. Antes de crear pods, desconecto entre 1 y 47 CPU mediante echo "0" > /sys/devices/system/cpuN/online
.
Cuando creo el primer pod para un nodo, conecto la CPU #1
mediante echo "1" > /sys/devices/system/cpu1/online
. El pod ejecuta la tarea de estrés de la CPU y veo CPU0
que este pod lo utiliza por completo. El uso de la vaina 99-100% CPU
.
Cuando creo el segundo pod en el mismo nodo, me pongo en línea CPU #2 echo "1" > /sys/devices/system/cpu2/online
. Pero solo CPU0 está completamente utilizada CPU1
y CPU2
no tenía carga. Y ambos pods funcionan con un uso de CPU del 50 %.
Si creo más pods en el mismo nodo, simplemente comparten CPU0
lo que tenga en línea, más CPU. Todas las demás CPU en línea están simplemente inactivas.
Mi Kubernetes version is 1.23.12
. Esto no sucede en la versión 1.28
. En la versión 1.28
, todos los pods se ejecutan en diferentes CPU con un uso del 100%. El yaml del pod tiene limitación de CPU y solicitud a 1.
No estoy seguro de que se trate de un error en la versión 1.23.12
o de que alguna configuración salga mal. Cualquier comentario será apreciado.
Respuesta1
El administrador de CPU es responsable de la asignación de CPU
recursos a los pods en Kubernetes. En un nodo, el Administrador de CPU es responsable de habilitar políticas de carga de trabajo mejoradas. Por ejemplo, dependiendo de si el pod está limitado y qué núcleos de CPU están disponibles en el momento de la programación, dirige varios CPU
pods intensivos para que compartan tareas con diferentes núcleos de CPU.
CPU Manager ha estado en versión beta desde Kubernetes v1.12
y está habilitado de forma predeterminada. La --cpu-manager-policy
opción kubelet se emplea para definir la política del Administrador de CPU.
EnKubernetes versión 1.23.14ellos tienen unarreglar un erroren el cambio.
Kubelet: fix GetAllocatableCPUs method in cpumanage.
Deversión 1.26, el administrador de CPU pasó a GA en Kubernetes. Esto significa que la función CPU Manager se considera estable y está lista para usarse en entornos de producción. Entonces esa podría ser la razón por la que tienes un problema al version 1.23.12
no estar en version 1.31
.