Usa el aprovisionamiento automático de nodos


En esta página, se explica cómo usar el aprovisionamiento automático de nodos en clústeres estándar de Google Kubernetes Engine (GKE).

Con los clústeres de Autopilot, no tienes que preocuparte por aprovisionar nodos o administrar los grupos de nodos, ya que los grupos de nodos se aprovisionan automáticamente mediante el aprovisionamiento automático de nodos, y se escalan de forma automática para cumplir con los requisitos de tus cargas de trabajo.

Descripción general

El aprovisionamiento automático de nodos administra de forma automática un conjunto de grupos de nodos en nombre del usuario. Sin el aprovisionamiento automático de nodos, GKE considera iniciar nuevos nodos solo a partir del conjunto de grupos de nodos creados por el usuario. Con el aprovisionamiento automático de nodos, se pueden crear y borrar grupos de nodos nuevos de forma automática.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

Establece la configuración de gcloud predeterminada mediante uno de los siguientes métodos:

  • Usa gcloud init si deseas ver una explicación sobre cómo configurar parámetros predeterminados.
  • Usa gcloud config para establecer el ID, la zona y la región del proyecto de manera individual.

Usa gcloud init

Si recibes el error One of [--zone, --region] must be supplied: Please specify location, completa esta sección.

  1. Ejecuta gcloud init y sigue las instrucciones:

    gcloud init

    Si usas SSH en un servidor remoto, usa la marca --console-only para evitar que el comando abra un navegador:

    gcloud init --console-only
  2. Sigue las instrucciones a fin de autorizar a gcloud para que use tu cuenta de Google Cloud.
  3. Crea una configuración nueva o selecciona una existente.
  4. Elige un proyecto de Google Cloud.
  5. Elige una zona predeterminada de Compute Engine para clústeres zonales o una región para clústeres regionales o de Autopilot.

Usa gcloud config

  • Establece tu ID del proyecto predeterminado:
    gcloud config set project PROJECT_ID
  • Si trabajas con clústeres zonales, establece tu zona de procesamiento predeterminada:
    gcloud config set compute/zone COMPUTE_ZONE
  • Si trabajas con clústeres de Autopilot o regionales, configura tu región de procesamiento predeterminada:
    gcloud config set compute/region COMPUTE_REGION
  • Actualiza gcloud a la versión más reciente:
    gcloud components update

Requisitos

El aprovisionamiento automático de nodos está disponible en las siguientes versiones de GKE:

  • Versión 1.11.2-gke.25 y posteriores para clústeres zonales
  • Versión 1.12.x y posteriores para clústeres regionales

Características no compatibles

Las siguientes funciones no son compatibles con el aprovisionamiento automático de nodos. Esto significa que no se aprovisionarán grupos de nodos con estas funciones, sino que se les realizará un ajuste de escala automático a los grupos de nodos existentes:

Operación

El aprovisionamiento automático de nodos es un mecanismo del escalador automático del clúster, que escala por grupos de nodos. Con el aprovisionamiento automático de nodos habilitado, el escalador automático del clúster puede extender grupos de nodos de forma automática en función de las especificaciones de Pods no programables.

El aprovisionamiento automático de nodos crea grupos de nodos de acuerdo con esta información:

Límites de recursos

El aprovisionamiento automático de nodos y el escalador automático del clúster tienen límites en los dos niveles siguientes:

  • Nivel de grupo de nodos
  • Nivel de clúster

Límites para los grupos de nodos

Los grupos de nodos que crea el aprovisionamiento automático de nodos tienen un límite de 1,000 nodos.

Límites de los clústeres

Los límites que definas se aplicarán en función de los recursos totales de CPU y memoria usados en tu clúster, no solo en los grupos de aprovisionamiento automático.

El escalador automático de clúster no crea nodos nuevos si al hacerlo se excede uno de los límites definidos. Si ya se excedieron los límites, los nodos no se borran de forma automática.

Separación de las cargas de trabajo

Si los Pods pendientes tienen tolerancias y afinidades de nodo, el aprovisionamiento automático de nodos puede aprovisionar nodos con etiquetas y taints que coincidan.

