Personaliza la configuración del sistema de nodos

En este documento, se muestra cómo personalizar la configuración de tu nodo de Google Kubernetes Engine (GKE) con un archivo de configuración denominado configuración del sistema de nodos.

Una configuración del sistema de nodos es un archivo de configuración que proporciona una manera de ajustar un conjunto limitado de parámetros de configuración del sistema. En tu grupo de nodos, puedes usar una configuración del sistema de nodos para especificar parámetros de configuración personalizados para el agente del nodo de Kubernetes kubelet y para las configuraciones del kernel de Linux de nivel bajo sysctl.

En este documento, se detallan las configuraciones disponibles para una configuración del sistema de nodos y cómo aplicarlas a tus grupos de nodos de GKE Standard. Ten en cuenta que, debido a que los clústeres de GKE Autopilot tienen un entorno de nodos más administrado, sus opciones de configuración directa del sistema de nodos son limitadas en comparación con los grupos de nodos de GKE Standard.

Por qué usar configuraciones del sistema de nodos

Las configuraciones del sistema de nodos ofrecen los siguientes beneficios:

  • Ajuste del rendimiento: Optimiza el rendimiento de la pila de red, la administración de memoria, la programación de la CPU o el comportamiento de E/S para aplicaciones exigentes, como el entrenamiento o la entrega de IA, bases de datos, servidores web de alto tráfico o servicios sensibles a la latencia.
  • Fortalecimiento de la seguridad: Aplica parámetros de configuración de seguridad específicos a nivel del kernel o restringe ciertos comportamientos del sistema para reducir la superficie de ataque.
  • Administración de recursos: Ajusta la forma en que kubelet administra los PIDs, el espacio en disco, la recolección de elementos no utilizados de imágenes o los recursos de CPU y memoria.
  • Compatibilidad de la carga de trabajo: Ayuda a garantizar que el entorno del nodo cumpla con los requisitos previos específicos para software especializado o aplicaciones más antiguas que requieren parámetros de configuración del kernel particulares.

Otras opciones para personalizar la configuración de los nodos

También puedes personalizar la configuración de tu nodo con otros métodos:

Los nodos de Windows Server no admiten la configuración del sistema de nodos.

Antes de comenzar

Antes de comenzar, asegúrate de hacer lo siguiente:

  • Instala las herramientas de línea de comandos:
    • Si usas los ejemplos de gcloud CLI en este documento, asegúrate de instalar y configurar Google Cloud CLI.
    • Si usas los ejemplos de Terraform, asegúrate de instalar y configurar Terraform.
  • Otorga permisos: Necesitas los permisos de IAM adecuados para crear y actualizar clústeres y grupos de nodos de GKE, como container.clusterAdmin o un rol diferente con permisos equivalentes.
  • Planifica posibles interrupciones de la carga de trabajo: Las configuraciones de nodos personalizados se aplican a nivel del grupo de nodos. Por lo general, los cambios activan una actualización progresiva de los nodos del grupo, lo que implica volver a crear los nodos. Planifica posibles interrupciones de la carga de trabajo y usa presupuestos de interrupción de Pods (PDB) cuando sea apropiado.
  • Haz una copia de seguridad y prueba todos los cambios: Siempre prueba los cambios de configuración en un entorno de desarrollo o de pruebas antes de aplicarlos a la producción. Los parámetros de configuración incorrectos pueden provocar inestabilidad en los nodos o errores en las cargas de trabajo.
  • Revisa la configuración predeterminada de GKE: Las imágenes de nodos de GKE incluyen configuraciones predeterminadas optimizadas. Personaliza los parámetros solo si tienes una necesidad específica y comprendes el impacto de los cambios.

Usa una configuración de sistema de nodos en el modo GKE Standard

Cuando usas una configuración del sistema de nodos, usas un archivo YAML que contiene los parámetros de configuración para kubelet y el kernel de Linux. Si bien las configuraciones del sistema de nodos también están disponibles en el modo Autopilot de GKE, los pasos de este documento te muestran cómo crear y usar un archivo de configuración para el modo Estándar de GKE.

Para usar una configuración del sistema de nodos en el modo estándar de GKE, haz lo siguiente:

  1. Crea un archivo de configuración. Este archivo contiene tus configuraciones de kubelet y sysctl.
  2. Agrega la configuración cuando crees un clúster o cuando crees o actualices un grupo de nodos.

Crea un archivo de configuración

Escribe la configuración de tu sistema de nodos en YAML. En el siguiente ejemplo, se agregan configuraciones para las opciones de kubelet y sysctl:

kubeletConfig:
  cpuManagerPolicy: static
  allowedUnsafeSysctls:
    - 'kernel.shm*'
    - 'kernel.msg*'
    - 'kernel.sem'
    - 'fs.mqueue*'
    - 'net.*'
linuxConfig:
  sysctl:
    net.core.somaxconn: '2048'
    net.ipv4.tcp_rmem: '4096 87380 6291456'

En este ejemplo, se aplica lo siguiente:

  • El campo cpuManagerPolicy: static configura kubelet para usar la política de administración de CPU estáticas. + El campo net.core.somaxconn: '2048' limita las tareas pendientes socket listen() a 2,048 bytes.
  • El campo net.ipv4.tcp_rmem: '4096 87380 6291456' establece el valor mínimo, predeterminado y máximo del búfer de recepción de sockets de TCP en 4,096 bytes, 87,380 bytes y 6,291,456 bytes, respectivamente.

Si deseas agregar parámetros de configuración solo para kubelet o sysctl, incluye solo esa sección en la configuración del sistema de nodos. Por ejemplo, para agregar una configuración de kubelet, crea el siguiente archivo:

kubeletConfig:
  cpuManagerPolicy: static

Para obtener una lista completa de los campos que puedes agregar a la configuración del sistema de nodos, consulta las secciones Opciones de configuración de Kubelet y Opciones de configuración de Sysctl.

Agrega la configuración a un grupo de nodos de Standard

Después de crear la configuración del sistema de nodos, agrega la marca --system-config-from-file con Google Cloud CLI. Puedes agregar esta marca cuando creas un clúster o cuando creas o actualizas un grupo de nodos. No puedes agregar una configuración de sistema de nodo con la consola de Google Cloud .

Crea un clúster con la configuración del sistema de nodos

