Configura la creación automática de grupos de nodos

Puedes reducir la cantidad de administración manual de la infraestructura en los clústeres de Google Kubernetes Engine (GKE) estándar si permites que GKE cree automáticamente grupos de nodos para los Pods pendientes. En este documento, se muestra cómo habilitar la creación automática de grupos de nodos para clústeres y cargas de trabajo, establecer valores predeterminados para los nodos creados automáticamente y activar la creación automática para algunos casos de uso comunes.

Este documento está dirigido a administradores, operadores y desarrolladores de clústeres que administran la infraestructura en clústeres Standard y, además, implementan cargas de trabajo en ellos. Para obtener más información sobre cómo funciona la creación automática de grupos de nodos y los diferentes métodos de habilitación (como ComputeClasses y el aprovisionamiento automático de nodos a nivel del clúster), consulta Acerca de la creación automática de grupos de nodos.

Limitaciones

La creación automática de grupos de nodos tiene las siguientes limitaciones:

  • Todas las limitaciones del escalador automático de clúster también se aplican a la creación automática de grupos de nodos.
  • Los clústeres que tienen más de 200 grupos de nodos en total pueden tener una latencia mayor durante el ajuste de escala automático. Cualquier configuración que active la creación de un grupo de nodos nuevo, como la separación de cargas de trabajo o el uso de varias ComputeClasses, aumenta este número. Para obtener más información sobre los límites de los clústeres, consulta límites y prácticas recomendadas en "Planificación de clústeres grandes".
  • Los límites de recursos que establezcas para el clúster cuando habilites el aprovisionamiento automático de nodos también se aplicarán a los grupos de nodos que GKE cree para las ComputeClasses.
  • ComputeClasses no admite los siguientes parámetros de configuración:
    • Actualizaciones de aumento o actualizaciones azul-verde
    • Integridad del nodo y arranque seguro
  • Para habilitar la creación automática de grupos de nodos para una ComputeClass en versiones de GKE anteriores a la 1.33.3-gke.1136000, también debes habilitar el aprovisionamiento automático de nodos a nivel del clúster. Esta limitación no se aplica a la versión 1.33.3-gke.1136000 de GKE ni a las versiones posteriores.

Antes de comenzar

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

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando gcloud components update para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.

Requisitos

Puedes habilitar la creación automática de grupos de nodos para todo tu clúster en cualquier versión de GKE con la función de aprovisionamiento automático de nodos. Si deseas usar un objeto ComputeClass para habilitar la creación automática de grupos de nodos a nivel de la carga de trabajo y no quieres habilitar el aprovisionamiento automático de nodos, tu clúster debe cumplir con los siguientes requisitos:

  • Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
  • Usa el canal de versiones rápido.

Para activar la creación automática de grupos de nodos para configuraciones de nodos específicas, debes cumplir con los requisitos de versión correspondientes. Para obtener más información sobre la compatibilidad de versiones para diferentes configuraciones, consulta las notas de la versión de GKE (funciones nuevas) o la documentación de tu caso de uso.

Habilita la creación automática a nivel de la carga de trabajo

Puedes habilitar la creación automática de grupos de nodos para cargas de trabajo específicas en el clúster con un objeto ComputeClass. El campo nodePoolAutoCreation en una especificación de ComputeClass controla si GKE puede crear grupos de nodos nuevos para los Pods que seleccionan esa ComputeClass. En la versión 1.33.3-gke.1136000 de GKE y versiones posteriores, puedes habilitar la creación automática de grupos de nodos para una ComputeClass, incluso si el clúster no tiene habilitado el aprovisionamiento automático de nodos. En las versiones anteriores a la 1.33.3-gke.1136000, también debes habilitar el aprovisionamiento automático de nodos a nivel del clúster.

Para habilitar la creación automática de grupos de nodos para una ComputeClass, sigue estos pasos:

  1. Usa un clúster estándar nuevo o existente que cumpla con los siguientes requisitos:

    • Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
    • Usa el canal de versiones rápido.

    De manera opcional, puedes crear un clúster estándar nuevo.

  2. Si tu clúster no cumple con los requisitos del paso anterior, habilita el aprovisionamiento automático de nodos a nivel del clúster.

  3. Guarda el siguiente ejemplo de ComputeClass como un archivo YAML:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      -  machineFamily: n4
      -  machineFamily: n2
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Reemplaza COMPUTE_CLASS por un nombre para la nueva ComputeClass. Para obtener más información sobre los campos disponibles en ComputeClasses, consulta la CustomResourceDefinition de ComputeClass.

  4. Aplica el manifiesto de ComputeClass al clúster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTECLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

  5. Guarda el siguiente Deployment de ejemplo, que selecciona un ComputeClass, como helloweb-deploy.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

  6. Crea el Deployment en el clúster:

    kubectl apply -f helloweb-deploy.yaml
    
  7. Para verificar que GKE creó un grupo de nodos nuevo para tu Pod, obtén una lista de los grupos de nodos en tu clúster:

    gcloud container node-pools list \
        --cluster=CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: El nombre de tu clúster.
    • CONTROL_PLANE_LOCATION: Es la región o zona del plano de control del clúster, como us-central1 o us-central1-a.

Habilita el aprovisionamiento automático de nodos a nivel del clúster

Para habilitar la creación automática de grupos de nodos en todo tu clúster de GKE, usa el parámetro de configuración del aprovisionamiento automático de nodos. El aprovisionamiento automático de nodos permite que GKE cree grupos de nodos nuevos para cargas de trabajo pendientes en todo el clúster según la configuración de la especificación del Pod o de una ComputeClass. Puedes habilitar el aprovisionamiento automático de nodos para clústeres nuevos o existentes.

Antes de habilitar el aprovisionamiento automático de nodos, planifica el tamaño del rango de direcciones IPv4 principal de tu subred de VPC. GKE usa este rango de direcciones IP como el rango de direcciones IP del nodo principal. Según el tamaño y la escala de tu clúster, es posible que el rango de direcciones IP de nodo predeterminado no tenga suficientes direcciones IP para asignar a los nodos nuevos. Si actualizas el tamaño del rango de direcciones IP del nodo después de crear el clúster, debes actualizar las reglas del firewall del clúster de GKE para permitir el tráfico desde las direcciones IP nuevas.

Para obtener grupos de nodos creados automáticamente en versiones de GKE anteriores a la 1.33.3-gke.1136000, debes seguir los pasos que se indican en esta sección. También puedes habilitar el aprovisionamiento automático de nodos para un clúster existente. Para ello, edita la configuración del clúster en la consola de Google Cloud .

Para habilitar el aprovisionamiento automático de nodos cuando crees un clúster nuevo, selecciona una de las siguientes opciones:

Console

  1. En la consola de Google Cloud , ve a la página Crea un clúster de Kubernetes.

    Ir a Crea un clúster de Kubernetes

  2. En la página Conceptos básicos del clúster, especifica un nombre y una ubicación para tu clúster nuevo.

  3. En el menú de navegación, haz clic en Automation.

  4. Selecciona la casilla de verificación Habilitar el aprovisionamiento automático de nodos. Aparecerá una sección Límites.

  5. Especifica límites para la CPU y la memoria.

  6. Haz clic en Guardar cambios.

gcloud

gcloud container clusters create CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --min-cpu=MINIMUM_CPU \
    --min-memory=MINIMUM_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.
  • CONTROL_PLANE_LOCATION: Es la región o zona del plano de control del clúster, como us-central1 o us-central1-a.
  • MINIMUM_CPU es la cantidad mínima de núcleos en el clúster.
  • MINIMUM_MEMORY: Es la capacidad mínima de memoria, en GiB, en el clúster.
  • MAXIMUM_CPU es la cantidad máxima de núcleos en el clúster. Este límite se aplica a la suma de los núcleos de CPU en todos los nodos nuevos y existentes del clúster, incluidos los grupos de nodos creados manualmente.
  • MAXIMUM_MEMORY: Es la capacidad máxima de memoria, en GiB, en el clúster. Este límite se aplica a la suma de la capacidad de memoria de todos los grupos de nodos nuevos y existentes del clúster, incluidos los grupos de nodos creados manualmente.

Configura parámetros con un archivo de configuración de aprovisionamiento automático de nodos

Puedes configurar los límites de recursos y los parámetros de configuración de nodos para el aprovisionamiento automático de nodos con un archivo de configuración YAML. El archivo de configuración te permite especificar de forma declarativa los valores predeterminados para los grupos de nodos creados automáticamente y realizar configuraciones avanzadas, como habilitar la reparación automática de nodos. Este archivo no está relacionado con ComputeClasses, que son recursos personalizados de Kubernetes. En cambio, el archivo de configuración existe como una alternativa más extensible al uso de marcas de línea de comandos para especificar la configuración del aprovisionamiento automático de nodos. Para obtener más información, consulta Configuración predeterminada a nivel del clúster con un archivo de configuración.

Para crear y usar un archivo de configuración, sigue estos pasos:

  1. En un editor de texto, crea un archivo YAML en una ruta a la que pueda acceder Google Cloud CLI.
  2. Agrega la configuración que deseas establecer o modificar, como en el siguiente ejemplo:

    resourceLimits:
      - resourceType: 'cpu'
        minimum: 4
        maximum: 10
      - resourceType: 'memory'
        maximum: 64
      - resourceType: 'nvidia-tesla-t4'
        maximum: 4
    management:
      autoRepair: true
      autoUpgrade: true
    shieldedInstanceConfig:
      enableSecureBoot: true
      enableIntegrityMonitoring: true
    

    En este ejemplo, se utilizan los siguientes parámetros de configuración para el aprovisionamiento automático de nodos:

    • resourceLimits: Establece límites de recursos para la CPU, la capacidad de memoria y las GPUs NVIDIA T4 en el clúster. Estos límites se aplican a la suma de la capacidad de recursos del clúster, incluidos los grupos de nodos creados manualmente.
    • management: Habilita la reparación automática y la actualización automática de nodos para todos los grupos de nodos nuevos creados automáticamente en el clúster.
    • shieldedInstanceConfig: Habilita el inicio seguro y la supervisión de integridad de nodos para todos los grupos de nodos creados automáticamente en el clúster.
  3. Proporciona el archivo de configuración a GKE especificando la marca --autoprovisioning-config-file y la marca --enable-autoprovisioning para un clúster nuevo o existente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: el nombre del clúster
    • PATH_TO_CONFIGURATION_FILE: Es la ruta de acceso al archivo de configuración.

Después de aplicar el archivo de configuración al clúster, GKE usa la configuración del archivo para los grupos de nodos nuevos creados automáticamente en el clúster. Estos parámetros de configuración no se aplican a los grupos de nodos existentes que GKE creó en el clúster.

Configura límites de recursos para el aprovisionamiento automático de nodos

Cuando usas el aprovisionamiento automático de nodos a nivel del clúster, debes configurar límites para la cantidad total de recursos que puede tener tu clúster en todos sus grupos de nodos. Para habilitar el aprovisionamiento automático de nodos en un clúster, debes especificar límites para la capacidad de CPU y memoria en el clúster. Además, para usar otros tipos de recursos adjuntos, como GPU y TPU, debes especificar límites para esos recursos. Estos límites solo son obligatorios si habilitas el parámetro de configuración de aprovisionamiento automático de nodos para tu clúster. Si solo usas ComputeClasses para obtener grupos de nodos creados automáticamente, no necesitas configurar límites de recursos.

Puedes agregar o modificar los límites de recursos para la creación automática de grupos de nodos con uno de los siguientes métodos:

Para configurar los límites de recursos de un clúster existente, selecciona una de las siguientes opciones:

Console

  1. En la consola de Google Cloud , ve a la página de clústeres de Kubernetes.

    Ir a clústeres de Kubernetes

  2. Haz clic en el nombre del clúster. Se abrirá la página Detalles del clúster.

  3. Haz clic en la pestaña Detalles.

  4. En la sección Automatización, en la fila Aprovisionamiento automático de nodos, haz clic en Editar. Se abrirá el panel Editar aprovisionamiento automático de nodos.

  5. Selecciona la casilla de verificación Habilitar el aprovisionamiento automático de nodos.

  6. En la sección Límites, especifica los valores mínimos y máximos para la capacidad de CPU y memoria en el clúster.

  7. Para configurar límites para otro recurso, como GPUs o TPUs, haz lo siguiente:

    1. Haz clic en Agregar recurso.
    2. En la lista desplegable Tipo de recurso, selecciona el modelo de GPU o el tipo de máquina de TPU, como NVIDIA A100 80 GB o ct5p.
    3. Especifica los valores mínimo y máximo para el recurso.
  8. Opcional: En la sección Ubicaciones del grupo de nodos, selecciona zonas específicas para que GKE cree nodos. Por ejemplo, si planeas ejecutar cargas de trabajo de GPU, selecciona zonas que tengan alta disponibilidad para el tipo de GPU que seleccionaste.

  9. Haz clic en Guardar cambios.

gcloud