El aprovisionamiento automático de nodos podría crear grupos de nodos con etiquetas y taints si se cumplen las siguientes condiciones:

  • Un Pod pendiente requiere un nodo con una clave de etiqueta y un valor específicos.
  • El pod tiene una tolerancia para un taint con la misma clave.
  • La tolerancia es para el efecto NoSchedule, el efecto NoExecute o todos los efectos.

La especificación del pod puede expresar que requiere nodos con etiquetas específicas de dos maneras:

  • Mediante un campo nodeSelector.
  • Mediante un campo nodeAffinity con un operador In y exactamente un valor.

El ejemplo siguiente es un extracto de una especificación de pod que se interpreta como una solicitud de separación de carga de trabajo. En este ejemplo, el administrador del clúster eligió dedicated como la clave que se usará en el aislamiento de la carga de trabajo, y el equipo de la IU determinó que necesitan nodos dedicados para sus cargas de trabajo.

El pod tiene tolerancia para los nodos etiquetados con dedicated=ui-team y usa nodeAffinity en la selección de nodos:

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: dedicated
            operator: In
            values:
            - ui-team

Si este Pod existe, los nodos con el taint dedicated=ui-team:NoSchedule y la etiqueta dedicated=ui-team se tienen en cuenta para la creación en el aprovisionamiento automático de nodos.

En el siguiente ejemplo, se usa nodeSelector y el efecto es el mismo:

spec:
  tolerations:
  - key: dedicated
    operator: Equal
    value: ui-team
    effect: NoSchedule
  nodeSelector:
    dedicated: ui-team

Borra grupos de nodos aprovisionados de forma automática

Cuando no hay nodos en un grupo de nodos aprovisionados de forma automática, GKE borra el grupo de nodos. Los grupos de nodos que no están marcados como aprovisionados de forma automática no se borran.

Tipos de máquina admitidos

A partir de GKE 1.19.7-gke.800, el aprovisionamiento automático de nodos considera todos los tipos de máquinas cuando se crean grupos de nodos, con la excepción de que para las máquinas N1, el aprovisionamiento automático de nodos solo considera las máquinas con hasta 64 CPU virtuales. De forma predeterminada, se usa la familia de máquinas E2, a menos que ocurra lo siguiente:

  • La carga de trabajo solicita una función que no está disponible en la familia de máquinas E2. Por ejemplo, si la carga de trabajo solicita una GPU, se usará la familia de máquinas N1 para el grupo de nodos nuevo.
  • La carga de trabajo utiliza la etiqueta de familia de máquinas. Esto puede anularse si no se puede completar la solicitud de carga de trabajo (según el punto anterior). Para obtener más información, consulta Usa una familia de máquinas personalizadas.

En las versiones anteriores a GKE 1.19.7-gke.800, el aprovisionamiento automático de nodos solo consideraba los tipos de máquinas N1 con hasta 64 CPU virtuales.

Imágenes de nodo compatibles

El aprovisionamiento automático de nodos crea grupos de nodos mediante una de las siguientes imágenes de nodo:

  • Container-Optimized OS (cos o cos_containerd).
  • Ubuntu (ubuntu o ubuntu_containerd).

Compatibilidad con VM interrumpibles

El aprovisionamiento automático de nodos permite crear grupos de nodos basados en instancias de máquina virtual (VM) interrumpible.

La creación de grupos de nodos basados en VM interrumpibles solo se considera si existen pods no programables con tolerancia para taint cloud.google.com/gke-preemptible="true":NoSchedule.

Los nodos que se basan en VM interrumpibles y que se crean mediante grupos de nodos aprovisionados de forma automática tienen el taint aplicado.

Compatibilidad con pods que solicitan almacenamiento efímero

El aprovisionamiento automático de nodos permite crear grupos de nodos cuando los pods solicitan almacenamiento efímero. El tamaño del disco de arranque aprovisionado en los grupos de nodos es constante para todos los nuevos grupos de nodos aprovisionados automáticamente. Este tamaño del disco de arranque se puede personalizar y su valor predeterminado es de 100 GiB. El almacenamiento efímero respaldado por SSD locales no es compatible.

