Reservas de recursos de nodo en Azure Kubernetes Service (AKS)

En este artículo, obtendrá información acerca de las reservas de recursos de nodo en Azure Kubernetes Service (AKS).

Reservas de recursos

AKS usa recursos de nodo para ayudar a que los nodos funcionen como parte del clúster. Este uso puede provocar una discrepancia entre los recursos totales del nodo y los recursos asignables en AKS.

AKS reserva dos tipos de recursos, CPU y memoria, en cada nodo para mantener el rendimiento y la funcionalidad del nodo. A medida que un nodo aumenta sus recursos, las reservas de recursos también aumentan debido a una mayor necesidad de gestionar los pods implementados por el usuario. Tenga en cuenta que no puede cambiar las reservas de recursos en un nodo.

Reservas de CPU

La CPU reservada depende del tipo de nodo y la configuración del clúster, lo que podría dar lugar a una CPU menos fácil de usar debido a la ejecución de características adicionales. En la tabla siguiente se muestran las reservas de CPU en millicores:

Núcleos de CPU del host 1 núcleo 2 núcleos 4 núcleos 8 núcleos 16 núcleos 32 núcleos 64 núcleos
CPU reservada para Kube (millicores) 60 100 140 180 260 420 740

Reservas de memoria

En AKS, la memoria reservada consta de la suma de dos valores:

AKS 1.29 y versiones posteriores

  • kubelet daemon tiene por defecto la política de expulsión memory.available < 100 Mi. Esta regla garantiza que un nodo tenga al menos 100 Mi asignables en todo momento. Cuando un host esté por debajo de ese umbral de memoria disponible, kubelet desencadenará la finalización de uno de los pods en ejecución y liberará memoria en la máquina host.

  • Tasa de reserva de memoria establecida según el valor más bajo de: 20 MB * el número máximo de pods admitidos en el nodo + 50 MB o el 25 % de los recursos totales de memoria del sistema.

    Ejemplos:

    • Si la máquina virtual (VM) proporciona 8 GB de memoria y el nodo admite hasta 30 pods, AKS reserva 20 MB * 30 pods máx. + 50 MB = 650 MB para kube-reserved. Allocatable space = 8 GB - 0.65 GB (kube-reserved) - 0.1 GB (eviction threshold) = 7.25 GB or 90.625% allocatable.
    • Si la máquina virtual proporciona 4 GB de memoria y el nodo admite hasta 70 pods, AKS reserva 25 % * 4 GB = 1000 MB para kube-reserved, ya que es menor que 20 MB * 70 Max Pods + 50 MB = 1450 MB.

    Para obtener más información, consulte Configuración del número máximo de pods por nodo en un clúster de AKS.

Nota:

Para personalizar kubeReserved los valores de CPU y memoria o hardEvictionThreshold en grupos de nodos de Linux, use la configuración de vista previa para la personalización de nodos y registre la marca de característica AKSNodeCustomizationPreview. Para obtener más información, consulte Personalización de la configuración del nodo para Azure Kubernetes Service (AKS) grupos de nodos.

Versiones de AKS anteriores a 1.29

  • El demonio kubelet tiene la regla de expulsión memory.available < 750 Mi de manera predeterminada. Esta regla garantiza que un nodo tenga al menos 750 Mi asignables en todo momento. Cuando un host está por debajo de ese umbral de memoria disponible, el kubelet desencadena la terminación de uno de los pods en ejecución y libera memoria en el equipo host.
  • Una tasa decreciente de reservas de memoria para el correcto funcionamiento del demonio kubelet (kube-reserved).
    • 25 % de los primeros 4 GB de memoria
    • 20 % de los siguientes 4 GB de memoria (hasta 8 GB)
    • 10 % de los siguientes 8 GB de memoria (hasta 16 GB)
    • 6 % de los siguientes 112 GB de memoria (hasta 128 GB)
    • 2 % de cualquier memoria de más de 128 GB

Nota:

AKS reserva un adicional de 2 GB para los procesos del sistema en nodos de Windows que no forman parte de la memoria calculada.

Las reglas de asignación de memoria y CPU están diseñadas para:

  • Mantenga los nodos de agente en buen estado, incluidos algunos pods del sistema de hospedaje críticos para el mantenimiento del clúster.
  • hacen que el nodo informe de un volumen menor de memoria y CPU asignables que del que informaría si no formase parte de un clúster de Kubernetes.

Por ejemplo, si un nodo ofrece 7 GB, informa del 34 % de memoria no disponible, incluido el umbral de expulsión duro de 750 Mi.

0.75 + (0.25*4) + (0.20*3) = 0.75 GB + 1 GB + 0.6 GB = 2.35 GB / 7 GB = 33.57% reserved

Además de las reservas para Kubernetes mismo, el sistema operativo del nodo subyacente también reserva una cantidad de recursos de CPU y memoria para mantener las funciones del sistema operativo.

Para conocer los procedimientos recomendados correspondientes, consulte Procedimientos recomendados para las funcionalidades básicas del programador en AKS.

Pasos siguientes