Ejecuta uno de los siguientes comandos:

  • Especifica los límites de recursos de CPU y memoria:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY
    

    Reemplaza lo siguiente:

    • MINIMUM_CPU es la cantidad mínima de núcleos en el clúster.
    • MINIMUM_MEMORY: Es la capacidad mínima de memoria, en GiB, en el clúster.
    • MAXIMUM_CPU es la cantidad máxima de núcleos en el clúster. Este límite se aplica a la suma de los núcleos de CPU en todos los grupos de nodos del clúster, incluidos los grupos de nodos creados manualmente.
    • MAXIMUM_MEMORY: Es la capacidad máxima de memoria, en GiB, en el clúster. Este límite se aplica a la suma de la capacidad de memoria en todos los grupos de nodos del clúster, incluidos los grupos de nodos creados manualmente.
  • Especifica los límites de recursos de GPU:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY \
        --min-accelerator=type=GPU_TYPE,count=MINIMUM_GPU_COUNT \
        --max-accelerator=type=GPU_TYPE,count=MAXIMUM_GPU_COUNT
    

    Reemplaza lo siguiente:

    • GPU_TYPE: Es el tipo de GPU para el que se establecerá un límite, como nvidia-l4.
    • MINIMUM_GPU_COUNT: Es la cantidad mínima de GPUs del tipo especificado que puede tener el clúster.
    • MAXIMUM_GPU_COUNT: Es la cantidad máxima de GPUs del tipo especificado que puede tener el clúster.
  • Especifica los límites de recursos de TPU:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --min-cpu=MINIMUM_CPU \
        --min-memory=MINIMUM_MEMORY \
        --max-cpu=MAXIMUM_CPU \
        --max-memory=MAXIMUM_MEMORY \
        --min-accelerator=type=TPU_TYPE,count=MINIMUM_TPU_COUNT \
        --max-accelerator=type=TPU_TYPE,count=MAXIMUM_TPU_COUNT
    

    Reemplaza lo siguiente:

    • TPU_TYPE: Es el tipo de TPU para el que se establecerá un límite. Se admiten los siguientes valores:
      • tpu-v4-podslice: TPU v4.
      • tpu-v5-lite-podslice: TPU v5e con tipos de máquinas que comienzan con ct5lp-.
      • tpu-v5p-slice: TPU v5e con tipos de máquinas que comienzan con ct5p-.
      • tpu-v6e-slice: TPU Trillium.
    • MINIMUM_TPU_COUNT: Es la cantidad mínima de chips TPU del tipo especificado que puede tener el clúster. Si el valor que especificas es mayor que la cantidad de chips TPU en una porción de TPU de varios hosts, es posible que tu porción de TPU no se reduzca.
    • MAXIMUM_TPU_COUNT: Es la cantidad máxima de chips TPU del tipo especificado que puede tener el clúster. En el caso de las porciones de TPU de varios hosts, especifica un valor mayor que la cantidad de chips en cada porción para que GKE pueda escalar la porción de forma atómica. La cantidad de chips en una porción es el producto de la topología de TPU. Por ejemplo, si la topología es 2x2x2, la cantidad de chips en la porción es 8, lo que significa que el valor de MAXIMUM_TPU_COUNT debe ser mayor que 8.

Archivo de configuración

  1. En tu archivo de configuración, especifica uno de los siguientes conjuntos de campos en el campo resourceLimits:

    • Especifica los límites de recursos de CPU y memoria:

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
      

      Reemplaza lo siguiente:

      • MINIMUM_CPU es la cantidad mínima de núcleos en el clúster.
      • MINIMUM_MEMORY: Es la capacidad mínima de memoria, en GiB, en el clúster.
      • MAXIMUM_CPU es la cantidad máxima de núcleos en el clúster. Este límite se aplica a la suma de los núcleos de CPU en todos los grupos de nodos del clúster, incluidos los grupos de nodos creados manualmente.
      • MAXIMUM_MEMORY: Es la capacidad máxima de memoria, en GiB, en el clúster. Este límite se aplica a la suma de la capacidad de memoria en todos los grupos de nodos del clúster, incluidos los grupos de nodos creados manualmente.
    • Especifica los límites de recursos de GPU:

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
        - resourceType: 'GPU1_TYPE'
          minimum: MINIMUM_GPU1_COUNT
          maximum: MAXIMUM_GPU1_COUNT
        - resourceType: 'GPU2_TYPE'
          minimum: MINIMUM_GPU2_COUNT
          maximum: MAXIMUM_GPU2_COUNT
      

      Reemplaza lo siguiente:

      • GPU1_TYPE,GPU2_TYPE: Son los tipos de GPU para los que se establecerán límites, como nvidia-l4.
      • MINIMUM_GPU1_COUNT,MINIMUM_GPU2_COUNT: Es la cantidad mínima de GPUs de los tipos especificados que puede tener el clúster.
      • MAXIMUM_GPU1_COUNT,MAXIMUM_GPU2_COUNT: Es la cantidad máxima de GPUs de los tipos especificados que puede tener el clúster.
    • Especifica los límites de recursos de TPU:

      resourceLimits:
        - resourceType: 'cpu'
          minimum: MINIMUM_CPU
          maximum: MAXIMUM_CPU
        - resourceType: 'memory'
          minimum: MINIMUM_MEMORY
          maximum: MAXIMUM_MEMORY
        - resourceType: 'TPU1_TYPE'
          minimum: MINIMUM_TPU1_COUNT
          maximum: MAXIMUM_TPU1_COUNT
        - resourceType: 'TPU2_TYPE'
          minimum: MINIMUM_TPU2_COUNT
          maximum: MAXIMUM_TPU2_COUNT
      

      Reemplaza lo siguiente:

      • TPU1_TYPE,TPU2_TYPE: Son los tipos de TPU para los que se establecerán límites. Se admiten los siguientes valores:
        • tpu-v4-podslice: TPU v4.
        • tpu-v5-lite-podslice: TPU v5e con tipos de máquinas que comienzan con ct5lp-.
        • tpu-v5p-slice: TPU v5e con tipos de máquinas que comienzan con ct5p-.
        • tpu-v6e-slice: TPU Trillium.
      • MINIMUM_TPU1_COUNT,MINIMUM_TPU2_COUNT: Es la cantidad mínima de chips TPU del tipo especificado que puede tener el clúster. Si el valor que especificas es mayor que la cantidad de chips TPU en una porción de TPU de varios hosts, es posible que tu porción de TPU no se reduzca.
      • MAXIMUM_TPU1_COUNT,MAXIMUM_TPU2_COUNT: Es la cantidad máxima de chips TPU del tipo especificado que puede tener el clúster. Para las porciones de TPU de varios hosts, especifica un valor mayor que la cantidad de chips en cada porción para que GKE pueda escalar la porción de forma atómica. La cantidad de chips en una porción es el producto de la topología de TPU. Por ejemplo, si la topología de TPU1_TYPE es 2x2x2, la cantidad de chips en la porción es 8, lo que significa que el valor de MAXIMUM_TPU1_COUNT debe ser mayor que 8.
  2. Proporciona el archivo de configuración a GKE especificando la marca --autoprovisioning-config-file y la marca --enable-autoprovisioning para un clúster nuevo o existente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: el nombre del clúster
    • PATH_TO_CONFIGURATION_FILE: Es la ruta de acceso al archivo de configuración.

Marca los grupos de nodos existentes como creados automáticamente