El aprovisionamiento automático de nodos aprovisionará un grupo de nodos solo si el almacenamiento efímero asignable de un nodo con un disco de arranque especificado es mayor o igual que la solicitud de almacenamiento efímero de un pod pendiente. Si la solicitud de almacenamiento efímero es superior a lo que se puede asignar, el aprovisionamiento automático de nodos no aprovisionará un grupo de nodos. Los tamaños de disco para los nodos no se configuran de forma dinámica según las solicitudes de almacenamiento efímero de los pods pendientes.

Esta compatibilidad con el almacenamiento efímero para los pods es compatible con las versiones de 1.19.7-gke.800 o posteriores, y 1.18.12-gke.1210 o versiones posteriores.

Limitaciones de escalabilidad

El aprovisionamiento automático de nodos tiene las mismas limitaciones que el escalador automático del clúster, además de las siguientes limitaciones adicionales:

Límite sobre la cantidad de cargas de trabajo independientes
El aprovisionamiento automático de nodos admite un máximo de 100 cargas de trabajo distintas.
Límite sobre la cantidad de grupos de nodos
El aprovisionamiento automático de nodos reduce la prioridad de la creación de grupos de nodos nuevos cuando la cantidad de grupos se acerca a 100. La creación de más de 100 grupos de nodos es posible, pero solo cuando es la única opción para programar un Pod pendiente.

Habilita el aprovisionamiento automático de nodos

Habilita el aprovisionamiento automático de nodos en un clúster con gcloud o Google Cloud Console.

gcloud

Para habilitar el aprovisionamiento automático de nodos, ejecuta el comando siguiente:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --min-cpu MINIMUM_CPU \
    --min-memory MIMIMUM_MEMORY \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY
    --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster en el que se habilitará el aprovisionamiento automático de nodos.
  • MINIMUM_CPU es la cantidad mínima de núcleos en el clúster.
  • MINIMUM_MEMORY es la cantidad mínima de gigabytes de memoria en el clúster.
  • MAXIMUM_CPU es la cantidad máxima de núcleos en el clúster.
  • MAXIMUM_MEMORY es la cantidad máxima de gigabytes de memoria en el clúster.

En el siguiente ejemplo, se habilita el aprovisionamiento automático de nodos en el dev-cluster y se permite escalar entre un tamaño de clúster total de 1 CPU y 1 gigabyte de memoria hasta un máximo de 10 CPU y 64 gigabytes de memoria:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --min-cpu 1 \
    --min-memory 1 \
    --max-cpu 10 \
    --max-memory 64

Console

Para habilitar el aprovisionamiento automático de nodos, sigue estos pasos:

  1. Ve a la página de Google Kubernetes Engine en Cloud Console:

    Ir a Google Kubernetes Engine

  2. Selecciona el clúster deseado.

  3. Haz clic en el ícono .

  4. Desplázate hasta Aprovisionamiento automático de nodos y selecciona Habilitado.

  5. Configura el uso mínimo y máximo de CPU y memoria que deseas para el clúster.

  6. Haz clic en Guardar. GKE actualiza el clúster.

Usa un archivo de configuración de aprovisionamiento automático

El aprovisionamiento automático de nodos se puede configurar mediante un archivo de configuración YAML. El archivo de configuración puede contener solo una línea si se usa para cambiar una única opción de configuración. Se pueden especificar varias opciones de configuración en un solo archivo de configuración. En este caso, todas las opciones de configuración se modificarán cuando se aplique el archivo de configuración.

Algunas opciones de configuración avanzadas solo se pueden especificar mediante un archivo de configuración.

Ejemplo 1: Aplicar el siguiente archivo de configuración habilita la reparación automática y la actualización automática de nodos para cualquier grupo de nodos nuevo que cree el aprovisionamiento automático de nodos:

management:
  autoRepair: true
  autoUpgrade: true