Puedes agregar una configuración del sistema de nodos durante la creación del clúster con gcloud CLI o Terraform. Las siguientes instrucciones aplican la configuración del sistema de nodos al grupo de nodos predeterminado:

gcloud CLI

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --system-config-from-file=SYSTEM_CONFIG_PATH

Reemplaza lo siguiente:

  • CLUSTER_NAME: El nombre de tu clúster
  • LOCATION: la zona o región de procesamiento del clúster.
  • SYSTEM_CONFIG_PATH: La ruta de acceso al archivo que contiene tus configuraciones de kubelet y sysctl

Después de aplicar una configuración del sistema de nodos, el grupo de nodos predeterminado del clúster usa la configuración que definiste.

Terraform

Para crear un clúster regional con una configuración del sistema de nodos personalizada a través de Terraform, consulta el siguiente ejemplo:

resource "google_container_cluster" "default" {
  name     = "gke-standard-regional-cluster"
  location = "us-central1"

  initial_node_count = 1

  node_config {
    # Kubelet configuration
    kubelet_config {
      cpu_manager_policy = "static"
    }

    linux_node_config {
      # Sysctl configuration
      sysctls = {
        "net.core.netdev_max_backlog" = "10000"
      }

      # Linux cgroup mode configuration
      cgroup_mode = "CGROUP_MODE_V2"

      # Linux huge page configuration
      hugepages_config {
        hugepage_size_2m = "1024"
      }
    }
  }
}

Si deseas obtener más información para usar Terraform, consulta Compatibilidad con Terraform para GKE.

Crea un grupo de nodos nuevo con la configuración del sistema de nodos

Puedes agregar una configuración del sistema de nodos cuando usas gcloud CLI o Terraform para crear un grupo de nodos nuevo.

En las siguientes instrucciones, se aplica la configuración del sistema de nodos a un grupo de nodos nuevo:

gcloud CLI

gcloud container node-pools create POOL_NAME \
     --cluster CLUSTER_NAME \
     --location=LOCATION \
     --system-config-from-file=SYSTEM_CONFIG_PATH

Reemplaza lo siguiente:

  • POOL_NAME: El nombre de tu grupo de nodos
  • CLUSTER_NAME: El nombre del clúster al que deseas agregar un grupo de nodos.
  • LOCATION: la zona o región de procesamiento del clúster.
  • SYSTEM_CONFIG_PATH: La ruta de acceso al archivo que contiene tus configuraciones de kubelet y sysctl

Terraform

Para crear un grupo de nodos con una configuración del sistema de nodos personalizada con Terraform, consulta el siguiente ejemplo:

resource "google_container_node_pool" "default" {
  name    = "gke-standard-regional-node-pool"
  cluster = google_container_cluster.default.name

  node_config {
    # Kubelet configuration
    kubelet_config {
      cpu_manager_policy = "static"
    }

    linux_node_config {
      # Sysctl configuration
      sysctls = {
        "net.core.netdev_max_backlog" = "10000"
      }

      # Linux cgroup mode configuration
      cgroup_mode = "CGROUP_MODE_V2"

      # Linux huge page configuration
      hugepages_config {
        hugepage_size_2m = "1024"
      }
    }
  }
}

Si deseas obtener más información para usar Terraform, consulta Compatibilidad con Terraform para GKE.

Actualiza la configuración del sistema de nodos de un grupo de nodos existente

Puedes actualizar la configuración del sistema de nodos de un grupo de nodos existente ejecutando el siguiente comando:

   gcloud container node-pools update POOL_NAME \
      --cluster=CLUSTER_NAME \
      --location=LOCATION \
      --system-config-from-file=SYSTEM_CONFIG_PATH

Reemplaza lo siguiente:

  • POOL_NAME: El nombre del grupo de nodos que quieres actualizar
  • CLUSTER_NAME: El nombre del clúster que deseas actualizar
  • LOCATION: la zona o región de procesamiento del clúster.
  • SYSTEM_CONFIG_PATH: La ruta de acceso al archivo que contiene tus configuraciones de kubelet y sysctl

Este cambio requiere que se vuelvan a crear los nodos, lo que puede causar interrupciones en tus cargas de trabajo en ejecución. Para obtener más información sobre este cambio específico, busca la fila correspondiente en la tabla de cambios manuales que vuelven a crear los nodos con una estrategia de actualización de nodos sin respetar las políticas de mantenimiento.

Para obtener más información sobre las actualizaciones de nodos, consulta Planifica las interrupciones de las actualizaciones de nodos.

Edita una configuración del sistema de nodos

Para editar una configuración del sistema de nodos, puedes crear un grupo de nodos nuevo con la configuración que desees o actualizar la configuración del sistema de nodos de un grupo de nodos existente.

Edita mediante la creación de un grupo de nodos

Para editar una configuración del sistema de nodos creando un grupo de nodos, haz lo siguiente:

  1. Crea un archivo de configuración con la configuración que desees.
  2. Agrega la configuración a un grupo de nodos nuevo.
  3. Migra tus cargas de trabajo al grupo de nodos nuevo.
  4. Borra el grupo de nodos anterior.

Edita mediante la actualización de un grupo de nodos existente

Para editar la configuración del sistema de nodos de un grupo de nodos existente, sigue las instrucciones de la pestaña Actualizar grupo de nodos para agregar la configuración a un grupo de nodos. Cuando actualizas la configuración de un sistema de nodos y la nueva configuración anula la configuración del sistema existente del grupo de nodos, se deben volver a crear los nodos. Si omites algún parámetro durante una actualización, se configurará con los respectivos valores predeterminados.

Si quieres restablecer la configuración del sistema de nodos a la configuración predeterminada, actualiza el archivo de configuración con valores vacíos para los campos kubelet y sysctl, por ejemplo:

kubeletConfig: {}
linuxConfig:
  sysctl: {}

Borra una configuración del sistema de nodos

Para quitar una configuración del sistema de nodos, sigue estos pasos:

  1. Crea un grupo de nodos.
  2. Migra tus cargas de trabajo al grupo de nodos nuevo.
  3. Borra el grupo de nodos que tiene la configuración del sistema de nodos anterior.

Opciones de configuración de kubelet

En las tablas de esta sección, se describen las opciones de kubelet que puedes modificar.

Administración de CPU

En la siguiente tabla, se describen las opciones de administración de CPU para kubelet.