Después de habilitar el aprovisionamiento automático de nodos a nivel del clúster, puedes marcar cualquier grupo de nodos existente en el clúster como creado automáticamente. GKE administra el ajuste de escala en estos grupos de nodos, lo que incluye borrar los grupos de nodos cuando están vacíos. Puedes marcar los grupos de nodos creados manualmente como creados automáticamente para permitir que GKE los administre por ti.

Si inhabilitas el aprovisionamiento automático para tu clúster, GKE dejará de administrar todos los grupos de nodos creados automáticamente existentes en el clúster. Si vuelves a habilitar el aprovisionamiento automático para el clúster más adelante, GKE no reanudará automáticamente la administración de esos grupos de nodos existentes. Debes marcar esos grupos de nodos existentes como creados automáticamente.

Para marcar un grupo de nodos existente como creado automáticamente, ejecuta el siguiente comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning

Reemplaza NODE_POOL_NAME por el nombre del grupo de nodos.

Configura los parámetros predeterminados para los grupos de nodos creados automáticamente

GKE usa tus ComputeClasses y especificaciones de Pod para determinar los tipos de nodos que pueden ejecutar de manera óptima tus Pods pendientes. De manera opcional, puedes configurar parámetros predeterminados que GKE aplica a los grupos de nodos creados automáticamente, como una cuenta de servicio personalizada de Identity and Access Management (IAM) para los nodos o configuraciones personalizadas de discos de arranque. Estos parámetros de configuración predeterminados anulan los valores predeterminados correspondientes que Google establece para tus clústeres. Por ejemplo, puedes establecer una imagen de nodo de Ubuntu como la predeterminada para los grupos de nodos creados automáticamente, lo que anula la imagen de nodo predeterminada de Container-Optimized OS de GKE.

Puedes configurar los parámetros de configuración predeterminados a nivel del clúster con el aprovisionamiento automático de nodos o a nivel de la carga de trabajo en ComputeClasses. Antes de configurar un parámetro en uno de estos niveles, ten en cuenta lo siguiente:

  • La configuración a nivel del clúster se aplica a cualquier grupo de nodos creado automáticamente en el clúster, y la configuración de ComputeClass solo se aplica a las cargas de trabajo que usan esa ComputeClass.
  • Si especificas el mismo parámetro de configuración predeterminado en un ComputeClass y a nivel del clúster, GKE usa el parámetro de configuración de ComputeClass para las cargas de trabajo que usan ComputeClass.
  • Los valores predeterminados que configures solo se aplicarán a los grupos de nodos creados automáticamente nuevos. Los grupos de nodos existentes no se ven afectados.

En las siguientes secciones, se muestra cómo configurar parámetros de configuración predeterminados específicos.

Cómo establecer la imagen de nodo predeterminada

Selecciona una de las siguientes opciones:

ComputeClass

  1. En un manifiesto de ComputeClass, usa el campo nodePoolConfig.imageType. Este campo está disponible en la versión 1.32.4-gke.1198000 de GKE y versiones posteriores.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      nodePoolConfig:
        imageType: IMAGE_TYPE
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Reemplaza IMAGE_TYPE por un valor para la imagen del nodo, que puede ser uno de los siguientes:

    • cos_containerd: Container-Optimized OS con containerd
    • ubuntu_containerd: Ubuntu con containerd
  2. Aplica el manifiesto de ComputeClass al clúster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTECLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

gcloud

Para establecer la imagen de nodo predeterminada en la línea de comandos, usa la marca --autoprovisioning-image-type:

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

Reemplaza lo siguiente:

  • CLUSTER_NAME: el nombre del clúster
  • IMAGE_TYPE: La imagen de nodo, que puede ser una de las siguientes:
    • cos_containerd: Container-Optimized OS con containerd
    • ubuntu_containerd: Ubuntu con containerd

Para establecer la imagen de nodo predeterminada en un archivo de configuración, sigue estos pasos:

  1. En el archivo de configuración, especifica el campo imageType:

      imageType: 'IMAGE_TYPE'
    

    Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del clúster.

  2. Proporciona el archivo de configuración a GKE especificando la marca --autoprovisioning-config-file y la marca --enable-autoprovisioning para un clúster nuevo o existente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: el nombre del clúster
    • PATH_TO_CONFIGURATION_FILE: Es la ruta de acceso al archivo de configuración.

Cómo establecer la cuenta de servicio de IAM predeterminada para los nodos

Los nodos de GKE usan una cuenta de servicio de IAM para tareas del sistema, como el registro y la supervisión. Para cambiar la cuenta de servicio de IAM de los grupos de nodos creados automáticamente, selecciona una de las siguientes opciones:

ComputeClass

  1. En un manifiesto de Computeclass, usa el campo nodePoolConfig.serviceAccount. Este campo está disponible en la versión 1.31.4-gke.1072000 de GKE y versiones posteriores.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      nodePoolConfig:
        serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio de IAM, como my-node-account.
    • PROJECT_ID: Es el ID del proyecto de la cuenta de servicio.
  2. Aplica el manifiesto de ComputeClass al clúster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTECLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

gcloud

Cuando usas gcloud CLI para configurar una cuenta de servicio predeterminada para los grupos de nodos creados automáticamente, también debes especificar los alcances de acceso que los grupos de nodos requieren para funcionar correctamente.

Para establecer la cuenta de servicio predeterminada y los niveles de acceso en la línea de comandos, usa las marcas --autoprovisioning-service-account y --autoprovisioning-scopes:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio de IAM, como my-node-account.
  • PROJECT_ID: Es el ID del proyecto de la cuenta de servicio.

Para establecer la cuenta de servicio y los permisos de acceso predeterminados en un archivo de configuración, sigue estos pasos:

  1. En el archivo de configuración, especifica los campos serviceAccount y scopes:

    serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    scopes: https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
    

    Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del clúster.

  2. Proporciona el archivo de configuración a GKE especificando la marca --autoprovisioning-config-file y la marca --enable-autoprovisioning para un clúster nuevo o existente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: el nombre del clúster
    • PATH_TO_CONFIGURATION_FILE: Es la ruta de acceso al archivo de configuración.

Establece las zonas predeterminadas para los nodos creados automáticamente

De forma predeterminada, GKE crea nodos automáticamente en las siguientes zonas, según el tipo de clúster:

  • Clústeres regionales: GKE crea nodos en tres zonas aleatorias de la región del clúster.
  • Clústeres zonales: GKE crea nodos en la misma zona que el plano de control del clúster.

Puedes especificar de forma manual una lista de zonas en las que GKE crea nodos automáticamente. Estas zonas deben estar en la misma región que el plano de control del clúster. Por ejemplo, si tienes un clúster zonal con el plano de control en us-central1-a, puedes especificar cualquier zona en la región us-central1 para que GKE cree nodos automáticamente. Si modificas las zonas predeterminadas para los nodos creados automáticamente en un clúster existente, los cambios solo se aplicarán a los grupos de nodos nuevos que cree GKE.