Ejemplo 2: Aplicar el siguiente archivo de configuración cambiaría la siguiente configuración:

  • Configura los límites de recursos para CPU, memoria y GPU. El aprovisionamiento automático de nodos no creará un nodo si el tamaño total del clúster supera los límites de recursos especificados.
  • Habilita la reparación automática y la actualización automática de nodos para cualquier grupo de nodos nuevo que cree el aprovisionamiento automático de nodos.
  • Habilita la opción de inicio seguro y supervisión de integridad para cualquier grupo de nodos nuevo que cree el aprovisionamiento automático de nodos.
  • Configura el tamaño del disco de arranque en 100 GB para cualquier grupo de nodos nuevo que cree el aprovisionamiento automático de nodos.
resourceLimits:
  -resourceType: 'cpu'
   minimum: 4
   maximum: 10
  -resourceType: 'memory'
   maximum: 64
  -resourceType: 'nvidia-tesla-k80'
   maximum: 4
management:
  autoRepair: true
  autoUpgrade: true
shieldedInstanceConfig:
  enableSecureBoot: true
  enableIntegrityMonitoring: true
diskSizeGb: 100

Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:

  1. Crea un archivo con la configuración deseada en una ubicación a la que gcloud pueda acceder.

  2. Ejecuta el siguiente comando para aplicar la configuración a tu clúster:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Reemplaza lo siguiente:

    • CLUSTER_NAME es el nombre del clúster.
    • FILE_NAME es el nombre del archivo de configuración.

    Para obtener más información, consulta la documentación de gcloud container clusters update.

Configuración predeterminada del aprovisionamiento automático

El aprovisionamiento automático de nodos analiza los requisitos de los Pods en el clúster para determinar qué tipo de nodos se adapta mejor a ellos. Sin embargo, los Pods no especifican directamente algunas opciones de configuración del grupo de nodos (por ejemplo, la configuración relacionada con las actualizaciones de nodos). Puedes establecer valores predeterminados para esas opciones, que se aplicarán a todos los grupos de nodos recién creados.

Configura el tipo de imagen de nodo predeterminado

Puedes especificar el tipo de imagen de nodo que se usará para todos los nuevos grupos de nodos aprovisionados de forma automática mediante la herramienta de gcloud o un archivo de configuración. Esta configuración solo está disponible para la versión 1.20.6-gke.1800 del clúster de GKE y versiones superiores.

gcloud

Para establecer el tipo de imagen de nodo predeterminado, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --autoprovisioning-image-type IMAGE_TYPE

Reemplaza lo siguiente:

  • CLUSTER_NAME: el nombre del clúster
  • IMAGE_TYPE: el tipo de imagen de nodo, que puede ser una de las siguientes opciones:

    • cos_containerd: Container-Optimized OS con containerd
    • cos: Container-Optimized OS con Docker.
    • ubuntu_containerd: Ubuntu con containerd
    • ubuntu: Ubuntu con Docker.

Archivo

Para todos los nuevos grupos de nodos aprovisionados de forma automática, puedes especificar el tipo de imagen de nodo que se usará mediante un archivo de configuración. La siguiente configuración de YAML especifica que, para los nuevos grupos de nodos aprovisionados de forma automática, el tipo de imagen es cos_containerd y tiene límites de recursos asociados para la CPU y la memoria. Debes especificar valores máximos para la CPU y la memoria a fin de habilitar el aprovisionamiento automático.

  1. Guarda la configuración de YAML:

    resourceLimits:
      - resourceType: 'cpu'
          minimum: 4
          maximum: 10
      - resourceType: 'memory'
          maximum: 64
    autoprovisioningNodePoolDefaults:
      imageType: 'cos_containerd'
    
  2. Aplica la configuración:

    gcloud container clusters update CLUSTER_NAME \
      --enable-autoprovisioning \
      --autoprovisioning-config-file FILE_NAME
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME es el nombre del clúster.
    • FILE_NAME: Es el nombre del archivo de configuración.

Configura valores predeterminados de identidad para grupos de nodos aprovisionados automáticamente

Los permisos para los recursos de Google Cloud son proporcionados por identidades.