Parámetros de configuración de kubelet Restricciones Parámetro de configuración predeterminado Descripción
cpuCFSQuota Debe ser true o false. true Este parámetro de configuración aplica el límite de CPU del Pod. Establecer este valor en false significa que se ignoran los límites de CPU para Pods.

Omitir los límites de CPU puede ser beneficioso en ciertas situaciones en las que los Pods son sensibles a los límites de CPU. El riesgo de inhabilitar cpuCFSQuota es que un Pod fuera de control puede consumir más recursos de CPU de lo previsto.
cpuCFSQuotaPeriod Debe ser una duración. "100ms" Mediante este parámetro de configuración, se establece el valor del período de la cuota de CFS de CPU, cpu.cfs_period_us, que especifica el período de con qué frecuencia se debe reasignar el acceso de un cgroup a los recursos de CPU. Esta opción te permite ajustar el comportamiento de limitación de CPU.

Administración y expulsión de la memoria

En la siguiente tabla, se describen las opciones modificables para la administración y el descarte de memoria. En esta sección, también se incluye una tabla independiente que describe las opciones modificables para la marca evictionSoft.

Parámetros de configuración de kubelet Restricciones Parámetro de configuración predeterminado Descripción
evictionSoft Es un mapa de nombres de indicadores. Para conocer las restricciones de valores, consulta la siguiente tabla. none Este parámetro de configuración asigna nombres de indicadores a una cantidad o un porcentaje que define los umbrales de descarte flexible. Un umbral de desalojo temporal debe tener un período de gracia. El kubelet no expulsa los Pods hasta que se supera el período de gracia.
evictionSoftGracePeriod Es un mapa de nombres de indicadores. Para cada nombre de indicador, el valor debe ser una duración positiva inferior a 5m. Las unidades de tiempo válidas son ns, us (o µs), ms, s o m. none Este parámetro de configuración asigna nombres de indicadores a duraciones que definen períodos de gracia para los umbrales de expulsión flexible. Cada umbral de desalojo temporal debe tener un período de gracia correspondiente.
evictionMinimumReclaim Es un mapa de nombres de indicadores. Para cada nombre de indicador, el valor debe ser un porcentaje positivo inferior a 10%. none Este parámetro de configuración asigna nombres de indicadores a porcentajes que definen la cantidad mínima de un recurso determinado que kubelet recupera cuando realiza un desalojo de Pod.
evictionMaxPodGracePeriodSeconds El valor debe ser un número entero entre 0 y 300. 0 Este parámetro de configuración define, en segundos, el período de gracia máximo para la finalización del Pod durante el desalojo.

En la siguiente tabla, se muestran las opciones modificables para la marca evictionSoft. Las mismas opciones también se aplican a las marcas evictionSoftGracePeriod y evictionMinimumReclaim con diferentes restricciones.

kubelet de configuración Restricciones Parámetro de configuración predeterminado Descripción
memoryAvailable El valor debe ser una cantidad mayor que 100Mi y menor que 50% de la memoria del nodo. none Este parámetro de configuración representa la cantidad de memoria disponible antes del descarte temporal. Define la cantidad del indicador memory.available en el kubelet .
nodefsAvailable El valor debe estar entre 10% y 50%. none Este parámetro de configuración representa el nodo disponible antes del desalojo temporal. Define la cantidad del indicador nodefs.available en el kubelet .
nodefsInodesFree El valor debe estar entre 5% y 50%. none Este parámetro de configuración representa los nodos inodefs que están libres antes del desalojo temporal. Define la cantidad del indicador nodefs.inodesFree en el kubelet .
imagefsAvailable El valor debe estar entre 15% y 50%. none Este parámetro de configuración representa el imagefs disponible antes del desalojo temporal. Define la cantidad de señal de imagefs.available en el kubelet .
imagefsInodesFree El valor debe estar entre 5% y 50%. none Este parámetro de configuración representa los nodos i de imagefs que están libres antes del desalojo temporal. Define la cantidad del indicador imagefs.inodesFree en el kubelet.
pidAvailable El valor debe estar entre 10% y 50%. none Este parámetro de configuración representa los PIDs disponibles antes del desalojo temporal. Define la cantidad del indicador pid.available en el kubelet.
singleProcessOOMKill El valor debe ser true o false. true para nodos de cgroupv1 y false para nodos de cgroupv2 Este parámetro de configuración establece si los procesos del contenedor se cierran de forma individual o como grupo por falta de memoria.

Disponible en las versiones 1.32.4-gke.1132000, 1.33.0-gke.1748000 o posteriores de GKE.

Administración de PID

En la siguiente tabla, se describen las opciones modificables para la administración de PIDs.

kubelet de configuración Restricciones Parámetro de configuración predeterminado Descripción
podPidsLimit El valor debe estar entre 1024 y 4194304. none Esta configuración establece la cantidad máxima de ID de procesos (PID) que puede usar cada Pod.

Logging

En la siguiente tabla, se describen las opciones de registro que se pueden modificar.

Parámetros de configuración de kubelet Restricciones Parámetro de configuración predeterminado Descripción
containerLogMaxSize El valor debe ser un número positivo y un sufijo de unidad entre 10Mi y 500Mi, inclusive. 10Mi Este parámetro de configuración controla el parámetro de configuración containerLogMaxSize de la política de rotación del registro de contenedores, que te permite configurar el tamaño máximo de cada archivo de registro. El valor predeterminado es 10Mi. Las unidades válidas son Ki, Mi y Gi.
containerLogMaxFiles El valor debe ser un número entero entre 2 y 10, incluidos ambos. 5 Este parámetro de configuración controla el parámetro de configuración containerLogMaxFiles de la política de rotación de archivos de registro de contenedores, que te permite configurar la cantidad máxima de archivos permitidos para cada contenedor, respectivamente. El valor predeterminado es 5. El tamaño total del registro (container_log_max_size*container_log_max_files) por contenedor no puede exceder el 1% del almacenamiento total del nodo.

Recolección de elementos no utilizados de imágenes

En la siguiente tabla, se describen las opciones modificables para la recolección de elementos no utilizados de imágenes.