Para especificar las zonas predeterminadas de los nodos creados automáticamente, selecciona una de las siguientes opciones:

ComputeClass

  1. En un manifiesto de ComputeClass, usa el campo spec.priorityDefaults.location.zones. Este campo está disponible en la versión 1.33.1-gke.1545000 de GKE y versiones posteriores.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2','...']
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Reemplaza ZONE1,ZONE2,... por una lista separada por comas de las zonas predeterminadas para los nodos creados automáticamente, como "us-central1-a','us-central1-b', 'us-central1-f'". GKE usa estas zonas si las reglas específicas del campo spec.priorities no incluyen una lista explícita de zonas.

  2. Aplica el manifiesto de ComputeClass al clúster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTECLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

gcloud

Para establecer las zonas predeterminadas para la creación automática de grupos de nodos en la línea de comandos, usa la marca --autoprovisioning-locations:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-locations=ZONE1,ZONE2,...

Reemplaza ZONE1,ZONE2,... por una lista separada por comas de las zonas predeterminadas para los nodos creados automáticamente, como "us-central1-a','us-central1-b', 'us-central1-f'".

Para establecer las zonas predeterminadas para la creación automática de grupos de nodos con un archivo de configuración, sigue estos pasos:

  1. Especifica el campo autoprovisioningLocations en el archivo de configuración:

    autoprovisioningLocations:
    - ZONE1
    - ZONE2
    

    Reemplaza ZONE1,ZONE2 por las zonas predeterminadas para los nodos creados automáticamente, como "us-central1-a" y "us-central1-b".

    Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del clúster.

  2. Proporciona el archivo de configuración a GKE especificando la marca --autoprovisioning-config-file y la marca --enable-autoprovisioning para un clúster nuevo o existente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: el nombre del clúster
    • PATH_TO_CONFIGURATION_FILE: Es la ruta de acceso al archivo de configuración.

Establece claves de encriptación administradas por el cliente para la encriptación del disco de arranque

Puedes especificar una clave de encriptación administrada por el cliente (CMEK) en Cloud Key Management Service que GKE usa para encriptar los discos de arranque de los nodos en los grupos de nodos creados automáticamente. Debes crear la clave antes de usarla con la creación automática de grupos de nodos. Para establecer una CMEK para los discos de arranque de tus nodos, selecciona una de las siguientes opciones:

ComputeClass

En ComputeClasses, debes especificar la clave en cada regla de prioridad en el campo spec.priorities de ComputeClass.

  1. En un manifiesto de ComputeClass, usa el campo priorities.storage.bootDiskKMSKey:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
        storage:
          bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
      - machineFamily: n4d
        storage:
          bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Reemplaza lo siguiente:

    • KEY_PROJECT_ID: ID del proyecto que tiene la clave.
    • KEY_LOCATION: Es la ubicación del llavero de claves.
    • KEY_RING: el nombre del llavero de claves que incluye la clave
    • KEY_NAME: el nombre de la clave.
  2. Aplica el manifiesto de ComputeClass al clúster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTECLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

gcloud

  1. Especifica el campo bootDiskKmsKey en el archivo de configuración:

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

    Reemplaza lo siguiente:

    • KEY_PROJECT_ID: ID del proyecto que tiene la clave.
    • KEY_LOCATION: Es la ubicación del llavero de claves.
    • KEY_RING: el nombre del llavero de claves que incluye la clave
    • KEY_NAME: el nombre de la clave.

    Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del clúster.

  2. Proporciona el archivo de configuración a GKE especificando la marca --autoprovisioning-config-file y la marca --enable-autoprovisioning para un clúster nuevo o existente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: el nombre del clúster
    • PATH_TO_CONFIGURATION_FILE: Es la ruta de acceso al archivo de configuración.

Configura la integridad del nodo y el inicio seguro

Solo puedes habilitar el inicio seguro y la supervisión de integridad para los grupos de nodos creados automáticamente con el archivo de configuración del aprovisionamiento automático de nodos.

  1. Especifica el campo shieldedInstanceConfig en el archivo de configuración:

    shieldedInstanceConfig:
      enableSecureBoot: true
      enableIntegrityMonitoring: true
    

    Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del clúster.

  2. Proporciona el archivo de configuración a GKE especificando la marca --autoprovisioning-config-file y la marca --enable-autoprovisioning para un clúster nuevo o existente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: el nombre del clúster
    • PATH_TO_CONFIGURATION_FILE: Es la ruta de acceso al archivo de configuración.

Configura la reparación y la actualización automáticas de nodos

Puedes modificar la configuración de la reparación automática de nodos y la actualización automática de nodos en los grupos de nodos creados automáticamente. Estas funciones están habilitadas de forma predeterminada en todos los clústeres y grupos de nodos de GKE. Te recomendamos que mantengas habilitadas estas funciones para mejorar la confiabilidad y la estabilidad de tus clústeres.

Para cambiar la configuración de reparación y actualización automáticas de nodos, selecciona una de las siguientes opciones:

ComputeClass

  1. En un manifiesto de ComputeClass, usa el campo autoRepair y el campo autoUpgrade en el campo spec.nodePoolConfig. Estos campos están disponibles en la versión 1.34.0-gke.2201000 y posteriores de GKE.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      nodePoolConfig:
        autoRepair: true
        autoUpgrade: true
      priorities:
      - machineFamily: n4
      - machineFamily: n4d
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    
  2. Aplica el manifiesto de ComputeClass al clúster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTECLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

gcloud

  • Para habilitar la configuración de reparación y actualización automáticas en la línea de comandos, usa las marcas --enable-autoprovisioning-autorepair y --enable-autoprovisioning-autoupgrade:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --enable-autoprovisioning-autorepair \
        --enable-autoprovisioning-autoupgrade
    
  • Para inhabilitar la configuración de reparación y actualización automáticas en la línea de comandos, usa las marcas --no-enable-autoprovisioning-autorepair y --no-enable-autoprovisioning-autoupgrade:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --no-enable-autoprovisioning-autorepair \
        --no-enable-autoprovisioning-autoupgrade
    
  • Para modificar la configuración de la reparación y la actualización automáticas de nodos con un archivo de configuración, sigue estos pasos:

    1. Especifica los campos management.autoRepair y management.autoUpgrade en el archivo de configuración:

      management:
        autoRepair: true
        autoUpgrade: true
      

      Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del clúster.

    2. Proporciona el archivo de configuración a GKE especificando la marca --autoprovisioning-config-file y la marca --enable-autoprovisioning para un clúster nuevo o existente:

      gcloud container clusters create CLUSTER_NAME \
          --location=CONTROL_PLANE_LOCATION \
          --enable-autoprovisioning \
          --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
      

      Reemplaza lo siguiente:

      • CLUSTER_NAME: el nombre del clúster
      • PATH_TO_CONFIGURATION_FILE: Es la ruta de acceso al archivo de configuración.