Puedes especificar la identidad predeterminada (ya sea una cuenta de servicio, o uno o más permisos) para los grupos de nodos nuevos aprovisionados de forma automática mediante la herramienta de gcloud o un archivo de configuración.

gcloud

Para especificar la cuenta de servicio de IAM predeterminada que usa el aprovisionamiento automático de nodos, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-service-account=SERVICE_ACCOUNT

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster.
  • SERVICE_ACCOUNT es el nombre de la cuenta de servicio predeterminada.

En el siguiente ejemplo, se configura test-service-account@google.com como la cuenta de servicio predeterminada en el clúster dev-cluster:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning --autoprovisioning-service-account=test-service-account@google.com

Para especificar los permisos predeterminados que debe usar el aprovisionamiento automático de nodos, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-scopes=SCOPE

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster.
  • SCOPE son los permisos de Google Cloud que usan los grupos de nodos aprovisionados de forma automática. Para especificar varios permisos, debes separarlos con una coma (por ejemplo, SCOPE1, SCOPE2,...).

En el siguiente ejemplo, se establece el permiso predeterminado del clúster dev-cluster en devstorage.read_only:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/devstorage.read_only

Archivo

Puedes especificar la identidad predeterminada que usa el aprovisionamiento automático de nodos mediante un archivo de configuración. Mediante la siguiente configuración de YAML, se establece la cuenta de servicio de IAM:

  serviceAccount: SERVICE_ACCOUNT

Reemplaza SERVICE_ACCOUNT por el nombre de la cuenta de servicio predeterminada.

Como alternativa, puedes usar la siguiente configuración de YAML para especificar los permisos predeterminados que usa el aprovisionamiento automático de nodos:

  scopes: SCOPE

Reemplaza SCOPE por el permiso de Google Cloud que usan los grupos de nodos aprovisionados de forma automática. Para especificar varios permisos, debes separarlos con una coma (por ejemplo, SCOPE1, SCOPE2,...).

Para usar un archivo de configuración de aprovisionamiento automático:

  1. Crea un archivo de configuración que especifique los valores de identidad predeterminados en una ubicación a la que gcloud pueda acceder.

  2. Ejecuta el siguiente comando para aplicar la configuración a tu clúster:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster.
  • FILE_NAME es el nombre del archivo de configuración.

Claves de encriptación administradas por el cliente (CMEK)

Puedes especificar claves de encriptación administradas por el cliente (CMEK) que usan los grupos de nodos nuevos aprovisionados de forma automática.

Puedes habilitar la encriptación administrada por el cliente para los controladores de arranque mediante un archivo de configuración. La siguiente configuración de YAML establece la clave CMEK:

  bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Reemplaza lo siguiente:

  • KEY_PROJECT_ID es el ID del proyecto de claves.
  • LOCATION: Es la ubicación del llavero de claves.
  • KEY_RING: Es el nombre del llavero de claves.
  • KEY_NAME es el nombre de la clave.

Para usar un archivo de configuración de aprovisionamiento automático:

  1. Crea un archivo de configuración que especifique una clave CMEK en una ubicación a la que gcloud pueda acceder.

  2. Ejecuta el siguiente comando para aplicar la configuración a tu clúster:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Reemplaza lo siguiente:

    • CLUSTER_NAME es el nombre del clúster.
    • FILE_NAME es el nombre del archivo de configuración.

Integridad del nodo

El aprovisionamiento automático de nodos permite crear grupos de nodos con el inicio seguro y la supervisión de integridad habilitados.

Puedes habilitar el inicio seguro y la supervisión de integridad mediante un archivo de configuración. Con la siguiente configuración de YAML, se habilita el inicio seguro y se inhabilita la supervisión de integridad:

  shieldedInstanceConfig:
    enableSecureBoot: true
    enableIntegrityMonitoring: false

Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:

  1. Copia la configuración anterior en un archivo que se encuentre en una ubicación a la que gcloud pueda acceder. Edita los valores de enableSecureBoot y enableIntegrityMonitoring. Guarda el archivo.

  2. Ejecuta el siguiente comando para aplicar la configuración a tu clúster:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Reemplaza lo siguiente:

    • CLUSTER_NAME es el nombre del clúster.
    • FILE_NAME es el nombre del archivo de configuración.

