En esta página se explica cómo habilitar y configurar el aprovisionamiento automático de nodos en clústeres estándar de Google Kubernetes Engine (GKE). En esta página se muestra, con ejemplos, cómo usar archivos de configuración YAML para configurar ajustes avanzados, como límites de recursos, reparación automática y actualización automática, así como para definir algunos valores predeterminados para el aprovisionamiento automático.
También aprenderás a hacer lo siguiente:
- Mejora la seguridad del clúster usando claves de cifrado gestionadas por el cliente (CMEK) y configurando la integridad de los nodos.
- Optimiza el uso de recursos y minimiza las interrupciones especificando estrategias de actualización
surge
oblue-green
, y separando los pods gestionados por GKE de las cargas de trabajo de los usuarios. - Mejora el rendimiento usando aceleradores, como GPUs o TPUs, con aprovisionamiento automático.
Esta página está dirigida a operadores, arquitectos de la nube, desarrolladores e ingenieros de redes que aprovisionan y configuran recursos en la nube, y que implementan cargas de trabajo en clústeres de GKE. Para obtener más información sobre los roles y las tareas de ejemplo habituales que se mencionan en el contenido de Google Cloud , consulta Roles y tareas de usuario habituales de GKE.
Antes de leer esta página, asegúrese de que conoce los siguientes conceptos:
- Aprovisionamiento automático de nodos
- Roles de Gestión de Identidades y Accesos (IAM) y cuentas de servicio
- Tipos de instancias y familias de máquinas de Compute Engine
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
Asegúrate de que tienes un clúster Standard. Para habilitar el aprovisionamiento automático en clústeres que ejecuten VMs de TPU, asegúrate de que el clúster de GKE ejecute una de las siguientes versiones:
- Versión 1.27.6 o posterior, o 1.28 o posterior, para las versiones 4 y 5e de TPU de Cloud.
- Versión 1.28.7-gke.1020000 o posterior y 1.29.2-gke.1035000 o posterior para la TPU v5p de Cloud.
- Versión 1.31.1-gke.1146000 o posterior para TPU de Cloud Trillium.
Para crear un clúster estándar, consulta Crear un clúster regional.
Limitaciones
El aprovisionamiento automático de nodos tiene las siguientes limitaciones de recursos:
Debes planificar cuidadosamente el intervalo de direcciones IP de los nodos. Puedes ampliar el intervalo de direcciones IP del nodo después de crear un clúster. Sin embargo, te recomendamos que no amplíes el intervalo de direcciones IP de los nodos después de crear el clúster, ya que debes actualizar las reglas de cortafuegos para incluir el nuevo intervalo como origen. Puedes ampliar el intervalo de direcciones IP de los pods usando CIDR de varios pods no contiguos con el aprovisionamiento automático de nodos.
Cuando defines intervalos máximos de CPU y memoria, los límites se calculan para todo el clúster de GKE, no por nodo ni por grupo de nodos. El aprovisionamiento automático de nodos comprueba estos límites teniendo en cuenta la suma de los recursos de los grupos de nodos que hayas creado manualmente, de todos los grupos de nodos aprovisionados automáticamente que estén activos y de los nuevos nodos que pueda crear el aprovisionamiento automático de nodos. Si el aprovisionamiento de un nuevo nodo provoca que el uso total de recursos del clúster supere cualquiera de estos máximos especificados, el aprovisionamiento automático de nodos no creará el nuevo nodo. En este caso, los pods pueden permanecer sin programar si requieren recursos que superen los máximos definidos.
Habilitar el aprovisionamiento automático de nodos
Puedes habilitar el aprovisionamiento automático de nodos en un clúster con la CLI de gcloud o la consola deGoogle Cloud .
gcloud
Para habilitar el aprovisionamiento automático de nodos, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --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
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster para habilitar el aprovisionamiento automático de nodos.MINIMUM_CPU
: número mínimo de núcleos del clúster.MINIMUM_MEMORY
: número mínimo de gigabytes de memoria del clúster.MAXIMUM_CPU
: número máximo de núcleos del clúster. Este límite suma los recursos de CPU de todos los grupos de nodos creados manualmente y de todos los grupos de nodos que se pueden crear mediante el aprovisionamiento automático de nodos.MAXIMUM_MEMORY
: número máximo de gigabytes de memoria del clúster. Este límite suma los recursos de memoria de todos los grupos de nodos creados manualmente y de todos los grupos de nodos que se puedan crear mediante el aprovisionamiento automático de nodos.
En el siguiente ejemplo, se habilita el aprovisionamiento automático de nodos en dev-cluster
y se permite el escalado entre un tamaño total del clúster de 1 CPU y 1 gigabyte de
memoria, y un máximo de 10 CPUs 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
Consola
Para habilitar el aprovisionamiento automático de nodos, sigue estos pasos:
Ve a la página Google Kubernetes Engine en la consola de Google Cloud .
Haz clic en el nombre del clúster.
En la sección Automatización, en Aprovisionamiento automático de nodos, haz clic en
Editar.Seleccione la casilla Habilitar aprovisionamiento automático de nodos.
Define el uso mínimo y máximo de CPU y memoria que quieras para el clúster.
Haz clic en Guardar cambios.
Usar 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 una sola línea si se usa para cambiar un solo ajuste. Se pueden especificar varios ajustes en un solo archivo de configuración. En este caso, todos esos ajustes se cambiarán cuando se aplique el archivo de configuración.
Algunas configuraciones avanzadas solo se pueden especificar mediante un archivo de configuración.
Ejemplo 1: Si aplicas el siguiente archivo de configuración, se habilitarán las funciones de reparación y actualización automáticas de nodos en los grupos de nodos que se creen con el aprovisionamiento automático de nodos:
management: autoRepair: true autoUpgrade: true
Ejemplo 2: Si se aplica el siguiente archivo de configuración, se cambiarán los siguientes ajustes:
- Define límites de recursos para la CPU, la memoria y la GPU. El aprovisionamiento automático de nodos no crea un nodo si el total combinado de CPU, memoria o GPU de todos los grupos de nodos del clúster supera los límites de recursos especificados.
- Habilita la reparación y la actualización automáticas de nodos en los grupos de nodos nuevos que se creen mediante el aprovisionamiento automático de nodos.
- Habilita el arranque seguro y la monitorización de integridad en los grupos de nodos que se creen con el aprovisionamiento automático de nodos.
- Define el tamaño del disco de arranque en 100 GB para los grupos de nodos que se creen con el aprovisionamiento automático de nodos.
# Set cluster-wide limits for CPU, memory, and hardware accelerators. resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 # Enable automatic node repairs and upgrades for auto-created node pools. management: autoRepair: true autoUpgrade: true # Enable secure boot and integrity monitoring for auto-created node pools. shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true # Set the boot disk size to 100 GB for auto-created node pools. diskSizeGb: 100
Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:
Crea un archivo con la configuración que quieras en una ubicación a la que pueda acceder la CLI de gcloud.
Aplica la configuración a tu clúster ejecutando el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: el nombre del archivo de configuración.
Para obtener más información, consulta la documentación de
gcloud container clusters update
.
Valores predeterminados del aprovisionamiento automático
El aprovisionamiento automático de nodos analiza los requisitos de los pods de tu clúster para determinar qué tipo de nodos se adapta mejor a esos pods. Sin embargo, algunos ajustes de los grupos de nodos no se especifican directamente en los pods (por ejemplo, los ajustes relacionados con las actualizaciones de los nodos). Puedes definir valores predeterminados para estos ajustes, que se aplicarán a todos los grupos de nodos que crees.
Definir el tipo de imagen de nodo predeterminado
Puedes especificar el tipo de imagen de nodo que se va a usar en todos los grupos de nodos aprovisionados automáticamente nuevos mediante la CLI de gcloud o un archivo de configuración. Este ajuste solo está disponible para la versión 1.20.6-gke.1800 y posteriores del clúster de GKE.
gcloud
Para definir el tipo de imagen de nodo predeterminado, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \
--enable-autoprovisioning \
--autoprovisioning-image-type IMAGE_TYPE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.IMAGE_TYPE
: el tipo de imagen del nodo, que puede ser uno de los siguientes:cos_containerd
: Container-Optimized OS con containerd.ubuntu_containerd
: Ubuntu con containerd.
YAML
En todos los grupos de nodos aprovisionados automáticamente, puede especificar el tipo de imagen de nodo que quiere usar mediante un archivo de configuración.
La siguiente configuración YAML especifica que, en el caso de los grupos de nodos aprovisionados automáticamente, el tipo de imagen es cos_containerd
y tiene límites de recursos asociados para la CPU y la memoria. Debes especificar los valores máximos de CPU y memoria para habilitar el aprovisionamiento automático.
Guarda la configuración YAML:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 # Set the default node image type to Container-Optimized OS # with containerd, which is also the default GKE node # image. imageType: 'cos_containerd'
Aplica la configuración:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: el nombre del archivo de configuración.
Definir identidades predeterminadas para grupos de nodos aprovisionados automáticamente
Los permisos de los recursos de Google Cloud se proporcionan mediante identidades.
Puedes especificar la identidad predeterminada (una cuenta de servicio o uno o varios ámbitos) de los nuevos grupos de nodos aprovisionados automáticamente mediante la CLI de gcloud o a través de un archivo de configuración.
.gcloud
Para especificar la cuenta de servicio de gestión de identidades y accesos 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
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.SERVICE_ACCOUNT
: el nombre de la cuenta de servicio predeterminada.
En el siguiente ejemplo se define 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 ámbitos predeterminados que usa el aprovisionamiento automático de nodos, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-scopes=SCOPE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.SCOPE
: los Google Cloud ámbitos que usan los grupos de nodos aprovisionados automáticamente. Para especificar varios permisos, sepáralos con una coma (por ejemplo,SCOPE1, SCOPE2,...
).
En el siguiente ejemplo se asigna el valor devstorage.read_only
al permiso predeterminado del clúster dev-cluster
:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning \ --autoprovisioning-scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/devstorage.read_only
YAML
Puedes especificar la identidad predeterminada que usa el aprovisionamiento automático de nodos mediante un archivo de configuración. La siguiente configuración YAML define la cuenta de servicio de IAM:
serviceAccount: SERVICE_ACCOUNT
Sustituye SERVICE_ACCOUNT
por el nombre de la cuenta de servicio predeterminada.
También puedes usar la siguiente configuración YAML para especificar los ámbitos predeterminados que usa el aprovisionamiento automático de nodos:
scopes: SCOPE
Sustituye SCOPE
por el Google Cloud ámbito utilizado
por los grupos de nodos aprovisionados automáticamente. Para especificar varios permisos, sepáralos con una coma (por ejemplo, SCOPE1, SCOPE2,...
).
Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:
Crea un archivo de configuración que especifique los valores predeterminados de identidad en una ubicación a la que pueda acceder la CLI de gcloud.
Aplica la configuración a tu clúster ejecutando el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: el nombre del archivo de configuración.
Claves de encriptado gestionadas por el cliente (CMEK)
Puedes especificar las claves de cifrado gestionadas por el cliente (CMEK) que usan los grupos de nodos aprovisionados automáticamente.
Puedes habilitar el cifrado gestionado por el cliente para los discos de arranque mediante un archivo de configuración. La siguiente configuración YAML define la clave CMEK:
bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Haz los cambios siguientes:
KEY_PROJECT_ID
: el ID de tu proyecto de clave.LOCATION
: la ubicación del conjunto de claves.KEY_RING
: el nombre del conjunto de claves.KEY_NAME
: el nombre de tu clave.
Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:
Crea un archivo de configuración que especifique una clave CMEK en una ubicación a la que pueda acceder la CLI de gcloud.
Aplica la configuración a tu clúster ejecutando el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: el nombre del archivo de configuración.
Integridad de los nodos
El aprovisionamiento automático de nodos permite crear grupos de nodos con las funciones Arranque seguro y Monitorización de integridad habilitadas.
Puedes habilitar el arranque seguro y la monitorización de integridad mediante un archivo de configuración. La siguiente configuración YAML habilita el arranque seguro e inhabilita la monitorización de integridad:
shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: false
Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:
Copia la configuración anterior en un archivo en una ubicación a la que pueda acceder la CLI de gcloud. Edita los valores de
enableSecureBoot
yenableIntegrityMonitoring
. Guarda el archivo.Aplica la configuración a tu clúster ejecutando el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: el nombre del archivo de configuración.
Reparación y actualización automáticas de nodos
El aprovisionamiento automático de nodos permite crear 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 aprovisionados automáticamente, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --enable-autoprovisioning-autorepair \ --enable-autoprovisioning-autoupgrade
Sustituye CLUSTER_NAME
por el nombre del clúster.
Para inhabilitar la reparación y la actualización automáticas en todos los grupos de nodos aprovisionados automáticamente, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --no-enable-autoprovisioning-autorepair \ --no-enable-autoprovisioning-autoupgrade
Sustituye CLUSTER_NAME
por el nombre del clúster.
YAML
Puedes habilitar o inhabilitar la reparación y la actualización automáticas de los nodos mediante un archivo de configuración. La siguiente configuración de YAML habilita la reparación automática e inhabilita la actualización automática:
management: autoRepair: true autoUpgrade: false
Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:
Copia la configuración anterior en un archivo en una ubicación a la que pueda acceder la CLI de gcloud. Edita los valores de
autoUpgrade
yautoRepair
. Guarda el archivo.Aplica la configuración a tu clúster ejecutando el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: el nombre del archivo de configuración.
Usar actualizaciones de aumento para los grupos de nodos aprovisionados automáticamente
Puedes especificar la configuración de actualización de picos en todos los grupos de nodos aprovisionados automáticamente nuevos mediante la CLI de gcloud o un archivo de configuración. De forma predeterminada, GKE define la estrategia de actualización de nodos como actualizaciones de aumento.
gcloud
Para especificar la configuración de actualización de picos de todos los grupos de nodos aprovisionados automáticamente, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-max-surge-upgrade MAX_SURGE \ --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.MAX_SURGE
: número máximo de nodos que se pueden añadir al grupo de nodos durante las actualizaciones.MAX_UNAVAILABLE
: el número máximo de nodos del grupo de nodos que pueden no estar disponibles simultáneamente durante las actualizaciones.
YAML
Puede especificar los ajustes de actualización de picos de demanda para todos los grupos de nodos aprovisionados automáticamente nuevos 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:
Copia la configuración anterior en un archivo en una ubicación a la que pueda acceder
gcloud
. Edita los valores demaxSurgeUpgrade
ymaxUnavailableUpgrade
. Guarda el archivo.Aplica la configuración a tu clúster ejecutando el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: el nombre del archivo de configuración.
Para obtener más información, consulta la documentación de gcloud container clusters update
.
Para volver a usar las actualizaciones de picos de demanda en los nuevos grupos de nodos aprovisionados automáticamente, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-surge-upgrade
Sustituye CLUSTER_NAME
por el nombre del clúster.
También puedes incluir las marcas de ajustes específicos, como en los comandos anteriores. GKE reutiliza la configuración anterior de la estrategia de actualización, si se había definido.
Usar actualizaciones azul-verde en grupos de nodos aprovisionados automáticamente
Puedes usar actualizaciones azul-verde en todos los grupos de nodos aprovisionados automáticamente nuevos mediante la CLI de gcloud. Con las actualizaciones azul-verde, puedes usar la configuración predeterminada o ajustarla para optimizarla en tu entorno. Para obtener más información sobre las actualizaciones azul-verde, consulta Actualizaciones azul-verde.
Para actualizar la estrategia de actualización de nodos de cualquier grupo de nodos aprovisionado automáticamente, consulta Activar o desactivar la actualización de picos en un grupo de nodos y Actualizar la estrategia de actualización azul-verde de un grupo de nodos.
En los comandos que se indican a continuación se usan las siguientes variables:
CLUSTER_NAME
: el nombre del clúster del nodo pool.COMPUTE_ZONE
: la zona del clúster.NODE_POOL_NAME
: el nombre del grupo de nodos.NUMBER_NODES
: el número de nodos del grupo de nodos en cada una de las zonas del clúster.BATCH_NODE_COUNT
: número de nodos azules que se van a vaciar en un lote durante la fase de vaciado del grupo azul. El valor predeterminado es 1. Si se le asigna el valor cero, se omitirá la fase de drenaje del grupo azul.BATCH_PERCENT
: porcentaje de nodos azules que se van a vaciar en un lote durante la fase de vaciado del grupo azul. Debe estar en el intervalo [0,0, 1,0].BATCH_SOAK_DURATION
: duración en segundos que se debe esperar después de cada purga por lotes. El valor predeterminado es cero.NODE_POOL_SOAK_DURATION
: la duración en segundos que se debe esperar después de completar el vaciado de todos los lotes. El valor predeterminado es de 3600 segundos.
La configuración predeterminada de las actualizaciones azul-verde es la siguiente:
BATCH_NODE_COUNT
= 1BATCH_SOAK_DURATION
= 0 segundosNODE_POOL_SOAK_DURATION
= 3600 segundos (1 hora)
Actualizar un clúster para usar actualizaciones azul-verde en los nuevos grupos de nodos aprovisionados automáticamente
Los siguientes comandos usan gcloud container clusters
update
para actualizar la estrategia de actualización de nodos de los nuevos grupos de nodos aprovisionados automáticamente.
También puedes usar estas marcas cuando:
- con el comando
gcloud container clusters create
para crear un clúster con el aprovisionamiento automático de nodos habilitado. - con el comando
gcoud container clusters update
para habilitar el aprovisionamiento automático de nodos.
Para actualizar un clúster de forma que use las actualizaciones azul-verde con la configuración predeterminada de los nuevos grupos de nodos aprovisionados automáticamente, usa este comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade
Puedes actualizar un clúster para que use actualizaciones azul-verde con ajustes específicos para los nuevos grupos de nodos aprovisionados automáticamente. Estos comandos también se pueden usar sin la marca --enable-autoprovisioning-blue-green-upgrade
para actualizar la configuración.
El siguiente comando usa BATCH_NODE_COUNT
para definir un tamaño de lote de recuento de nodos absoluto:
gcloud container clusters update CLUSTER_NAME \ --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
También puedes usar BATCH_PERCENT
para definir un tamaño de lote basado en porcentajes. Para ello, sustituye batch-node-count
en el último comando por batch-percent
y usa un decimal entre 0 y 1 (por ejemplo, el 25% es 0.25
). Para ver cómo se definen los tamaños de lote basados en porcentajes, consulta Actualizar un grupo de nodos con una actualización azul/verde usando tamaños de lote basados en porcentajes.
Discos de arranque personalizados
El aprovisionamiento automático de nodos permite crear grupos de nodos con discos de arranque personalizados.
Puedes personalizar el ajuste del disco de arranque mediante un archivo de configuración. GKE reserva una parte del disco de arranque del nodo para las funciones de kubelet. Para obtener más información, consulta Almacenamiento efímero respaldado por el disco de arranque del nodo.
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 lo siguiente:
diskSizeGb
: tamaño del disco, especificado en GB.diskType
: el tipo de disco, que puede ser uno de los siguientes valores:pd-balanced
(predeterminado)pd-standard
pd-ssd
. En la versión 1.22 de GKE y versiones anteriores, si especificaspd-ssd
, el aprovisionamiento automático de nodos solo tiene en cuenta los tipos de máquina N1 al crear grupos de nodos.
Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:
Crea un archivo con la configuración del disco de arranque que quieras en una ubicación a la que pueda acceder la CLI de gcloud.
Aplica la configuración a tu clúster ejecutando el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: el nombre del archivo de configuración.
Separar los pods gestionados por GKE de tus cargas de trabajo
Como administrador de clústeres, puede que quieras separar los pods que gestiona GKE de tus cargas de trabajo. Esta separación ayuda a evitar problemas de reducción si hay nodos infrautilizados en el clúster que tienen pods del sistema en ejecución.
En el siguiente ejemplo se muestra cómo puedes separar los pods gestionados de tus cargas de trabajo usando una combinación de aprovisionamiento automático de nodos y taints y tolerancias de Kubernetes.
Crea un grupo de nodos de
e2-standard-2
VMs y aplica un taint de nodo que solo permita que las cargas de trabajo del sistema de GKE se ejecuten en esos nodos:gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --machine-type=e2-standard-2 \ --node-taints=components.gke.io/gke-managed-components=true:NoSchedule
Haz los cambios siguientes:
NODE_POOL_NAME
: el nombre que elijas para tu grupo de nodos.CLUSTER_NAME
: el nombre del clúster.
Habilita el aprovisionamiento automático de nodos en el clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --min-cpu 1 \ --min-memory 1 \ --max-cpu 10 \ --max-memory 64
Tu clúster puede escalar entre un tamaño total de 1 CPU y 1 gigabyte de memoria, y un máximo de 10 CPUs y 64 gigabytes de memoria.
Para probar esta configuración, guarde el siguiente archivo de manifiesto de ejemplo como
nginx.yaml
:apiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent # Allow this Pod to run on nodes that have a dedicated: ui-team taint. tolerations: - key: dedicated operator: Equal value: ui-team # The NoSchedule effect prevents Pods that don't have this toleration from # running on the nodes. effect: NoSchedule nodeSelector: # Run this Pod only on nodes that have the dedicated: ui-team node label. dedicated: ui-team
Este manifiesto despliega un pod de carga de trabajo de prueba en el clúster con una etiqueta
nodeSelector
y un taint de nododedicated: ui-team
. Sin el aprovisionamiento automático de nodos, este pod de carga de trabajo no se puede programar porque ningún grupo de nodos tiene la etiqueta y las intolerancias adecuadas.Aplica el manifiesto al clúster:
kubectl apply -f nginx.yaml
El resultado debería ser similar al siguiente:
pod/nginx created
Consulta el nuevo grupo de nodos que se ajusta a la etiqueta
ui-team
:kubectl get node --selector=dedicated=ui-team
El resultado debería ser similar al siguiente:
NAME STATUS ROLES AGE VERSION gke-test-nap-e2-medium-14b723z1-19f89fa8-jmhr Ready <none> 14s v1.21.11-gke.900
Tu clúster separa tus cargas de trabajo de los pods de GKE gestionados.
Limitar el tiempo de ejecución de los nodos aprovisionados automáticamente
En la versión 1.31.2-gke.1518000 de GKE y versiones posteriores, puedes limitar el tiempo de ejecución de los nodos aprovisionados automáticamente mediante el cloud.google.com/gke-max-run-duration-seconds
selector de nodos.
Añade el siguiente campo al archivo de manifiesto:
spec:
nodeSelector:
cloud.google.com/gke-max-run-duration-seconds: "MAX_RUN_DURATION"
Sustituye MAX_RUN_DURATION
por la duración, en segundos, que quieres que se ejecute el nodo aprovisionado automáticamente antes de que se termine automáticamente.
Para obtener información sobre las restricciones, consulta Restricciones de MaxRunDuration.
Usar aceleradores en grupos de nodos aprovisionados automáticamente
Puedes habilitar el aprovisionamiento automático de nodos y configurar GKE para que aprovisione automáticamente aceleradores de GPU o TPU de Cloud. De esta forma, te asegurarás de que haya capacidad suficiente para programar cargas de trabajo de IA o aprendizaje automático.
Configurar límites de GPU
Cuando se usa el aprovisionamiento automático de nodos con GPUs, se debe definir el límite máximo de cada tipo de GPU del clúster mediante la CLI de gcloud o laGoogle Cloud consola. El límite de GPU es el número máximo de GPU. Por ejemplo, una VM con 16 GPUs cuenta como 16, no como 1, a efectos de este límite. Para 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
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.MAXIMUM_CPU
: número máximo de núcleos del clúster.MAXIMUM_MEMORY
: número máximo de gigabytes de memoria del clúster.GPU_TYPE
: el tipo de GPU.MINIMUM_ACCELERATOR
: número mínimo de aceleradores de GPU del clúster.MAXIMUM_ACCELERATOR
: número máximo de aceleradores de GPU del clúster.
En el siguiente ejemplo se definen los límites de GPU para el tipo de acelerador de GPU nvidia-tesla-t4
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-t4,count=1 \ --max-accelerator type=nvidia-tesla-t4,count=4
YAML
Puedes cargar límites para varios tipos de GPU mediante un archivo de configuración. La siguiente configuración de YAML configura dos tipos de GPUs diferentes:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 # Limit the number of T4 GPUs in the cluster to 4. - resourceType: 'nvidia-tesla-t4' maximum: 4 # Limit the number of V100 GPUs in the cluster to 2. - resourceType: 'nvidia-tesla-v100' maximum: 2
Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:
Copia la configuración anterior en un archivo en una ubicación a la que pueda acceder la CLI de gcloud. Edita los valores de
cpu
ymemory
. Añade tantos valores pararesourceType
como necesites. Guarda el archivo.Aplica la configuración a tu clúster ejecutando el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: el nombre del archivo de configuración.
Para obtener más información, consulta la documentación de gcloud container clusters update
.
Consola
Para habilitar el aprovisionamiento automático de nodos con recursos de GPU, sigue estos pasos:
Ve a la página Google Kubernetes Engine en la consola de Google Cloud .
Haz clic en el nombre del clúster.
En la sección Automatización, en Aprovisionamiento automático de nodos, haz clic en
Editar.Seleccione la casilla Habilitar aprovisionamiento automático de nodos.
Define el uso mínimo y máximo de CPU y memoria del clúster.
Haz clic en
Añadir recurso.Selecciona el tipo de GPU que quieras añadir (por ejemplo, NVIDIA T4). Define el número mínimo y máximo de GPUs que se añadirán al clúster.
Acepta las limitaciones de las GPUs en GKE.
Haz clic en Guardar cambios.
Elegir una versión del controlador para instalar
En la versión 1.29.2-gke.1108000 de GKE y versiones posteriores, puedes seleccionar una versión del controlador de GPU para que GKE la instale automáticamente en los nodos de GPU aprovisionados automáticamente. Añade el siguiente campo al archivo de manifiesto:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
Sustituye DRIVER_VERSION
por uno de los siguientes valores:
default
: es el controlador predeterminado y estable de la versión de GKE de tu nodo. Si omites el elemento nodeSelector en tu manifiesto, esta será la opción predeterminada.latest
: la versión del controlador más reciente disponible para la versión de GKE de tu nodo.
Configurar TPUs de Cloud
Si usas el aprovisionamiento automático de nodos para uno o varios recursos de TPU, debes configurar los límites de TPU. Para obtener más información sobre cómo funciona el aprovisionamiento automático de nodos con las TPUs, consulta Aceleradores de aprendizaje automático compatibles.
Configura tus pods para que usen recursos de TPU mediante gcloud CLI. Para configurar varios tipos de TPU, debes usar un archivo de configuración.
gcloud
Actualiza el clúster y define los límites de TPU:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ [--min-cpu MINIMUM_CPU ] \ --max-cpu MAXIMUM_CPU \ [--min-memory MINIMUM_MEMORY ] \ --max-memory MAXIMUM_MEMORY \ --min-accelerator=type=TPU_TYPE,count= MINIMUM_ACCELERATOR \ --max-accelerator=type=TPU_TYPE,count= MAXIMUM_ACCELERATOR
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.MINIMUM_CPU
: número mínimo de vCPUs del clúster.MAXIMUM_CPU
: número máximo de vCPUs del clúster.MINIMUM_MEMORY
:número mínimo de gigabytes de memoria del clúster.MAXIMUM_MEMORY
: número máximo de gigabytes de memoria del clúster.TPU_TYPE
: el tipo de TPU que elijas:- Para seleccionar TPU v4, usa
tpu-v4-podslice
. - Para seleccionar la versión 5e de las TPU con un tipo de máquina que empiece por
ct5lp-
, usatpu-v5-lite-podslice
. - Para seleccionar la TPU v5p con un tipo de máquina que empiece por
ct5p-
, usatpu-v5p-slice
. - Para seleccionar TPU Trillium, usa
tpu-v6e-slice
.
- Para seleccionar TPU v4, usa
MINIMUM_ACCELERATOR
: número mínimo de chips de TPU del clúster.- Ten en cuenta que usar
MINIMUM_ACCELERATOR
puede impedir que se reduzca la escala de las slices de TPU de varios hosts, aunquecount
sea inferior al número de chips de TPU de la slice.
- Ten en cuenta que usar
MAXIMUM_ACCELERATOR
: número máximo de chips de TPU del clúster.- Si la configuración del pod solicita un segmento de TPU de varios hosts, GKE crea ese segmento de forma atómica. Define el valor de count
de forma que sea lo suficientemente alto como para permitir el aprovisionamiento de todos los chips de TPU de la topología especificada. El número de chips de cada segmento de TPU es igual al producto de la topología. Por ejemplo, si la topología del segmento de TPU multihost es
2x2x2
, el número de chips de TPU es8
, por lo queMAXIMUM_ACCELERATOR
debe ser superior a 8.
- Si la configuración del pod solicita un segmento de TPU de varios hosts, GKE crea ese segmento de forma atómica. Define el valor de count
de forma que sea lo suficientemente alto como para permitir el aprovisionamiento de todos los chips de TPU de la topología especificada. El número de chips de cada segmento de TPU es igual al producto de la topología. Por ejemplo, si la topología del segmento de TPU multihost es
En el siguiente ejemplo se definen los límites de TPU para los tipos de máquina
ct5lp-hightpu-1t
,ct5lp-hightpu-4t
yct5lp-hightpu-8t
del clústerdev-cluster
. Por ejemplo, se podrían aprovisionar hasta diezct5lp-hightpu-4t
máquinas, cada una con 4 chips TPU, 112 vCPUs y 192 GiB de memoria.gcloud container clusters update dev-cluster-inference \ --enable-autoprovisioning \ --min-cpu 0 \ --max-cpu 1120 \ --min-memory 0 \ --max-memory 1920 \ --min-accelerator=type=tpu-v5-lite-podslice,count=0 \ --max-accelerator=type=tpu-v5-lite-podslice,count=40
Crea una especificación de Deployment que dé como resultado un Pod que solicite recursos de TPU. Por ejemplo, el siguiente manifiesto hará que GKE aprovisione cuatro nodos
ct5lp-hightpu-4t
:apiVersion: apps/v1 kind: Deployment metadata: name: tpu-workload labels: app: tpu-workload spec: replicas: 4 selector: matchLabels: app: nginx-tpu template: metadata: labels: app: nginx-tpu spec: nodeSelector: # Request a TPU type and topology. cloud.google.com/gke-tpu-accelerator: tpu-v5-lite-podslice cloud.google.com/gke-tpu-topology: 2x2 # Request resources from a specific capacity reservation. cloud.google.com/reservation-name: my-reservation containers: - name: nginx image: nginx:1.14.2 # Request a specific number of TPU chips for each node. resources: requests: google.com/tpu: 4 limits: google.com/tpu: 4 ports: - containerPort: 80
En el campo
nodeSelector
, define el tipo de TPU, la topología de TPU y el número de aceleradores.cloud.google.com/gke-tpu-accelerator
: define el tipo de TPU. Por ejemplo,tpu-v4-podslice
.cloud.google.com/gke-tpu-topology
: define la topología de la TPU. Por ejemplo,2x2x1
o4x4x8
.limits: google.com/tpu
: define el número de chips de TPU por nodo.
También puedes configurar los siguientes campos en
nodeSelector
:- Reserva de TPU:
para consumir una reserva con tu carga de trabajo, especifica el nombre
de la reserva en
cloud.google.com/reservation-name
. - Programación de la recogida:
para crear una recogida con aprovisionamiento automático de nodos, incluye los siguientes valores en función del tipo de grupo de nodos que solicites:
- Grupo de nodos de segmento de TPU de un solo host:
cloud.google.com/gke-workload-type: HIGH_AVAILABILITY
. - Grupo de nodos de segmento de TPU multihost:
cloud.google.com/gke-nodepool-group-name: COLLECTION_NAME, cloud.google.com/gke-workload-type: HIGH_AVAILABILITY
. Sustituye el valorCOLLECTION_NAME
por el nombre de la colección. Este valor debe cumplir los requisitos de las etiquetas de clústeres.
- Grupo de nodos de segmento de TPU de un solo host:
YAML
Puedes asignar límites a varios tipos de TPUs mediante un archivo de configuración. La siguiente configuración de YAML configura dos tipos diferentes de TPUs:
resourceLimits: - resourceType: 'cpu' maximum: 10000 - resourceType: 'memory' maximum: 10000 # Limit the number of TPU v4 chips in the cluster to 32. - resourceType: 'tpu-v4-podslice' maximum: 32 # Limit the number of TPU v5 chips in the cluster to 64. - resourceType: 'tpu-v5-lite' maximum: 64
Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:
Copia la configuración anterior en un archivo en una ubicación a la que pueda acceder la CLI de gcloud. Edita los valores de
resourceType
ymaximum
. Añade tantos valores pararesourceType
como necesites. Guarda el archivo.Aplica la configuración a tu clúster ejecutando el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: el nombre del archivo de configuración.
Para obtener más información, consulta la documentación de gcloud container clusters update
.
Ubicaciones de aprovisionamiento automático de nodos
Tú defines las zonas en las que el aprovisionamiento automático de nodos puede crear grupos de nodos. No se admiten las ubicaciones regionales. Las zonas deben pertenecer a la misma región que el clúster, pero no se limitan a las ubicaciones de los nodos definidas a nivel de clúster. Cambiar las ubicaciones de aprovisionamiento automático de nodos no afecta a los grupos de nodos que ya tengas.
Para definir las ubicaciones en las que el aprovisionamiento automático de nodos puede crear grupos de nodos, usa la CLI de gcloud o un archivo de configuración.
gcloud
Ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-locations=ZONE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.ZONE
: la zona en la que el aprovisionamiento automático de nodos puede crear grupos de nodos. Para especificar varias zonas, sepáralas con comas (por ejemplo,ZONE1, ZONE2,...
).
YAML
Para definir las ubicaciones en las que el aprovisionamiento automático de nodos puede crear grupos de nodos, puede usar un archivo de configuración.
Añade la siguiente configuración YAML que define la ubicación de los nuevos grupos de nodos:
autoprovisioningLocations:
- ZONE
Sustituye ZONE
por la zona en la que el aprovisionamiento automático de nodos puede crear grupos de nodos. Para especificar varias zonas, añade más zonas a la lista. Guarda el archivo.
Para usar un archivo de configuración de aprovisionamiento automático, sigue estos pasos:
Crea un archivo de configuración en una ubicación a la que pueda acceder
gcloud CLI
.Aplica la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.FILE_NAME
: la ruta del archivo de configuración.
Nodos más cercanos físicamente con una colocación compacta
A partir de la versión 1.25 de GKE, el aprovisionamiento automático de nodos admite la política de colocación compacta. Con la política de colocación compacta, puedes indicar a GKE que cree grupos de nodos más próximos entre sí dentro de una zona.
Para definir una política de colocación compacta, añade un nodeSelector
a la especificación de Pod con las siguientes claves:
cloud.google.com/gke-placement-group
es el identificador que asignas al grupo de pods que deben ejecutarse juntos en el mismo grupo de emplazamiento compacto.cloud.google.com/machine-family
es el nombre de la familia de la máquina. Para obtener más información, consulta las familias de máquinas que admiten la colocación compacta.
En el siguiente ejemplo se define una política de posición compacta con el identificador de grupo de posiciones placement-group-1
y la familia de equipos c2
:
apiVersion: v1
kind: Pod
metadata:
...
spec:
...
nodeSelector:
cloud.google.com/gke-placement-group: placement-group-1
cloud.google.com/machine-family: c2
Para obtener más información, consulta cómo definir la colocación compacta de nodos de GKE.
Inhabilitar el aprovisionamiento automático de nodos
Si inhabilitas el aprovisionamiento automático de nodos en un clúster, los grupos de nodos ya no se aprovisionarán automáticamente.
gcloud
Para inhabilitar el aprovisionamiento automático de nodos en un clúster, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --no-enable-autoprovisioning
Sustituye CLUSTER_NAME
por el nombre de tu clúster.
YAML
Para inhabilitar el aprovisionamiento automático de nodos mediante la consola de Google Cloud :
Ve a la página Google Kubernetes Engine en la consola de Google Cloud .
Haz clic en el nombre del clúster.
En la sección Automatización, en Aprovisionamiento automático de nodos, haz clic en
Editar.Desmarca la casilla Habilitar aprovisionamiento automático de nodos.
Haz clic en Guardar cambios.
Marcar un grupo de nodos como aprovisionado automáticamente
Después de habilitar el aprovisionamiento automático de nodos en el clúster, puedes especificar qué grupos de nodos se aprovisionan automáticamente. Un grupo de nodos aprovisionado automáticamente se elimina automáticamente cuando no lo usa ninguna carga de trabajo.
Para marcar un grupo de nodos como aprovisionado automáticamente, ejecuta el siguiente comando:
gcloud container node-pools update NODE_POOL_NAME \ --enable-autoprovisioning
Sustituye NODE_POOL_NAME
por el nombre del grupo de nodos.
Marcar un grupo de nodos como no aprovisionado automáticamente
Para marcar un grupo de nodos como no aprovisionado automáticamente, ejecuta el siguiente comando:
gcloud container node-pools update NODE_POOL_NAME \ --no-enable-autoprovisioning
Sustituye NODE_POOL_NAME
por el nombre del grupo de nodos.
Usar una familia de máquinas personalizada
Puedes elegir una serie de máquinas de Compute Engine específica, como n2
o t2d
, para tus cargas de trabajo configurando uno de los siguientes campos en tu manifiesto:
- Define la afinidad de nodo con la clave
cloud.google.com/machine-family
, el operadorIn
y el valor de la familia de máquinas que quieras (por ejemplo,n2
). - Añade un
nodeSelector
con la clavecloud.google.com/machine-family
y el valor de la familia de máquinas que quieras.
En este ejemplo se asigna el valor nodeAffinity
a 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 de la serie de máquinas especificada. Si especifica varias entradas para matchExpressions
, GKE elige arbitrariamente una serie de máquinas de las entradas especificadas.
Controlar los atributos de los nodos con una clase de cálculo personalizada
Para tener más control sobre los atributos de tus grupos de nodos aprovisionados automáticamente, crea y usa clases de computación personalizadas. Las clases de computación personalizadas te permiten configurar comportamientos de escalado, como las prioridades de respaldo al elegir tipos de máquinas para nodos o umbrales de utilización de recursos específicos que activan la consolidación de cargas de trabajo en nodos para liberar recursos no utilizados. Las clases de computación personalizadas se pueden usar en GKE 1.30.3-gke.1451000 y versiones posteriores.
Para obtener información sobre las funciones de las clases de computación personalizadas y cómo usarlas con el aprovisionamiento automático de nodos, consulta Acerca de las clases de computación personalizadas.
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 carga de trabajo (opción recomendada) o de clúster.
Siguientes pasos
- Más información sobre el autoescalador de clústeres
- Obtén más información sobre los grupos de nodos.
- Más información sobre las estrategias de actualización de nodos
- Consulte cómo ver los eventos de la herramienta de escalado automático de clústeres.
- Más información sobre cómo solucionar problemas