Parámetros de configuración de kubelet Restricciones Parámetro de configuración predeterminado Descripción
imageGCHighThresholdPercent El valor debe ser un número entero entre 10 y 85 (ambos incluidos) y mayor que imageGcLowThresholdPercent. 85 Este parámetro de configuración define el porcentaje de uso del disco por encima del cual se ejecuta la recolección de elementos no utilizados de imágenes. Representa el uso de disco más alto para el que se debe realizar la recolección de elementos no utilizados. El porcentaje se calcula dividiendo el valor de este campo por 100.
imageGCLowThresholdPercent El valor debe ser un número entero entre 10 y 85 (ambos incluidos) y menor que imageGcHighThresholdPercent. 80 Este parámetro de configuración define el porcentaje de uso del disco antes del cual nunca se ejecuta la recolección de elementos no utilizados de imágenes. Representa el uso de disco más bajo al que se puede realizar la recolección de elementos no utilizados. El porcentaje se calcula dividiendo el valor de este campo por 100.
imageMinimumGcAge El valor debe ser una duración que no supere 2m. Las unidades de tiempo válidas son ns, us (o µs), ms, s, m o h. 2m Este parámetro de configuración define la antigüedad mínima de una imagen sin usar antes de que se recopile la basura.
imageMaximumGcAge El valor debe ser una duración de tiempo. 0s

Este parámetro de configuración define la antigüedad máxima que puede tener una imagen sin usar antes de que se recopile la basura. El valor predeterminado de este campo es 0s, lo que lo inhabilita. Por lo tanto, las imágenes no se recopilarán como elementos no utilizados. Cuando se especifica este valor, debe ser mayor que el valor del campo imageMinimumGcAge.

Disponible en las versiones 1.30.7-gke.1076000, 1.31.3-gke.1023000 o posteriores de GKE.

Extracción de imágenes

En la siguiente tabla, se describen las opciones modificables para la extracción de imágenes.

Parámetros de configuración de kubelet Restricciones Parámetro de configuración predeterminado Descripción
maxParallelImagePulls El valor debe ser un número entero entre 2 y 5, inclusive. 2 o 3 según el tipo de disco. Este parámetro de configuración define la cantidad máxima de extracciones de imágenes en paralelo. El valor predeterminado lo decide el tipo de disco de arranque.

Operaciones inseguras y seguridad

En la siguiente tabla, se describen las opciones modificables para configurar la seguridad y controlar las operaciones no seguras.

Parámetros de configuración de kubelet Restricciones Parámetro de configuración predeterminado Descripción
allowedUnsafeSysctls

Es una lista de nombres o grupos de sysctl. Los grupos de sysctl permitidos son los siguientes:

  • kernel.shm*
  • kernel.msg*
  • kernel.sem
  • fs.mqueue.*
  • net.*
none Este parámetro de configuración define una lista de entidades permitidas separada por comas de nombres o grupos de sysctl no seguros que se pueden establecer en los Pods.sysctl
insecureKubeletReadonlyPortEnabled El valor debe ser un valor booleano: true o false. true Este parámetro de configuración inhabilita el kubelet puerto de solo lectura 10255 no seguro en cada grupo de nodos nuevo de tu clúster. Si estableces este parámetro de configuración en este archivo, no puedes usar un cliente de API de GKE para cambiar el parámetro de configuración a nivel del clúster.

Administradores de recursos

Kubernetes ofrece un conjunto de administradores de recursos. Puedes configurar estos administradores de recursos para coordinar y optimizar la alineación de los recursos de los nodos para los Pods que están configurados con requisitos específicos para los recursos de CPU, dispositivos y memoria (páginas grandes).

En la siguiente tabla, se describen las opciones que se pueden modificar para los administradores de recursos.

Parámetros de configuración de kubelet Restricciones Parámetro de configuración predeterminado Descripción
cpuManagerPolicy El valor debe ser none o static. none Este parámetro de configuración controla la política del administrador de CPU de kubelet. El valor predeterminado es none, que es el esquema de afinidad de CPU predeterminado, que no proporciona afinidad más allá de lo que el programador de SO proporciona automáticamente.

Establecer este valor en static permite que a los Pods que se encuentran en la clase de QoS Guaranteed y tienen solicitudes de CPU de número entero se les asignen CPU exclusivas.
memoryManager.policy El valor debe ser None o Static. None

Este parámetro de configuración controla la política del administrador de memoria de kubelet. Con el valor predeterminado de None, Kubernetes actúa como si el Administrador de memoria no estuviera presente.

Si estableces este valor en Static, la política del Administrador de memoria envía sugerencias de topología que dependen del tipo de Pod. Para obtener más información, consulta la Política estática.

Este parámetro de configuración es compatible con los clústeres cuyo plano de control ejecuta la versión 1.32.3-gke.1785000 o posterior de GKE.

topologyManager

El valor debe ser uno de los parámetros de configuración admitidos para cada uno de los campos respectivos.

No puedes establecer el campo topologyManager cuando usas las instrucciones de Terraform para agregar la configuración a un grupo de nodos estándar.

  • policy: none
  • scope: container

Estos parámetros de configuración controlan la configuración de Topology Manager de kubelet con los subcampos policy y scope. El Administrador de topología coordina el conjunto de componentes responsables de las optimizaciones del rendimiento relacionadas con el aislamiento de la CPU, la memoria y la localidad del dispositivo.

Puedes establecer la política y la configuración del alcance de forma independiente. Para obtener más información sobre estos parámetros de configuración, consulta Alcances y políticas del administrador de topología.

Los siguientes recursos de GKE admiten este parámetro de configuración:

  • Clústeres con el plano de control que ejecuta la versión 1.32.3-gke.1785000 de GKE o una posterior En el caso de los clústeres con el plano de control y los nodos que ejecutan la versión 1.33.0-gke.1712000 o posterior, el Administrador de topología también recibe información sobre la topología de la GPU.
  • Nodos con los siguientes tipos de máquinas: A2, A3, A4, C3, C4, C4A, G2, G4, M3 y N4

Opciones de configuración de Sysctl

Para ajustar el rendimiento de tu sistema, puedes modificar los parámetros del kernel de Linux. En las tablas de esta sección, se describen los distintos parámetros del kernel que puedes configurar.

Parámetros del sistema de archivos (fs.*)

En la siguiente tabla, se describen los parámetros modificables del sistema de archivos de Linux. Estos parámetros de configuración controlan el comportamiento del sistema de archivos de Linux, como los límites de identificadores de archivos y la supervisión de eventos.