Reparación y actualización automáticas de nodos

El aprovisionamiento automático de nodos es compatible con la creación de grupos de nodos con la reparación y la actualización automáticas de nodos habilitadas.

gcloud

Para habilitar la reparación y la actualización automáticas en todos los grupos de nodos nuevos aprovisionados de forma automática, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --enable-autoprovisioning-autorepair \
    --enable-autoprovisioning-autoupgrade

Reemplaza CLUSTER_NAME por el nombre del clúster.

A fin de inhabilitar la reparación y la actualización automáticas en todos los grupos de nodos aprovisionados de forma automática, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --no-enable-autoprovisioning-autorepair \
    --no-enable-autoprovisioning-autoupgrade

Reemplaza CLUSTER_NAME por el nombre del clúster.

Archivo

Puedes habilitar o inhabilitar la reparación y la actualización automáticas mediante un archivo de configuración. Mediante la siguiente configuración de YAML, puedes habilitar la reparación automática y, a su vez, inhabilitar la actualización automática:

  management:
    autoRepair: true
    autoUpgrade: false

Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:

  1. Copia la configuración anterior en un archivo que se encuentre en una ubicación a la que gcloud pueda acceder. Edita los valores de autoUpgrade y autoRepair. Guarda el archivo.

  2. Ejecuta el siguiente comando para aplicar la configuración a tu clúster:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster.
  • FILE_NAME es el nombre del archivo de configuración.

Parámetros de configuración de las actualizaciones de aumento de nodos

Puedes especificar la configuración de actualización de aumento en todos los grupos de nodos nuevos aprovisionados de forma automática mediante la herramienta de gcloud o un archivo de configuración.

gcloud

A fin de especificar la configuración de actualización de aumento para todos los grupos de nodos nuevos aprovisionados de forma automática, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-max-surge-upgrade MAX_SURGE \
    --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster.
  • MAX_SURGE es la cantidad máxima de nodos que se pueden agregar al grupo de nodos durante las actualizaciones.
  • MAX_UNAVAILABLE es la cantidad máxima de nodos del grupo de nodos que pueden no estar disponibles de forma simultánea durante las actualizaciones.

Archivo

Puedes especificar la configuración de actualización de aumento para todos los grupos de nodos aprovisionados de forma automática mediante un archivo de configuración como el siguiente:

  upgradeSettings:
    maxSurgeUpgrade: 1
    maxUnavailableUpgrade: 2

Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:

  1. Copia la configuración anterior en un archivo que se encuentre en una ubicación a la que gcloud pueda acceder. Edita los valores de maxSurgeUpgrade y maxUnavailableUpgrade. Guarda el archivo.

  2. Ejecuta el siguiente comando para aplicar la configuración a tu clúster:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster.
  • FILE_NAME es el nombre del archivo de configuración.

Para obtener más información, consulta la documentación de gcloud container clusters update.

Discos de arranque personalizados

El aprovisionamiento automático de nodos permite crear grupos de nodos con discos de arranque personalizados.

Puedes personalizar la configuración del disco de arranque mediante un archivo de configuración. La siguiente configuración de YAML hace que el aprovisionamiento automático de nodos cree grupos de nodos con discos SSD de 100 GB:

  diskSizeGb: 100
  diskType: pd-ssd

Especifica los siguientes valores:

  • diskSizeGb: Es el tamaño del disco, especificado en GB.
  • diskType: Es el tipo de disco, que puede ser uno de los siguientes valores:
    • pd-standard: Es un disco persistente estándar (predeterminado).
    • pd-ssd: Es un disco persistente SSD.

Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:

  1. Crea un archivo con la configuración del disco de arranque deseada en una ubicación a la que gcloud pueda acceder.

  2. Ejecuta el siguiente comando para aplicar la configuración a tu clúster:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Reemplaza lo siguiente:

    • CLUSTER_NAME es el nombre del clúster.
    • FILE_NAME: Es el nombre del archivo de configuración.

