Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se enumeran los parámetros de configuración de nodos personalizados admitidos para Azure Kubernetes Service (AKS) grupos de nodos. Para obtener información sobre cómo crear y aplicar archivos de configuración, consulte Personalización de la configuración del nodo para grupos de nodos de AKS.
Parámetros de configuración personalizados de Kubelet
Importante
Al habilitar sysctls no seguros, se asume la responsabilidad de la estabilidad del nodo y el comportamiento de la carga de trabajo. Los sysctls no seguros pueden provocar inestabilidad del nodo o vulnerabilidades de seguridad si están mal configurados. Asegúrese de comprender las implicaciones de habilitar sysctls no seguros específicos y supervise de cerca el estado de salud de su clúster después de realizar dichos cambios.
Note
La kubeReservedconfiguración , hardEvictionThreshold, softEvictionThreshold, softEvictionGracePeriody evictionMaxPodGracePeriodInSeconds forma parte de la versión preliminar de protección de nodos de AKS y solo se aplica a los grupos de nodos de Linux. Registre la marca de CustomNodeConfigPreview características antes de usar esta configuración. Para habilitar la protección de nodos, consulte Protección de nodos (versión preliminar) en AKS.
Para cada señal de expulsión, establezca los softEvictionThreshold valores coincidentes softEvictionGracePeriod y . Puede omitir ambos valores para usar el valor predeterminado o establecer ambos valores en cadenas vacías para rechazar la expulsión temporal de esa señal. Si especifica un umbral de expulsión temporal, debe ser mayor que el umbral de expulsión duro efectivo para la misma señal.
Configuración personalizada de Kubelet de Linux
| Parámetro | Valores o intervalo permitidos | Predeterminado | Description |
|---|---|---|---|
cpuManagerPolicy |
ninguno, estático | none | La directiva estática permite que los contenedores de pods garantizados con un número entero de solicitudes de CPU accedan a las CPU exclusivas del nodo. |
cpuCfsQuota |
verdadero, falso | true | Habilite o deshabilite la aplicación de cuota de CFS de CPU para contenedores que especifiquen límites de CPU. |
cpuCfsQuotaPeriod |
Intervalo en milisegundos (ms) | 100ms |
Establece el valor del período de cuota de CFS de CPU. |
imageGcHighThreshold |
0-100 | 85 | Porcentaje de uso del disco después del cual siempre se ejecuta la recolección de elementos no utilizados de la imagen. Uso mínimo del disco que desencadena la recolección de basura. Para deshabilitar la recolección de elementos no utilizados de la imagen, establezca este valor en 100. |
imageGcLowThreshold |
0-100, no mayor que imageGcHighThreshold. |
80 | Porcentaje de uso del disco antes del cual la recolección de elementos no utilizados de la imagen nunca se ejecuta. Uso mínimo de disco que puede desencadenar la recolección de elementos no utilizados. |
topologyManagerPolicy |
ninguno, mejor esfuerzo, restringido, un solo nodo numa | none | Optimice la alineación del nodo NUMA. Para obtener más información, consulte Políticas de gestión de control de topología en un nodo. |
allowedUnsafeSysctls |
kernel.shm*, kernel.msg*, kernel.sem, , fs.mqueue.*, net.* |
Ninguno | Lista permitida de patrones no seguros sysctls o sysctl. |
containerLogMaxSizeMB |
Tamaño en megabytes (MB) | 50 | Tamaño máximo (por ejemplo, 10 MB) de un archivo de registro de contenedor antes de su rotación. |
containerLogMaxFiles |
2 o superior | 5 | Número máximo de archivos de registro de contenedor que se conservarán para un contenedor. |
podMaxPids |
-1 al límite de PID del kernel | -1 (infinito) | Número máximo de identificadores de proceso que se pueden ejecutar en un pod. |
seccompDefault |
Unconfined, RuntimeDefault |
Unconfined |
Establece el perfil de seccomp predeterminado para todas las cargas de trabajo.
RuntimeDefault usa el perfil de seccomp predeterminado del contenedor, lo que restringe determinadas llamadas del sistema para mejorar la seguridad. Se produce un error en llamadas al sistema restringidas.
Unconfined no aplica restricciones a las llamadas al sistema, permitiendo todas las llamadas y reduciendo la seguridad. Para obtener más información, consulte el perfil predeterminado de seccomp de containerd. Este parámetro está en versión preliminar.
Registre la marca de características "KubeletDefaultSeccompProfilePreview" mediante el comando az feature register con --namespace "Microsoft.ContainerService". |
kubeReserved.cpuMillicores |
140 a la capacidad de CPU del grupo de nodos en millicores | Calculado por AKS en función del tamaño de la máquina virtual | Reserva la CPU para los demonios del sistema de Kubernetes. |
kubeReserved.memoryMB |
750 a la capacidad de memoria del grupo de nodos en MiB | AKS calculado desde la memoria del nodo y el número máximo de pods por nodo: min(20 × maxPods + 50, 25% of node memory) MiB. Con protección de nodos: min(35 × maxPods + max(250, 2% of node memory), 25% of node memory) MiB |
Reserva memoria para demonios del sistema de Kubernetes. |
hardEvictionThreshold.memoryAvailable |
<number>Ki, <number>Mio <number>Gi con un mínimo de 100Mi; o 2% para 100% |
100Mi. Con la protección de nodos: 250Mi para nodos con 8 GiB de memoria o menos, 375Mi para nodos con más de 8 GiB y menos de 32 GiB, y 512Mi para nodos con 32 GiB o más |
Establece el umbral de expulsión duro para la memoria disponible. |
hardEvictionThreshold.nodeFsAvailable |
<number>Ki, <number>Mi, <number>Gio 10% a 100% |
10% |
Establece el umbral de expulsión duro para el espacio disponible del sistema de archivos de nodo. |
hardEvictionThreshold.nodeFsInodesFree |
<number> o 5% para 100% |
5% |
Establece el umbral de expulsión duro para los inodes del sistema de archivos de nodo libre. |
softEvictionThreshold.memoryAvailable |
Cadena vacía; <number>Ki, <number>Mio <number>Gi con un mínimo de 100Mi; o 2% para 100% |
None. Con la protección de nodos: 500Mi para nodos con 8 GiB de memoria o menos, 750Mi para nodos con más de 8 GiB y menos de 32 GiB, y 1Gi para nodos con 32 GiB o más |
Establece el umbral de expulsión temporal para la memoria disponible. El valor debe ser mayor que el valor efectivo hardEvictionThreshold.memoryAvailable . |
softEvictionThreshold.nodeFsAvailable |
Cadena vacía; <number>Ki, <number>Mi, <number>Gio 10% a 100% |
12% cuando la protección de nodos está habilitada; De lo contrario, ninguno |
Establece el umbral de expulsión temporal para el espacio disponible del sistema de archivos de nodo. El valor debe ser mayor que el valor efectivo hardEvictionThreshold.nodeFsAvailable . |
softEvictionThreshold.nodeFsInodesFree |
Cadena vacía; <number> o 5% para 100% |
7% cuando la protección de nodos está habilitada; De lo contrario, ninguno |
Establece el umbral de expulsión temporal para los inodes del sistema de archivos de nodo libre. El valor debe ser mayor que el valor efectivo hardEvictionThreshold.nodeFsInodesFree . |
softEvictionGracePeriod.memoryAvailable |
Duración de estilo Go o cadena vacía de al menos 30s mediante ns, us, ms, s, , mo h |
30s cuando la protección de nodos está habilitada; De lo contrario, ninguno |
Establece cuánto tiempo se debe cruzar el memoryAvailable umbral de expulsión temporal antes de expulsar pods de kubelet. |
softEvictionGracePeriod.nodeFsAvailable |
Duración de estilo Go o cadena vacía de al menos 30s mediante ns, us, ms, s, , mo h |
2m cuando la protección de nodos está habilitada; De lo contrario, ninguno |
Establece cuánto tiempo se debe cruzar el nodeFsAvailable umbral de expulsión temporal antes de expulsar pods de kubelet. |
softEvictionGracePeriod.nodeFsInodesFree |
Duración de estilo Go o cadena vacía de al menos 30s mediante ns, us, ms, s, , mo h |
2m cuando la protección de nodos está habilitada; De lo contrario, ninguno |
Establece cuánto tiempo se debe cruzar el nodeFsInodesFree umbral de expulsión temporal antes de expulsar pods de kubelet. |
evictionMaxPodGracePeriodInSeconds |
0 o superior | 60 cuando la protección de nodos está habilitada; 0 De lo contrario, |
Establece el número máximo de segundos que kubelet permite que los pods finalicen durante una expulsión temporal. |
Configuración personalizada de Kubelet en Windows
| Parámetro | Valores o intervalo permitidos | Predeterminado | Description |
|---|---|---|---|
imageGcHighThreshold |
0-100 | 85 | Porcentaje de uso del disco después del cual siempre se ejecuta la recolección de elementos no utilizados de la imagen. Uso mínimo del disco que desencadena la recolección de basura. Para deshabilitar la recolección de elementos no utilizados de la imagen, establezca este valor en 100. |
imageGcLowThreshold |
0-100, no mayor que imageGcHighThreshold. |
80 | Porcentaje de uso del disco antes del cual la recolección de elementos no utilizados de la imagen nunca se ejecuta. Uso mínimo de disco que puede desencadenar la recolección de elementos no utilizados. |
containerLogMaxSizeMB |
Tamaño en megabytes (MB) | 10 | Tamaño máximo (por ejemplo, 10 MB) de un archivo de registro de contenedor antes de su rotación. |
containerLogMaxFiles |
2 o superior | 5 | Número máximo de archivos de registro de contenedor que se conservarán para un contenedor. |
Parámetros de configuración del sistema operativo personalizado de Linux
Importante
Para simplificar la búsqueda y la legibilidad, la configuración del sistema operativo se muestra en este artículo por su nombre, pero se deben agregar al archivo JSON de configuración o a la API de AKS mediante la convención de mayúsculas camelCase.
Por ejemplo, si modifica la vm.max_map_count configuración, debe volver a vmMaxMapCount formatearla en en el archivo JSON de configuración.
Límites de identificadores de archivos de Linux
Al atender grandes cantidades de tráfico, este suele provenír de un gran número de archivos locales. Puede ajustar la siguiente configuración del kernel y los límites integrados para permitirle manejar más, a costa de algo de la memoria del sistema.
En la siguiente tabla se enumeran los límites de identificadores de archivo que puede personalizar por grupo de nodos:
| Configuración | Valores o intervalo permitidos | Valor predeterminado de Ubuntu 22.04 | Valor predeterminado de Ubuntu 24.04 | Valor predeterminado de Azure Linux 3.0 | Description |
|---|---|---|---|---|---|
fs.file-max |
8192 - 9223372036854775807 | 9223372036854775807 | 9223372036854775807 | 9223372036854775807 | Número máximo de identificadores de archivo que asigna el kernel de Linux. Este valor se establece en el máximo posible (2^63-1) para evitar el agotamiento del descriptor de archivo y garantizar un número ilimitado de manejadores de archivos para cargas de trabajo en contenedores. |
fs.inotify.max_user_watches |
781250 - 2097152 | 1048576 | 1048576 | 1048576 | Número máximo de inspecciones de archivos permitidos por el sistema. Cada inspección tiene aproximadamente 90 bytes en un kernel de 32 bits y unos 160 bytes en un kernel de 64 bits. |
fs.aio-max-nr |
65536 - 6553500 | 65536 | 65536 | 65536 | El aio-nr muestra el número actual de solicitudes de E/S asincrónicas en todo el sistema. aio-max-nr permite cambiar el valor máximo hasta el que puede aumentar aio-nr. |
fs.nr_open |
8192 - 20000500 | 1048576 | 1048576 | 1073741816 | El número máximo de identificadores de archivo que un proceso puede asignar. |
Note
El fs.file-max parámetro se establece en 9223372036854775807 (el valor máximo de un entero de 64 bits con signo) en Ubuntu y Linux de Azure en función de los valores predeterminados ascendentes. Esta configuración:
- Evita ataques por denegación de servicio en función del agotamiento del descriptor de archivos de todo el sistema.
- Garantiza que las cargas de trabajo de contenedor nunca sufran de cuellos de botella debido a los límites de manejadores de archivos de todo el sistema.
-
Mantiene la seguridad a través de límites por proceso (
fs.nr_openyulimit) que se siguen aplicando a procesos individuales. - Optimiza las plataformas de contenedor en las que muchos contenedores se pueden ejecutar simultáneamente, cada uno de los cuales puede abrir muchos archivos y conexiones de red.
Ajuste de socket y red en Linux
En el caso de los nodos de agente, que se espera que controlen un gran número de sesiones simultáneas, puede usar las siguientes opciones de TCP y red y ajustarlas por grupo de nodos:
| Configuración | Valores o intervalo permitidos | Valor predeterminado de Ubuntu 22.04 | Valor predeterminado de Ubuntu 24.04 | Valor predeterminado de Azure Linux 3.0 | Description |
|---|---|---|---|---|---|
net.core.somaxconn |
4096 - 3240000 | 16384 | 16384 | 16384 | Número máximo de solicitudes de conexión que se pueden poner en cola para cualquier socket de escucha determinado. Un límite superior para el valor del parámetro de trabajo pendiente que se pasa a la función listen(2). Si el argumento de trabajo pendiente es mayor que somaxconn, se trunca de forma silenciosa hasta este límite. |
net.core.netdev_max_backlog |
1000 - 3240000 | 1000 | 1000 | 1000 | Número máximo de paquetes, en cola en el lado INPUT, cuando la interfaz recibe paquetes a una velocidad mayor de la que el kernel puede procesarlos. |
net.core.rmem_max |
212992 - 134217728 | 1048576 | 1048576 | 212992 | Tamaño máximo del búfer de sockets de recepción en bytes. |
net.core.wmem_max |
212992 - 134217728 | 212992 | 212992 | 212992 | Tamaño máximo del búfer de sockets de envío en bytes. |
net.core.optmem_max |
20480 - 4194304 | 20480 | 131 072 | 20480 | Tamaño máximo del búfer auxiliar (búfer de memoria de opción) permitido por socket. La memoria de opción de socket se utiliza en algunos casos para almacenar estructuras adicionales relacionadas con el uso del socket. |
net.ipv4.tcp_max_syn_backlog |
128 - 3240000 | 16384 | 16384 | 16384 | Número máximo de solicitudes de conexión en cola que no han recibido una confirmación del cliente de conexión. Si se supera este número, el kernel comienza a quitar solicitudes. |
net.ipv4.tcp_max_tw_buckets |
8000 - 1440000 | 262144 | 262144 | 131 072 | Número máximo de TIME-WAIT sockets mantenidos por el sistema simultáneamente. Si se supera este número, el socket time-wait se destruye inmediatamente y se imprime la advertencia. |
net.ipv4.tcp_fin_timeout |
5 - 120 | 60 | 60 | 60 | La cantidad de tiempo que una conexión huérfana (ninguna aplicación hace referencia a ella) permanece en el estado FIN_WAIT_2 antes de que se anule en el extremo local. |
net.ipv4.tcp_keepalive_time |
30 - 432000 | 7200 | 7200 | 7200 | Frecuencia con la que TCP envía mensajes keepalive cuando keepalive está habilitado. |
net.ipv4.tcp_keepalive_probes |
1 - 15 | 9 | 9 | 9 | Número de sondeos keepalive que envía TCP, hasta que decide que la conexión se ha interrumpido. |
net.ipv4.tcp_keepalive_intvl |
10 - 90 | 75 | 75 | 75 | Frecuencia con la que se envían los sondeos. Multiplicado por tcp_keepalive_probes constituye el tiempo para terminar una conexión que no responde, después de que se inicien los sondeos. |
net.ipv4.tcp_tw_reuse |
2 | 2 | 2 | Permite reutilizar TIME-WAIT sockets para nuevas conexiones cuando es seguro desde un punto de vista de protocolo. |
|
net.ipv4.ip_local_port_range |
Primera: 1024 - 60999 y Última: 32768 - 65535] | Primero: 32768 y Último: 60999 | Primero: 32768 y Último: 60999 | Primero: 32768 y Último: 60999 | El intervalo de puertos local que utiliza el tráfico TCP y UDP para elegir el puerto local. El intervalo se compone de dos números: el primer puerto local permitido para el tráfico TCP y UDP en el nodo del agente y el último número de puerto local. |
net.ipv4.neigh.default.gc_thresh1 |
128 - 80000 | 4096 | 4096 | 4096 | Número mínimo de entradas que pueden estar en la memoria caché de ARP. La recolección de basura no se desencadena si el número de entradas es inferior a esta configuración. |
net.ipv4.neigh.default.gc_thresh2 |
512 - 90000 | 8192 | 8192 | 8192 | Número máximo flexible de entradas que pueden estar en la memoria caché de ARP. Esta configuración es posiblemente la más importante, ya que la recolección de elementos no utilizados ARP se desencadena unos 5 segundos después de alcanzar este máximo. |
net.ipv4.neigh.default.gc_thresh3 |
1024 - 100000 | 16384 | 16384 | 16384 | Número máximo fijo de entradas en la caché de ARP. |
net.netfilter.nf_conntrack_max |
131072 - 2097152 | Calculado dinámicamente | Calculado dinámicamente | Calculado dinámicamente |
nf_conntrack es un módulo que realiza un seguimiento de las entradas de conexión de NAT en Linux. El módulo nf_conntrack usa una tabla hash para anotar el registro de la conexión establecida del protocolo TCP.
nf_conntrack_max es el número máximo de nodos de la tabla hash, es decir, el número máximo de conexiones admitidas por el módulo nf_conntrack o el tamaño de la tabla de seguimiento de la conexión.
El valor predeterminado se calcula dinámicamente en función de la memoria del sistema mediante la fórmula: RAM_in_bytes / 16384 (o RAM_in_MB * 64). Por ejemplo, una máquina virtual con 8 GB de RAM tiene un valor predeterminado de aproximadamente 524 288 conexiones. Los valores reales varían en función del tamaño de la máquina virtual y de la memoria disponible. |
net.netfilter.nf_conntrack_buckets |
65536 - 524288 | Calculado dinámicamente | Calculado dinámicamente | Calculado dinámicamente |
nf_conntrack es un módulo que realiza un seguimiento de las entradas de conexión de NAT en Linux. El módulo nf_conntrack usa una tabla hash para anotar el registro de la conexión establecida del protocolo TCP.
nf_conntrack_buckets es el tamaño de la tabla hash.
El valor predeterminado se calcula dinámicamente en función de la memoria del sistema mediante la fórmula: RAM_in_bytes / 16384, con un mínimo de 1024 cubos y un máximo de 262 144 cubos. El valor predeterminado nf_conntrack_max suele establecerse en nf_conntrack_buckets * 4. Los valores reales varían en función del tamaño de la máquina virtual y de la memoria disponible. |
Límites de trabajo de Linux
Al igual que los límites del descriptor de archivos, el número de trabajos o subprocesos que un proceso puede crear está limitado por la configuración del kernel y los límites de usuarios. El límite de usuarios en AKS es ilimitado. En la tabla siguiente se muestra la configuración del kernel que puede personalizar por grupo de nodos:
| Configuración | Valor predeterminado de Ubuntu 22.04 | Valor predeterminado de Ubuntu 24.04 | Valor predeterminado de Azure Linux 3.0 | Description |
|---|---|---|---|---|
kernel.threads-max |
Calculado dinámicamente | Calculado dinámicamente | Calculado dinámicamente | Los procesos pueden iniciar los subprocesos de trabajo. El número máximo de subprocesos que se pueden crear se establece con la configuración del kernel kernel.threads-max.
El valor predeterminado se calcula dinámicamente en función de la memoria del sistema mediante la fórmula: total_ram_pages / 4 (donde cada página suele ser de 4 KB). Los valores reales varían en función del tamaño de la máquina virtual y de la memoria disponible. |
Memoria virtual Linux
En la tabla siguiente se enumeran las opciones de configuración del kernel que puede personalizar por grupo de nodos para optimizar el funcionamiento del subsistema de memoria virtual (VM) del kernel de Linux y de datos sucios en el writeout disco:
| Configuración | Valores o intervalo permitidos | Valor predeterminado de Ubuntu 22.04 | Valor predeterminado de Ubuntu 24.04 | Valor predeterminado de Azure Linux 3.0 | Description |
|---|---|---|---|---|---|
vm.max_map_count |
65530 | 1048576 | 1048576 | Este archivo contiene el número máximo de áreas de mapa de memoria que puede tener un proceso. Las áreas de asignación de memoria se usan como efectos secundarios de la llamada a malloc, directamente mediante mmap, mprotect y madvise, y también cuando se cargan bibliotecas compartidas. |
|
vm.vfs_cache_pressure |
1 - 100 | 100 | 100 | 100 | Este valor de porcentaje controla la tendencia del kernel a reclamar la memoria, que se usa para el almacenamiento en caché de objetos de directorio e inode. |
vm.swappiness |
0 - 100 | 60 | 60 | 60 | Este control se usa para definir la forma agresiva en que el kernel intercambia páginas de memoria. Los valores más altos aumentan la agresividad, los valores inferiores reducen la cantidad de intercambio. Un valor de 0 indica al kernel que no inicie el intercambio hasta que la cantidad de páginas libres y de copia de seguridad de archivos sea menor que la marca de límite superior de una zona. |
swapFileSizeMB |
1 MB: tamaño del disco temporal (/dev/sdb) | Ninguno | Ninguno | Ninguno | SwapFileSizeMB especifica el tamaño en MB de un archivo de intercambio que se va a crear en los nodos del agente desde este grupo de nodos. |
transparentHugePageEnabled |
always, , madvise, never |
always |
always |
madvise |
Transparent Hugepages es una característica de kernel de Linux diseñada para mejorar el rendimiento al hacer un uso más eficaz del hardware de asignación de memoria del procesador. Cuando está habilitado, el kernel intenta asignar hugepages siempre que sea posible, y cualquier proceso en Linux recibe páginas de 2 MB si la región mmap está alineada naturalmente a 2 MB. En determinados casos, cuando hugepages están habilitados en todo el sistema, las aplicaciones podrían acabar asignando más recursos de memoria. Una aplicación podría usar mmap con una región grande, pero solo tocar 1 byte de ella, en cuyo caso, es posible que se asigne una página de 2 MB en lugar de una página de 4k por falta de una buena razón para hacerlo. Este caso es el motivo por el que es posible deshabilitar elementos hugepages en todo el sistema o solo tenerlos dentro de regiones MADV_HUGEPAGE madvise. |
transparentHugePageDefrag |
always, defer, defer+madvise, , madvise, never |
madvise |
madvise |
madvise |
Este valor controla si el kernel debe hacer un uso intensivo de la compactación de memoria para que haya más elementos hugepages disponibles. |