Parámetro Sysctl Restricciones Descripción
fs.aio-max-nr Debe estar entre [65536, 4194304]. Este parámetro de configuración define la cantidad máxima de solicitudes de E/S asíncronas en todo el sistema.
fs.file-max Debe ser un valor entre [104857, 67108864]. Este parámetro de configuración define la cantidad máxima de identificadores de archivos que puede asignar el kernel de Linux.
fs.inotify.max_user_instances Debe estar entre [8192 y 1048576]. Este parámetro de configuración define la cantidad máxima de instancias de inotify que puede crear un usuario.
fs.inotify.max_user_watches Debe estar entre [8192 y 1048576]. Este parámetro de configuración define la cantidad máxima de supervisores de inotify que un usuario puede crear.
fs.nr_open Debe estar entre [1048576, 2147483584]. Este parámetro de configuración define la cantidad máxima de descriptores de archivos que puede abrir un proceso.

Parámetros del kernel (kernel.*)

En la siguiente tabla, se describen los parámetros modificables del kernel de Linux. Estos parámetros de configuración establecen las funcionalidades principales del kernel, incluida la asignación de memoria compartida.

Parámetro de Sysctl Restricciones Descripción
kernel.shmmni Debe estar entre [4096 y 32768]. Este parámetro de configuración define la cantidad máxima de segmentos de memoria compartida en todo el sistema. Si no se establece este valor, se usará el valor predeterminado 4096.
kernel.shmmax Debe estar entre [0, 18446744073692774399]. Este parámetro de configuración define el tamaño máximo, en bytes, de un solo segmento de memoria compartida que permite el kernel. Este valor se ignora si es mayor que la cantidad real de RAM, lo que significa que se puede compartir toda la RAM disponible.
kernel.shmall Debe estar entre [0, 18446744073692774399]. Este parámetro de configuración define la cantidad total de páginas de memoria compartida que se pueden usar en el sistema al mismo tiempo. Una página tiene 4,096 bytes en la arquitectura AMD64 e Intel 64.
kernel.perf_event_paranoid Debe estar entre [-1, 3]. Este parámetro de configuración controla el uso del sistema de eventos de rendimiento por parte de usuarios sin privilegios y sin CAP_PERFMON. El valor predeterminado es 2 en el kernel.
kernel.sched_rt_runtime_us Debe estar entre [-1, 1000000]. Este parámetro de configuración define un límite global sobre la cantidad de tiempo que puede usar la programación en tiempo real.
kernel.softlockup_panic Opcional (booleano). Este parámetro de configuración controla si el kernel entra en pánico cuando se detecta un bloqueo temporal.
kernel.yama.ptrace_scope Debe estar entre [0, 3].

Este parámetro de configuración define el alcance y las restricciones de la llamada al sistema ptrace(), lo que afecta la depuración y el registro del proceso. Entre los valores admitidos, se incluyen los siguientes:

  • 0: Permisos clásicos de ptrace.
  • 1: ptrace restringido, que es el valor predeterminado en muchas distribuciones. Solo procesos secundarios o CAP_SYS_PTRACE.
  • 2: Ptrace solo para administradores. Solo procesos con CAP_SYS_PTRACE.
  • 3: No hay ptrace. No se permiten las llamadas a ptrace.
kernel.kptr_restrict Debe estar entre [0, 2]. Este parámetro de configuración indica si se aplican restricciones a la exposición de direcciones del kernel a través de /proc y otras interfaces.
kernel.dmesg_restrict Opcional (booleano). Este parámetro de configuración indica si se impide que los usuarios sin privilegios usen dmesg(8) para ver los mensajes del búfer de registro del kernel.
kernel.sysrq Debe estar entre [0, 511].

Este parámetro de configuración controla las funciones que se pueden invocar a través de la tecla SysRq. Entre los valores posibles, se incluyen los siguientes:

  • 0: Inhabilita sysrq por completo.
  • 1: Habilita todas las funciones de SysRq.
  • >1: Es una máscara de bits de las funciones de sysrq permitidas. Para obtener más información, consulta Linux Magic System Request Key Hacks.

Parámetros de red (net.*)

En la siguiente tabla, se describen los parámetros de redes que se pueden modificar. Estos parámetros de configuración ajustan el rendimiento y el comportamiento de la pila de redes, desde los búferes de socket hasta el seguimiento de conexiones.

Parámetro de Sysctl Restricciones Descripción
net.core.busy_poll Cualquier número entero positivo, inferior a 2147483647. Este parámetro de configuración define el tiempo de espera de sondeo ocupado de baja latencia para sondeo y selección. Representa el tiempo aproximado en µs para el bucle de espera activa de eventos.
net.core.busy_read Cualquier número entero positivo, inferior a 2147483647. Este parámetro de configuración define el tiempo de espera de la sondeo ocupado de baja latencia para las lecturas de sockets. Representa el tiempo aproximado en µs de espera en bucle ocupado para los paquetes en la cola del dispositivo.
net.core.netdev_max_backlog Cualquier número entero positivo inferior a 2147483647. Este parámetro de configuración define la cantidad máxima de paquetes en cola del lado de INPUT cuando la interfaz recibe paquetes más rápido de lo que el kernel puede procesarlos.
net.core.rmem_default Cualquier número entero positivo, inferior a 2147483647. Este parámetro de configuración define el tamaño predeterminado del búfer de socket de recepción, en bytes.
net.core.rmem_max Cualquier número entero positivo, inferior a 2147483647. Este parámetro de configuración define el tamaño máximo del búfer del socket de recepción, en bytes.
net.core.wmem_default Cualquier número entero positivo inferior a 2147483647. Este parámetro de configuración define el valor predeterminado, en bytes, del búfer de envío de sockets.
net.core.wmem_max Cualquier número entero positivo inferior a 2147483647. Este parámetro de configuración define el tamaño máximo del búfer de socket de envío, en bytes.
net.core.optmem_max Cualquier número entero positivo, inferior a 2147483647. Este parámetro de configuración define el tamaño máximo del búfer auxiliar permitido por socket.
net.core.somaxconn Debe estar entre [128, 2147483647]. Este parámetro de configuración define el límite de la acumulación de socket listen(), que se conoce en el espacio del usuario como SOMAXCONN. El valor predeterminado de este parámetro de configuración es 128.
net.ipv4.tcp_rmem {min, default, max} (cada uno > 0, memoria en bytes). Este parámetro de configuración define el tamaño mínimo, en bytes, del búfer de recepción que usan los sockets UDP en la moderación. El parámetro de configuración predeterminado es 1 página.
net.ipv4.tcp_wmem {min, default, max} (cada uno > 0, memoria en bytes). Este parámetro de configuración define el tamaño mínimo, en bytes, del búfer de envío que usan los sockets de UDP con moderación. El parámetro de configuración predeterminado es 1 página.
net.ipv4.tcp_tw_reuse Debe ser un valor entre {0, 1}. Este parámetro de configuración define si se permite la reutilización de sockets en el estado TIME_WAIT para las conexiones nuevas cuando es seguro desde el punto de vista del protocolo. El valor predeterminado es 0.
net.ipv4.tcp_max_orphans Debe ser un valor entre [16384 y 262144]. Este parámetro de configuración define la cantidad máxima de sockets TCP que no están asociados a ningún identificador de archivo del usuario.
net.ipv4.tcp_max_tw_buckets Debe estar entre [4096, 2147483647]. Este parámetro de configuración define la cantidad máxima de sockets en espera que el sistema puede mantener de forma simultánea. Si se supera este número, el socket de espera se destruye de inmediato y se imprime una advertencia.
net.ipv4.tcp_syn_retries Debe estar entre [1, 127]. Este parámetro de configuración define la cantidad de veces que se retransmite el SYN inicial para un intento de conexión TCP activa.
net.ipv4.tcp_ecn Debe estar entre [0, 2]. Este parámetro de configuración controla el uso de la Notificación de congestión explícita (ECN) por parte del protocolo TCP. ECN se usa solo cuando ambos extremos de la conexión TCP indican que la admiten.
net.ipv4.tcp_mtu_probing Debe estar entre [0, 2].