Plataforma de CPU mínima

El aprovisionamiento automático de nodos permite crear grupos de nodos con una plataforma de CPU mínima.

Puedes especificar la plataforma de CPU mínima predeterminada para los grupos de nodos nuevos aprovisionados de forma automática mediante la herramienta de gcloud o un archivo de configuración.

gcloud

Para establecer la plataforma de CPU mínima predeterminada, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --autoprovisioning-min-cpu-platform MIN_CPU_PLATFORM

Reemplaza lo siguiente:

Archivo

Para establecer la plataforma de CPU mínima predeterminada, puedes usar un archivo de configuración. Mediante la siguiente configuración de YAML, se establece la plataforma de CPU mínima predeterminada:

minCpuPlatform: MIN_CPU_PLATFORM

Reemplaza MIN_CPU_PLATFORM por la plataforma de CPU mínima que deseas.

Para usar un archivo de configuración de aprovisionamiento automático:

  1. Crea un archivo de configuración que especifique la plataforma de CPU mínima en una ubicación a la que gcloud pueda acceder.

  2. Ejecuta el siguiente comando para aplicar la configuración a tu clúster:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster.
  • FILE_NAME es el nombre del archivo de configuración.

Configura los límites de GPU

Cuando usas el aprovisionamiento automático de nodos con GPU, puedes establecer el límite máximo para cada tipo de GPU en el clúster mediante la herramienta de gcloud o Google Cloud Console. Si deseas configurar varios tipos de GPU, debes usar un archivo de configuración.

Para enumerar los resourceTypes disponibles, ejecuta gcloud compute accelerator-types list.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY \
    --min-accelerator type=GPU_TYPE,count=MINIMUM_ACCELERATOR \
    --max-accelerator type=GPU_TYPE,count=MAXIMUM_ACCELERATOR

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster.
  • MAXIMUM_CPU es la cantidad máxima de núcleos en el clúster.
  • MAXIMUM_MEMORY es la cantidad máxima de gigabytes de memoria en el clúster.
  • GPU_TYPE es el tipo de GPU.
  • MINIMUM_ACCELERATOR es la cantidad mínima de aceleradores de GPU en el clúster.
  • MAXIMUM_ACCELERATOR es la cantidad máxima de aceleradores de GPU en el clúster.

En el siguiente ejemplo, se establecen los límites de GPU para el tipo de acelerador de GPU nvidia-tesla-k80 en el clúster dev-cluster:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --max-cpu 10 \
    --max-memory 64 \
    --min-accelerator type=nvidia-tesla-k80,count=1 \
    --max-accelerator type=nvidia-tesla-k80,count=4

Archivo

Puedes cargar límites para varios tipos de GPU mediante un archivo de configuración. Mediante la siguiente configuración YAML, se configuran dos tipos de GPU diferentes:

  resourceLimits:
    -resourceType: 'cpu'
     minimum: 4
     maximum: 10
    -resourceType: 'memory'
     maximum: 64
    -resourceType: 'nvidia-tesla-k80'
     maximum: 4
    -resourceType: 'nvidia-tesla-v100'
     maximum: 2

Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:

  1. Copia la configuración anterior en un archivo que se encuentre en una ubicación a la que gcloud pueda acceder. Edita los valores para cpu y memory. Agrega tantos valores como necesites para resourceType. Guarda el archivo.

  2. Ejecuta el siguiente comando para aplicar la configuración a tu clúster:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster.
  • FILE_NAME es el nombre del archivo de configuración.

Para obtener más información, consulta la documentación de gcloud container clusters update.

Console