Configura los parámetros de la actualización de aumento

Puedes especificar la configuración de actualización de aumento en los grupos de nodos creados automáticamente. Las actualizaciones de aumento son la estrategia de actualización de nodos predeterminada de GKE. Para cambiar la configuración de actualización de aumento, debes configurar el aprovisionamiento automático de nodos a nivel del clúster.

  • Para especificar la configuración de actualización de aumento en la línea de comandos, usa las marcas --autoprovisioning-max-surge-upgrade y --autoprovisioning-max-unavailable-upgrade:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-max-surge-upgrade=MAX_SURGE \
        --autoprovisioning-max-unavailable-upgrade=MAX_UNAVAILABLE
    

    Reemplaza lo siguiente:

    • 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.
  • Para especificar la configuración de actualización de aumento con un archivo de configuración, sigue estos pasos:

    1. Especifica los campos upgradeSettings.maxSurgeUpgrade y upgradeSettings.maxUnavailableUpgrade en el archivo de configuración:

      upgradeSettings:
        maxSurgeUpgrade: MAX_SURGE
        maxUnavailableUpgrade: MAX_UNAVAILABLE
      

      Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del clúster.

    2. Proporciona el archivo de configuración a GKE especificando la marca --autoprovisioning-config-file y la marca --enable-autoprovisioning para un clúster nuevo o existente:

      gcloud container clusters create CLUSTER_NAME \
          --location=CONTROL_PLANE_LOCATION \
          --enable-autoprovisioning \
          --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
      

      Reemplaza lo siguiente:

      • CLUSTER_NAME: el nombre del clúster
      • PATH_TO_CONFIGURATION_FILE: Es la ruta de acceso al archivo de configuración.

La configuración de actualización de aumento que especifiques solo se aplicará si tu clúster usa actualizaciones de aumento para actualizar los grupos de nodos creados automáticamente. Para cambiar la estrategia de actualización de nodos a actualizaciones de aumento para los grupos de nodos nuevos creados automáticamente, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-autoprovisioning \
    --enable-autoprovisioning-surge-upgrade

Cuando cambias la estrategia de actualización, GKE usa cualquier parámetro de configuración que hayas establecido anteriormente para esa estrategia de actualización.

Usa actualizaciones azul-verde para grupos de nodos nuevos creados automáticamente

Puedes cambiar tu estrategia de actualización de nodos a actualizaciones azul-verde para todos los grupos de nodos nuevos creados automáticamente y ajustar la configuración predeterminada para las actualizaciones azul-verde. Para cambiar tu estrategia de actualización, debes configurar el aprovisionamiento automático de nodos a nivel del clúster. Los cambios que realices solo se aplicarán a los grupos de nodos nuevos creados automáticamente. También puedes actualizar los grupos de nodos existentes creados automáticamente para usar actualizaciones azul-verde.

  • Para usar las actualizaciones azul-verde y la configuración predeterminada de GKE para los grupos de nodos nuevos creados automáticamente, ejecuta el siguiente comando:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
        --enable-autoprovisioning \
        --enable-autoprovisioning-blue-green-upgrade
    
  • Para usar actualizaciones azul-verde y configurar tus propios parámetros de configuración predeterminados para los grupos de nodos nuevos creados automáticamente, ejecuta el siguiente comando:

    gcloud container clusters update CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --enable-autoprovisioning-blue-green-upgrade \
        --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \
        --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION
    

    Reemplaza lo siguiente:

    • NODE_POOL_SOAK_DURATION: Es la duración, en segundos, que GKE espera después de vaciar todos los lotes de nodos en el grupo azul antes de borrarlo. El valor predeterminado es 3600.
    • BATCH_NODE_COUNT: Es la cantidad de nodos que se vaciarán en un lote durante la fase de vaciado del grupo azul. El valor predeterminado es 1. Si especificas un valor de 0, GKE omite la fase de vaciado del grupo azul.
    • BATCH_SOAK_DURATION: Es la duración, en segundos, que GKE espera para iniciar una operación de vaciado de lotes después de que se completa la operación de vaciado anterior. El valor predeterminado es 0.

Configura discos de arranque de nodos personalizados

Para especificar el tipo y el tamaño de los discos de arranque que GKE adjunta a cada VM de nodo en un grupo de nodos creado automáticamente, selecciona una de las siguientes opciones:

ComputeClass

  1. Usa los campos bootDiskType y bootDiskSize en el campo spec.priorities.storage de un ComputeClass:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machineFamily: n4
        storage:
          bootDiskType: BOOT_DISK_TYPE
          bootDiskSize: BOOT_DISK_SIZE
      - machineFamily: n4d
        storage:
          bootDiskType: BOOT_DISK_TYPE
          bootDiskSize: BOOT_DISK_SIZE
      whenUnsatisfiable: ScaleUpAnyway
      nodePoolAutoCreation:
        enabled: true
    

    Reemplaza lo siguiente:

    • BOOT_DISK_TYPE: Es el tipo de disco que se usará como disco de arranque del nodo. El valor que especifiques debe ser compatible con el tipo de máquina de Compute Engine que GKE usa para esa regla de prioridad. El valor debe ser uno de los siguientes:
      • pd-balanced: Persistent Disk balanceado.
      • pd-standard: Persistent Disk estándar.
      • pd-ssd: Es un Persistent Disk de rendimiento (SSD).
      • hyperdisk-balanced: Hyperdisk Balanced de Google Cloud.
    • BOOT_DISK_SIZE: Es el tamaño del disco de arranque del nodo, expresado en GiB. El valor mínimo es 10.
  2. Aplica el manifiesto de ComputeClass al clúster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTECLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

gcloud

  1. En el archivo de configuración, especifica los campos diskSizeGb y diskType:

    diskSizeGb: BOOT_DISK_SIZE
    diskType: BOOT_DISK_TYPE
    

    Reemplaza lo siguiente:

    • BOOT_DISK_TYPE: Es el tipo de disco que se usará como disco de arranque del nodo. El valor que especifiques debe ser compatible con el tipo de máquina de Compute Engine que GKE usa para esa regla de prioridad. El valor debe ser uno de los siguientes:
      • pd-balanced: Persistent Disk balanceado.
      • pd-standard: Persistent Disk estándar.
      • pd-ssd: Es un Persistent Disk de rendimiento (SSD).
      • hyperdisk-balanced: Hyperdisk Balanced de Google Cloud.
    • BOOT_DISK_SIZE: Es el tamaño del disco de arranque del nodo, expresado en GiB. El valor mínimo es 10.

    Si tu archivo de configuración tiene otros parámetros, no los modifiques. Cualquier modificación o eliminación en el archivo de configuración también modifica la configuración correspondiente a nivel del clúster.

  2. Proporciona el archivo de configuración a GKE especificando la marca --autoprovisioning-config-file y la marca --enable-autoprovisioning para un clúster nuevo o existente:

    gcloud container clusters create CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --enable-autoprovisioning \
        --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: el nombre del clúster
    • PATH_TO_CONFIGURATION_FILE: Es la ruta de acceso al archivo de configuración.