Este parámetro de configuración controla el descubrimiento de la MTU de la ruta de la capa de fragmentación de TCP. Los valores admitidos son los siguientes:

  • 0: Inhabilitado.
  • 1: Inhabilitado de forma predeterminada y habilitado cuando se detecta un agujero negro de ICMP.
  • 2: Siempre está habilitado. Usa el MSS inicial de tcp_base_mss.
net.ipv4.tcp_congestion_control Debe ser uno de los valores admitidos de la columna Description.

Este parámetro de configuración no es compatible cuando GKE Dataplane V2 está habilitado en el clúster.

Los siguientes valores admitidos dependen del tipo de imagen:

  • COS: reno, cubic, bbr, lp
  • Ubuntu: reno, cubic, bbr, lp, htcp, vegas, dctcp, bic, cdg, highspeed, hybla, illinois, nv, scalable, veno, westwood, yeah
net.ipv6.conf.all.disable_ipv6 Booleano. Cambiar este valor es lo mismo que cambiar el parámetro de configuración conf/default/disable_ipv6 y todos los parámetros de configuración disable_ipv6 por interfaz al mismo valor.
net.ipv6.conf.default.disable_ipv6 Booleano. Este parámetro de configuración inhabilita el funcionamiento de IPv6.
net.netfilter.nf_conntrack_acct Debe ser un valor entre {0, 1}. Este parámetro de configuración habilita la contabilización del flujo de seguimiento de conexiones. El valor predeterminado es 0, lo que significa que el parámetro de configuración está inhabilitado. Disponible en las versiones 1.32.0-gke.1448000 y posteriores de GKE.
net.netfilter.nf_conntrack_max Debe estar entre [65536, 4194304]. Este parámetro de configuración define el tamaño de la tabla de seguimiento de conexiones. Si se alcanza el valor máximo, la nueva conexión fallará. Disponible en las versiones 1.32.0-gke.1448000 y posteriores de GKE.
net.netfilter.nf_conntrack_buckets Debe estar entre [65536, 524288].

Este parámetro de configuración define el tamaño de la tabla hash. El parámetro de configuración recomendado es el resultado de la siguiente fórmula: nf_conntrack_max = nf_conntrack_buckets * 4.

Disponible en las versiones 1.32.0-gke.1448000 y posteriores de GKE.

net.netfilter.nf_conntrack_tcp_timeout_close_wait Debe estar entre [60 y 3, 600].

Este parámetro de configuración define el período, en segundos, durante el cual las conexiones TCP pueden permanecer en el estado CLOSE_WAIT. El valor predeterminado es 3600.

Disponible en las versiones 1.32.0-gke.1448000 y posteriores de GKE.

net.netfilter.nf_conntrack_tcp_timeout_established Debe estar entre [600, 86400].

Este parámetro de configuración define la duración, en segundos, de las conexiones inactivas antes de que se borren automáticamente de la tabla de seguimiento de conexiones.

Disponible en las versiones 1.32.0-gke.1448000 y posteriores de GKE.

net.netfilter.nf_conntrack_tcp_timeout_time_wait Debe estar entre [1 y 600].

Este parámetro de configuración define el período, en segundos, durante el cual las conexiones TCP pueden permanecer en el estado TIME_WAIT. El valor predeterminado es 120.

Disponible en las versiones 1.32.0-gke.1448000 y posteriores de GKE.

Parámetros de memoria virtual (vm.*)

En la siguiente tabla, se describen los parámetros modificables del subsistema de memoria virtual. Estos parámetros de configuración administran el subsistema de memoria virtual, que controla cómo el kernel maneja la memoria, el intercambio y el almacenamiento en caché del disco.

Parámetro sysctl Restricciones Descripción
vm.max_map_count Debe estar entre [65536, 2147483647]. Este archivo define la cantidad máxima de áreas de asignación de memoria que puede tener un proceso.
vm.dirty_background_ratio Debe ser un valor entre [1 y 100]. Este parámetro de configuración define el porcentaje de memoria del sistema que se puede llenar con páginas sucias antes de que los subprocesos de vaciado del kernel en segundo plano comiencen a escribir en el disco. El valor debe ser inferior al valor del campo vm.dirty_ratio.
vm.dirty_background_bytes Debe estar entre [0, 68719476736].

Este parámetro de configuración define la cantidad de memoria sucia en la que los subprocesos de vaciado del kernel en segundo plano comienzan la escritura diferida.

Ten en cuenta que vm.dirty_background_bytes es la contraparte de vm.dirty_background_ratio. Solo se puede especificar uno de estos parámetros de configuración.