Para habilitar el aprovisionamiento automático de nodos con recursos de GPU, sigue estos pasos:

  1. Ve a la página de Google Kubernetes Engine en Cloud Console:

    Ir a Google Kubernetes Engine

  2. Selecciona el clúster deseado.

  3. Haz clic en el ícono Editar.

  4. Desplázate hasta Aprovisionamiento automático de nodos y selecciona Habilitado.

  5. Configura el uso mínimo y máximo de CPU y memoria que deseas para el clúster.

  6. Haz clic en Agregar recurso.

  7. Selecciona el tipo de GPU (por ejemplo, NVIDIA TESLA K80) que deseas agregar. Establece la cantidad mínima y máxima de GPU que deseas agregar al clúster.

  8. Acepta las limitaciones de GPU en GKE.

  9. Haz clic en Guardar. GKE actualiza el clúster.

Ubicaciones de aprovisionamiento automático de nodos

Establece las zonas en las que el aprovisionamiento automático de nodos puede crear grupos de nodos nuevos. No se admiten ubicaciones regionales. Las zonas deben pertenecer a la misma región que el clúster, pero no se limitan a las ubicaciones de nodos definidas a nivel de clúster. El cambio de las ubicaciones de aprovisionamiento automático de nodos no afecta a ningún grupo de nodos existente.

Para configurar las ubicaciones en las que el aprovisionamiento automático de nodos puede crear grupos de nodos nuevos, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-locations=ZONE

Reemplaza lo siguiente:

  • CLUSTER_NAME es el nombre del clúster.
  • ZONE es la zona en la que el aprovisionamiento automático de nodos puede crear grupos de nodos nuevos. Para especificar varias zonas, sepáralas con una coma (por ejemplo, ZONE1, ZONE2,...).

Inhabilita el aprovisionamiento automático de nodos

Cuando inhabilitas el aprovisionamiento automático de nodos para un clúster, los grupos de nodos dejan de aprovisionarse de forma automática.

gcloud

A fin de inhabilitar el aprovisionamiento automático de nodos en un clúster, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
  --no-enable-autoprovisioning

Reemplaza CLUSTER_NAME por el nombre del clúster.

Console

Para inhabilitar el aprovisionamiento automático de nodos mediante Google Cloud Console, sigue estos pasos:

  1. Ve a la página de Google Kubernetes Engine en Cloud Console:

    Ir a Google Kubernetes Engine

  2. Selecciona el clúster deseado.

  3. Haz clic en el ícono Editar.

  4. Desplázate hasta Aprovisionamiento automático de nodos y selecciona Inhabilitado.

Marca un grupo de nodos como aprovisionados de forma automática

Después de habilitar el aprovisionamiento automático de nodos en el clúster, puedes especificar los grupos de nodos que se aprovisionarán automáticamente. Un grupo de nodos aprovisionado de forma automática se borra de manera automática cuando no hay cargas de trabajo que lo usen.

Para marcar un grupo de nodos como aprovisionado de forma automática, ejecuta el siguiente comando:

gcloud container node-pools update NODE_POOL_NAME \
  --enable-autoprovisioning

Reemplaza NODE_POOL_NAME por el nombre del grupo de nodos.

Marca un grupo de nodos como no aprovisionado de forma automática

Para marcar un grupo de nodos como no aprovisionado de forma automática, ejecuta el siguiente comando:

gcloud container node-pools update NODE_POOL_NAME \
  --no-enable-autoprovisioning

Reemplaza NODE_POOL_NAME por el nombre del grupo de nodos.

Usa una familia de máquinas personalizadas

A partir de GKE 1.19.7-gke.800, puedes elegir una familia de máquinas para tus cargas de trabajo. Esto se logra mediante los siguientes pasos:

  • Configura la afinidad de nodos con la clave de cloud.google.com/machine-family, el operador In y el valor que es la familia de máquinas deseada (por ejemplo, n2).
  • Agrega un nodeSelector con la clave de cloud.google.com/machine-family y el valor que es la familia de máquinas deseada.

En este ejemplo, se establece nodeAffinity en una familia de máquinas n2:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: cloud.google.com/machine-family
            operator: In
            values:
            - n2

Después de aplicar los cambios, el aprovisionamiento automático de nodos elige el mejor grupo de nodos con un tipo de máquina dentro de la familia de máquinas especificada. Si se usan varios valores para la expresión de coincidencia, se seleccionará un valor de manera arbitraria.

¿Qué sigue?