GKE reserva una parte del disco de arranque del nodo para la funcionalidad del sistema y el almacenamiento efímero. Para obtener más información, consulta Almacenamiento efímero respaldado por un disco de arranque de nodo.

Configura grupos de nodos creados automáticamente para situaciones comunes

En las siguientes secciones, se muestra cómo solicitar grupos de nodos creados automáticamente para ciertos casos de uso comunes de GKE. Para obtener más información sobre casos de uso adicionales y configuraciones admitidas, consulta la documentación de tu caso de uso específico.

Selecciona una serie o un tipo de máquina

Para seleccionar una serie o un tipo de máquina de Compute Engine compatibles, elige una de las siguientes opciones:

ComputeClass

  1. En un manifiesto de ComputeClass, especifica cualquiera de los siguientes campos en el campo spec.priorities. Puedes especificar ambos campos en el mismo manifiesto de ComputeClass, pero no en la misma regla de prioridad.

    • Para seleccionar una serie de máquinas, especifica el campo machineFamily en una regla de prioridad:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: COMPUTE_CLASS
      spec:
        priorities:
        - machineFamily: MACHINE_SERIES
        whenUnsatisfiable: ScaleUpAnyway
        nodePoolAutoCreation:
          enabled: true
      

      Reemplaza MACHINE_SERIES por un tipo de máquina de Compute Engine, como n4.

    • Para seleccionar un tipo de máquina, especifica el campo machineType en una regla de prioridad:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: COMPUTE_CLASS
      spec:
        priorities:
        - machineType: MACHINE_TYPE
        whenUnsatisfiable: ScaleUpAnyway
        nodePoolAutoCreation:
          enabled: true
      

      Reemplaza MACHINE_TYPE por un tipo de máquina de Compute Engine, como c4-standard-96. En la versión 1.33.2-gke.1111000 de GKE y versiones posteriores, también puedes especificar tipos de máquinas personalizados en este campo.

    No puedes especificar el campo machineFamily y el campo machineType en la misma regla de prioridad.

  2. Aplica el manifiesto de ComputeClass al clúster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTECLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

  3. Selecciona ComputeClass en una carga de trabajo.

Especificación del Pod

  1. En un manifiesto de Pod, selecciona una de las siguientes etiquetas de nodo:

    • Para seleccionar una serie de máquinas, usa la etiqueta de nodo cloud.google.com/machine-family:

      apiVersion: v1
      kind: Pod
      metadata:
        name: machine-series-pod
      spec:
        nodeSelector:
          cloud.google.com/machine-family: MACHINE_SERIES
        containers:
        - name: hello-app
          image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      

      Reemplaza MACHINE_SERIES por un tipo de máquina de Compute Engine, como n4.

    • Para seleccionar un tipo de máquina predefinido, usa las etiquetas de nodo cloud.google.com/machine-family y node.kubernetes.io/instance-type:

      apiVersion: v1
      kind: Pod
      metadata:
        name: machine-series-pod
      spec:
        nodeSelector:
          cloud.google.com/machine-family: MACHINE_SERIES
          node.kubernetes.io/instance-type: MACHINE_TYPE
        containers:
        - name: hello-app
          image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      

      Reemplaza MACHINE_TYPE por un tipo de máquina de Compute Engine en la serie de máquinas especificada. Por ejemplo, si especificas n4 para MACHINE_SERIES, puedes especificar n4-standard-80 para MACHINE_TYPE.

      En la versión 1.33.2-gke.1111000 de GKE, también puedes especificar tipos de máquinas personalizados en este campo.

  2. Crea el Pod:

    kubectl apply -f PATH_TO_POD_MANIFEST
    

    Reemplaza PATH_TO_POD_MANIFEST por la ruta de acceso al manifiesto del Pod.

Selecciona GPU

Para solicitar GPU para los grupos de nodos creados automáticamente, selecciona una de las siguientes opciones:

ComputeClass

  1. En un manifiesto de ComputeClass, especifica el campo spec.priorities.gpu:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - gpu:
          type: GPU_TYPE
          count: GPU_COUNT
          driverVersion: DRIVER_VERSION
      whenUnsatisfiable: DoNotScaleUp
      nodePoolAutoCreation:
        enabled: true
    

    Reemplaza lo siguiente:

    • GPU_TYPE: el tipo de GPU que se adjuntará, como nvidia-l4.
    • GPU_COUNT: Es la cantidad de GPUs que se deben adjuntar a cada nodo. Este valor debe ser de 1 como mínimo.
    • DRIVER_VERSION: Es la versión del controlador de GPU que se instalará. Este valor debe ser defaultlatest: Este campo requiere la versión 1.31.1-gke.1858000 de GKE o una posterior.
  2. Aplica el manifiesto de ComputeClass al clúster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTECLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

  3. Selecciona ComputeClass en una carga de trabajo de GPU, como en el siguiente ejemplo:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-gpu-pod
    spec:
      nodeSelector:
        cloud.google.com/compute-class: nvidia-l4-class
      containers:
      - name: my-gpu-container
        image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
        command: ["/bin/bash", "-c", "--"]
        args: ["while true; do sleep 600; done;"]
        resources:
          limits:
          nvidia.com/gpu: 1
    

Especificación del Pod

Para seleccionar GPUs en las especificaciones de tu Pod, debes configurar el aprovisionamiento automático de nodos a nivel del clúster y establecer límites de recursos para ese tipo de GPU. Para configurar los límites de recursos de GPU y seleccionar GPUs en tus Pods, sigue estos pasos:

  1. Configura los límites de recursos a nivel del clúster para las GPUs que deseas usar, como se describe en la sección Configura límites de recursos para la creación automática de grupos de nodos.
  2. Selecciona GPUs con etiquetas de nodo en la especificación del Pod:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-gpu-pod
    spec:
      nodeSelector:
        cloud.google.com/gke-accelerator: GPU_TYPE
        cloud.google.com/gke-accelerator-count: GPU_COUNT
        cloud.google.com/gke-gpu-driver-version: DRIVER_VERSION
      containers:
      - name: my-gpu-container
        image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
        command: ["/bin/bash", "-c", "--"]
        args: ["while true; do sleep 600; done;"]
        resources:
          limits:
          nvidia.com/gpu: GPU_QUANTITY
    

    Reemplaza lo siguiente:

    • GPU_TYPE: el tipo de GPU que se adjuntará, como nvidia-l4.
    • GPU_COUNT: Es la cantidad de GPUs que se deben adjuntar a cada nodo. Este valor debe ser de 1 como mínimo.
    • DRIVER_VERSION: Es la versión del controlador de GPU que se instalará. Este valor debe ser defaultlatest: En la versión 1.32.2-gke.1297000 y posteriores de GKE, GKE instala automáticamente la versión del controlador default. Esta etiqueta de nodo requiere la versión 1.29.2-gke.1108000 de GKE o una posterior. Para obtener más información, consulta Instala controladores con el aprovisionamiento automático de nodos con GPU.
    • GPU_QUANTITY: Es la cantidad de GPUs que se deben adjuntar al Pod. Este valor debe ser menor o igual que el valor de GPU_COUNT.