vm.dirty_expire_centisecs Debe estar entre [0 y 6000]. Este parámetro de configuración define la antigüedad máxima, en centésimas de segundo, que los datos no guardados pueden permanecer en la memoria antes de que los subprocesos de vaciado del kernel los escriban en el disco.
vm.dirty_ratio Debe ser un valor entre [1 y 100]. Este parámetro de configuración define el porcentaje de memoria del sistema que se puede llenar con páginas sucias antes de que los procesos que realizan escrituras se vean obligados a bloquearse y escribir datos sucios de forma síncrona.
vm.dirty_bytes Debe estar entre [0, 68719476736].

Este parámetro de configuración define la cantidad de memoria sucia en la que un proceso que genera escrituras en el disco comienza a escribir en el disco por sí mismo. El valor mínimo permitido para vm.dirty_bytes es de dos páginas en bytes. Se ignorará cualquier valor inferior a este límite y se conservará la configuración anterior.

Ten en cuenta que vm.dirty_bytes es la contraparte de vm.dirty_ratio. Solo se puede especificar uno de estos parámetros de configuración.

vm.dirty_writeback_centisecs Debe estar entre [0 y 1, 000]. Este parámetro de configuración define el intervalo, en centésimas de segundo, en el que los subprocesos de vaciado del kernel se activan para escribir datos antiguos no guardados en el disco.
vm.overcommit_memory Debe ser un valor entre {0, 1, 2}.

Este parámetro de configuración determina la estrategia del kernel para controlar el exceso de asignación de memoria. Los valores son los siguientes:

  • 0: Rechaza las asignaciones grandes
  • 1: Permitir siempre
  • 2: Evita la confirmación más allá del intercambio y la proporción de RAM
vm.overcommit_ratio Debe estar entre [0 y 100]. Este parámetro de configuración define el porcentaje de RAM física que se permite para la sobreasignación cuando el valor del campo vm.overcommit_memory se establece en 2.
vm.vfs_cache_pressure Debe estar entre [0 y 100]. Este parámetro de configuración ajusta la preferencia del kernel para recuperar la memoria que se usa para las memorias caché de dentry (directorio) y de inode.
vm.swappiness Debe estar entre [0 y 200]. Este parámetro de configuración controla la tendencia del kernel a mover procesos de la memoria física al disco de intercambio. El valor predeterminado es 60.
vm.watermark_scale_factor Debe estar entre [10 y 3, 000]. Este parámetro de configuración controla la agresividad de kswapd. Define la memoria restante antes de que se active kswapd y la memoria que se debe liberar antes de que se suspenda. El valor predeterminado es 10.
vm.min_free_kbytes Debe ser un valor entre [67584 y 1048576]. Este parámetro de configuración define la memoria libre mínima antes de que se produzca un error de OOM. El valor predeterminado es 67584.

Para obtener más información sobre los valores admitidos para cada marca sysctl, consulta la documentación de gcloud CLI sobre --system-config-from-file.

Los diferentes espacios de nombres de Linux pueden tener valores únicos para una marca sysctl determinada, mientras que otros pueden ser globales para todo el nodo. La actualización de las opciones de sysctl con una configuración del sistema de nodos ayuda a garantizar que sysctl se aplique de forma global en el nodo y en cada espacio de nombres, de modo que cada Pod tenga valores de sysctl idénticos en cada espacio de nombres de Linux.

Opciones de configuración del modo cgroup de Linux

El entorno de ejecución del contenedor y kubelet usan cgroups del kernel de Linux para la administración de recursos, como limitar la cantidad de CPU o memoria a la que puede acceder cada contenedor en un Pod. Hay dos versiones del subsistema cgroup en el kernel: cgroupv1 y cgroupv2. La compatibilidad de Kubernetes con cgroupv2 se ingresó como alfa en la versión 1.18 de Kubernetes, Beta en 1.22 y en fase de disponibilidad general en 1.25. Para obtener más información, consulta la documentación de cgroups v2 de Kubernetes.

La configuración del sistema de nodos te permite personalizar la configuración de cgroup de tus grupos de nodos. Puedes usar cgroupv1 o cgroupv2. GKE usa cgroupv2 para los grupos de nodos Standard nuevos que ejecutan la versión 1.26 y posteriores, y cgroupv1 para los grupos de nodos que ejecutan versiones anteriores a la 1.26. En el caso de los grupos de nodos que se crearon con el aprovisionamiento automático de nodos, la configuración de cgroup depende de la versión inicial del clúster, no de la versión del grupo de nodos. cgroupv1 no es compatible con máquinas Arm.

Puedes usar la configuración del sistema de nodos a fin de cambiar la configuración para que un grupo de nodos use cgroupv1 o cgroupv2 de manera explícita. La actualización de un grupo de nodos existente que usa cgroupv1 a la versión 1.26 no cambia el parámetro de configuración a cgroupv2. Los grupos de nodos existentes que ejecutan una versión anterior a la 1.26 y que no incluyen una configuración de cgroup personalizada seguirán usando cgroupv1. Para cambiar el parámetro de configuración, debes especificar de forma explícita cgroupv2 para el grupo de nodos existente.

Por ejemplo, para configurar tu grupo de nodos a fin de usar cgroupv2, usa un archivo de configuración del sistema de nodos, como el siguiente:

linuxConfig:
  cgroupMode: 'CGROUP_MODE_V2'

Las opciones de cgroupMode compatibles son las siguientes:

  • CGROUP_MODE_V1: Usa cgroupv1 en el grupo de nodos.
  • CGROUP_MODE_V2: Usa cgroupv2 en el grupo de nodos.
  • CGROUP_MODE_UNSPECIFIED: Usa la configuración predeterminada de cgroup de GKE.

Para usar cgroupv2, se aplican los siguientes requisitos y limitaciones:

  • Para un grupo de nodos que ejecuta una versión anterior a la 1.26, debes usar la versión de gcloud CLI 408.0.0 o posterior. Como alternativa, usa gcloud beta con la versión 395.0.0 o posterior.
  • Tu clúster y los grupos de nodos deben ejecutar la versión 1.24.2-gke.300 o posterior de GKE.
  • Debes usar la imagen de nodo de Container-Optimized OS con containerd o Ubuntu con containerd.
  • Si alguna de tus cargas de trabajo depende de la lectura del sistema de archivos de cgroup (/sys/fs/cgroup/...), asegúrate de que sean compatibles con la API de cgroupv2.
  • Si usas herramientas de supervisión o de terceros, asegúrate de que sean compatibles con cgroupv2.
  • Si usas cargas de trabajo de Java (JDK), te recomendamos que uses versiones que admitan por completo cgroupv2, lo que incluye JDK 8u372, JDK 11.0.16 o posterior, o JDK 15 o una versión posterior.

Verifica la configuración de cgroup

Cuando agregas una configuración del sistema de nodos, GKE debe volver a crear los nodos para implementar los cambios. Después de agregar la configuración a un grupo de nodos y volver a crear los nodos, puedes verificar la configuración nueva.

Puedes verificar la configuración de cgroup para los nodos de un grupo de nodos con gcloud CLI o la herramienta de línea de comandos de kubectl:

gcloud CLI

Verifica la configuración de cgroup para un grupo de nodos:

gcloud container node-pools describe POOL_NAME \
  --format='value(Config.effectiveCgroupMode)'

Reemplaza POOL_NAME por el nombre de tu grupo de nodos.

El posible resultado es uno de los siguientes:

  • EFFECTIVE_CGROUP_MODE_V1: Los nodos usan cgroupv1
  • EFFECTIVE_CGROUP_MODE_V2: Los nodos usan cgroupv2

El resultado solo muestra la nueva configuración del cgroup después de que se vuelven a crear los nodos en el grupo de nodos. El resultado está vacío para los grupos de nodos de Windows Server, que no admiten cgroup.

kubectl

Para usar kubectl y verificar la configuración de cgroup para nodos en este grupo de nodos, selecciona un nodo y conéctate a él siguiendo estas instrucciones:

  1. Crea una shell interactiva con cualquier nodo del grupo de nodos. En el comando, reemplaza mynode por el nombre de cualquier nodo en el grupo de nodos.
  2. Identifica la versión de cgroup en nodos de Linux.

Opciones de configuración de páginas enormes de Linux

Puedes usar un archivo de configuración del sistema de nodos para preasignar hugepages. Kubernetes admite páginas grandes preasignadas como un tipo de recurso, similar a la CPU o la memoria.

Para usar páginas enormes, se aplican las siguientes limitaciones y requisitos:

  • Para garantizar que el nodo no esté ocupado por completo por hugepages, el tamaño general de las hugepages asignadas no puede exceder ninguno de los siguientes valores:
    • En máquinas con menos de 30 GB de memoria: El 60% de la memoria total Por ejemplo, en una máquina e2-standard-2 con 8 GB de memoria, no puedes asignar más de 4.8 GB para páginas enormes.
    • En máquinas con más de 30 GB de memoria: El 80% de la memoria total. Por ejemplo, en las máquinas c4a-standard-8 con 32 GB de memoria, las páginas enormes no pueden superar los 25.6 GB.
  • Las páginas enormes de 1 GB solo están disponibles en los tipos de máquinas A3, C2D, C3, C3D, C4, C4A, C4D, CT5E, CT5LP, CT6E, H3, M2, M3, M4 o Z3.

En la siguiente tabla, se describen los parámetros de configuración modificables para las páginas grandes de Linux.

Parámetro de configuración Restricciones Valor predeterminado Descripción
hugepage_size2m Es un recuento de números enteros. Sujeto a los límites de asignación de memoria descritos anteriormente. 0 Este parámetro de configuración preasigna una cantidad específica de páginas enormes de 2 MB.
hugepage_size1g Es un recuento de números enteros. Sujeto a las limitaciones de memoria y tipo de máquina descritas anteriormente. 0 Este parámetro de configuración preasigna una cantidad específica de páginas enormes de 1 GB.

Páginas enormes transparentes (THP)

Puedes usar un archivo de configuración del sistema de nodos para habilitar la compatibilidad con Transparent HugePage del kernel de Linux. Con THP, el kernel asigna automáticamente páginas enormes a los procesos sin necesidad de una asignación previa manual.

En la siguiente tabla, se describen los parámetros modificables para el THP.

Parámetro de configuración Valores admitidos Valor predeterminado Descripción
transparentHugepageEnabled
  • TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS: Las páginas enormes transparentes están habilitadas en todo el sistema.
  • TRANSPARENT_HUGEPAGE_ENABLED_MADVISE: Las páginas enormes transparentes están habilitadas dentro de las regiones de MADV_HUGEPAGE. Este parámetro de configuración es el predeterminado del kernel.
  • TRANSPARENT_HUGEPAGE_ENABLED_NEVER: Las páginas enormes transparentes están inhabilitadas.
  • TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED: Es el valor predeterminado. GKE no modifica la configuración del kernel.
UNSPECIFIED Este parámetro de configuración controla si se habilita THP para la memoria anónima.
transparentHugepageDefrag
  • TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS: Una aplicación que solicita THP se detiene en caso de falla de asignación y reclama directamente páginas y compacta la memoria en un intento por asignar una THP de inmediato.
  • TRANSPARENT_HUGEPAGE_DEFRAG_DEFER: Una aplicación activa kswapd en segundo plano para recuperar páginas y activa kcompactd para compactar la memoria, de modo que THP esté disponible en el futuro cercano. Luego, khugepaged es responsable de instalar las páginas de THP.
  • TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE: Una aplicación ingresa en la recuperación y compactación directas como de costumbre, pero solo para las regiones que usaron madvise(MADV_HUGEPAGE). En todas las demás regiones, kswapd se activa en segundo plano para recuperar páginas, y kcompactd se activa para compactar la memoria, de modo que THP esté disponible en el futuro cercano.
  • TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE: Una aplicación ingresa en la recuperación y compactación directas como de costumbre, pero solo para las regiones que usaron madvise(MADV_HUGEPAGE). En todas las demás regiones, kswapd se activa en segundo plano para recuperar páginas, y kcompactd se activa para compactar la memoria, de modo que THP esté disponible en el futuro cercano.
  • TRANSPARENT_HUGEPAGE_DEFRAG_NEVER: Una aplicación nunca ingresa en la recuperación o compactación directa.
  • TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED: Es el valor predeterminado. GKE no modifica la configuración del kernel.
UNSPECIFIED Este parámetro de configuración define la configuración de desfragmentación para THP.

THP está disponible en la versión 1.33.2-gke.4655000 de GKE o posterior. También está habilitado de forma predeterminada en los grupos de nodo TPU nuevos en la versión 1.33.2-gke.4655000 de GKE o posterior. THP no se habilita cuando actualizas grupos de nodos existentes a una versión compatible o posterior.

¿Qué sigue?