Selecciona TPUs

Puedes solicitar TPU en las especificaciones de ComputeClasses o Pod. En esta sección, se supone que conoces la selección de Cloud TPU y que sabes el tipo, la topología y la cantidad de TPU que deseas usar. Los pasos que sigas dependerán de cómo selecciones las TPU:

Limita el tiempo de ejecución de los nodos creados automáticamente

Puedes especificar una duración máxima después de la cual GKE finaliza los nodos creados automáticamente. A este límite de tiempo se aplican las restricciones de Compute Engine.

Selecciona una de las siguientes opciones:

ComputeClass

  1. En un manifiesto de ComputeClass, usa el campo spec.priorities.maxRunDurationSeconds. Este campo está disponible en la versión 1.32.1-gke.1159000 de GKE y versiones posteriores.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      priorities:
      - machine-family: n4
        maxRunDurationSeconds: MAX_RUN_DURATION
      whenUnsatisfiable: DoNotScaleUp
      nodePoolAutoCreation:
        enabled: true
    

    Reemplaza MAX_RUN_DURATION por el tiempo, en segundos, que pueden ejecutarse los nodos creados automáticamente antes de que GKE los finalice.

  2. Aplica el manifiesto de ComputeClass al clúster:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Reemplaza PATH_TO_COMPUTECLASS_MANIFEST por la ruta de acceso al archivo de manifiesto de ComputeClass.

  3. Selecciona ComputeClass en una carga de trabajo.

Especificación del Pod

  1. En el manifiesto del Pod, usa un selector de nodos para la etiqueta de nodo cloud.google.com/gke-max-run-duration-seconds. Esta etiqueta de nodo está disponible en la versión 1.31.2-gke.1518000 de GKE y versiones posteriores.

    apiVersion: v1
    kind: Pod
    metadata:
      name: machine-series-pod
    spec:
      nodeSelector:
        cloud.google.com/machine-family: n4
        cloud.google.com/gke-max-run-duration-seconds: MAX_RUN_DURATION
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
    

    Reemplaza MAX_RUN_DURATION por el tiempo, en segundos, que pueden ejecutarse los nodos creados automáticamente antes de que GKE los finalice.

  2. Crea el Pod:

    kubectl apply -f PATH_TO_POD_MANIFEST
    

    Reemplaza PATH_TO_POD_MANIFEST por la ruta de acceso al manifiesto del Pod.

Especifica una plataforma de CPU mínima

El aprovisionamiento automático de nodos permite crear grupos de nodos con una plataforma de CPU mínima especificada. Puedes especificar la plataforma de CPU mínima a nivel de la carga de trabajo (recomendado) o a nivel del clúster.

Inhabilita la creación automática de grupos de nodos

En las siguientes secciones, se muestra cómo inhabilitar la creación automática de grupos de nodos para grupos de nodos específicos o para todo el clúster. También puedes inhabilitar la creación automática de grupos de nodos en una ComputeClass especificando un valor de false en el campo nodePoolAutoCreation.enabled de la ComputeClass. Sin embargo, no recomendamos inhabilitar la creación automática de ComputeClasses, ya que esta es una de las principales ventajas de ComputeClasses, que te permite usar funciones como la migración activa y las prioridades de respaldo.

Inhabilita la creación automática para grupos de nodos específicos

Puedes impedir que GKE administre los nodos en los grupos de nodos existentes creados automáticamente. Esta acción tiene los siguientes efectos:

  • El escalador automático del clúster deja de crear o borrar nodos en ese grupo de nodos. Si deseas que GKE ajuste la escala de los nodos automáticamente, puedes habilitar el escalador automático del clúster para ese grupo de nodos por separado.
  • GKE no borra el grupo de nodos cuando la cantidad de nodos es cero.
  • GKE sigue colocando los Pods pendientes en los nodos existentes de ese grupo de nodos que tienen disponibilidad. Si el aprovisionamiento automático de nodos sigue habilitado para el clúster, GKE también puede crear grupos de nodos nuevos para los Pods pendientes según sea necesario.

Para inhabilitar la creación automática de un grupo de nodos específico, ejecuta el siguiente comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --no-enable-autoprovisioning

Inhabilita el aprovisionamiento automático de nodos para el clúster

Puedes inhabilitar la creación automática de grupos de nodos para todo el clúster si inhabilitas el parámetro de configuración del clúster de aprovisionamiento automático de nodos. Esta acción tiene los siguientes efectos:

  • El escalador automático del clúster deja de crear y borrar nodos en los grupos de nodos existentes creados automáticamente. Los grupos de nodos creados manualmente que usan el escalador automático del clúster no se ven afectados.
  • GKE no crea automáticamente grupos de nodos nuevos para las cargas de trabajo pendientes. Supervisa tu clúster para evitar que los Pods se queden atascados.
  • Si el clúster cumple con los siguientes requisitos, GKE seguirá creando grupos de nodos nuevos para las ComputeClasses que habiliten la creación automática:

    • Usa la versión 1.33.3-gke.1136000 de GKE o una posterior.
    • Está inscrito en el canal de versiones rápido.

    Si el clúster no cumple con estos requisitos, GKE no crea grupos de nodos nuevos para las ComputeClasses que habilitan la creación automática.

Si vuelves a habilitar el parámetro de configuración de aprovisionamiento automático de nodos a nivel del clúster más adelante, GKE no volverá a habilitar la creación automática de grupos de nodos en los grupos de nodos existentes. Debes marcar los grupos de nodos individuales como creados automáticamente.

Para inhabilitar el parámetro de configuración de aprovisionamiento automático de nodos a nivel del clúster, selecciona una de las siguientes opciones:

Console

  1. En la consola de Google Cloud , accede a la página de los clústeres de Kubernetes.

    Ir a clústeres de Kubernetes

  2. Haz clic en el nombre del clúster que deseas modificar. Se abrirá la página Detalles del clúster.

  3. Haz clic en la pestaña Detalles.

  4. En la sección Automatización, en la fila Aprovisionamiento automático de nodos, haz clic en Editar. Aparecerá el panel Editar aprovisionamiento automático de nodos.

  5. Desmarca la casilla de verificación Habilitar aprovisionamiento automático de nodos.

  6. Haz clic en Guardar cambios.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --no-enable-autoprovisioning

¿Qué sigue?