En esta página, se explica cómo usar el aprovisionamiento automático de nodos en clústeres estándar de Google Kubernetes Engine (GKE). Ya debes estar familiarizado con el concepto de aprovisionamiento automático de nodos.
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
gcloud components update
para obtener la versión más reciente.
Requisitos
El aprovisionamiento automático de nodos está disponible en las siguientes versiones de GKE:
- Versión 1.11.2-gke.25 y posteriores para clústeres zonales
- Versión 1.12.x y posteriores para clústeres regionales
- Versión 1.27.6 y posteriores, o 1.28 y posteriores, para Cloud TPU v4 y v5e.
- Versión 1.28.7-gke.1020000 o posteriores y 1.29.2-gke.1035000 o posteriores para Cloud TPU v5p.
Habilitar el aprovisionamiento automático de nodos
Puedes habilitar el aprovisionamiento automático de nodos en un clúster con gcloud CLI o la consola de Google Cloud.
El aprovisionamiento automático de nodos tiene las siguientes limitaciones de recursos:
Debes planificar el rango de direcciones IP del nodo con cuidado. Puedes expandir el rango de direcciones IP del nodo después de crear un clúster. Sin embargo, te recomendamos no expandir el rango de direcciones IP del nodo después de crear el clúster, ya que debes actualizar las reglas del firewall para incluir el rango nuevo como fuente. Puedes expandir el rango de direcciones IP del Pod con el CIDR de varios Pods no continuos con el aprovisionamiento automático de nodos.
gcloud
Para habilitar el aprovisionamiento automático de nodos, ejecuta el comando siguiente:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --min-cpu MINIMUM_CPU \ --min-memory MIMIMUM_MEMORY \ --max-cpu MAXIMUM_CPU \ --max-memory MAXIMUM_MEMORY \ --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster en el que se habilitará el aprovisionamiento automático de nodos.MINIMUM_CPU
es la cantidad mínima de núcleos en el clúster.MINIMUM_MEMORY
es la cantidad mínima de gigabytes de memoria en el clúster.MAXIMUM_CPU
es la cantidad máxima de núcleos en el clúster.MAXIMUM_MEMORY
es la cantidad máxima de gigabytes de memoria en el clúster.
En el siguiente ejemplo, se habilita el aprovisionamiento automático de nodos en el dev-cluster
y se permite escalar entre un tamaño de clúster total de 1 CPU y 1 gigabyte de memoria hasta un máximo de 10 CPU y 64 gigabytes de memoria:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning \ --min-cpu 1 \ --min-memory 1 \ --max-cpu 10 \ --max-memory 64
Consola
Para habilitar el aprovisionamiento automático de nodos, sigue estos pasos:
Ve a la página de 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.Selecciona la casilla de verificación Habilitar aprovisionamiento automático de nodos.
Configura el uso mínimo y máximo de CPU y memoria que deseas para el clúster.
Haz clic en Guardar cambios.
Usa un archivo de configuración de aprovisionamiento automático
El aprovisionamiento automático de nodos se puede configurar mediante un archivo de configuración YAML. El archivo de configuración puede contener solo una línea si se usa para cambiar una única opción de configuración. Se pueden especificar varias opciones de configuración en un solo archivo de configuración. En este caso, todas las opciones de configuración se modificarán cuando se aplique el archivo de configuración.
Algunas opciones de configuración avanzadas solo se pueden especificar mediante un archivo de configuración.
Ejemplo 1: Aplicar el siguiente archivo de configuración habilita la reparación automática y la actualización automática de nodos para cualquier grupo de nodos nuevo que cree el aprovisionamiento automático de nodos:
management: autoRepair: true autoUpgrade: true
Ejemplo 2: Aplicar el siguiente archivo de configuración cambiaría la siguiente configuración:
- Configura los límites de recursos para CPU, memoria y GPU. El aprovisionamiento automático de nodos no creará un nodo si el tamaño total del clúster supera los límites de recursos especificados.
- Habilita la reparación automática y la actualización automática de nodos para cualquier grupo de nodos nuevo que cree el aprovisionamiento automático de nodos.
- Habilita la opción de inicio seguro y supervisión de integridad para cualquier grupo de nodos nuevo que cree el aprovisionamiento automático de nodos.
- Configura el tamaño del disco de arranque en 100 GB para cualquier grupo de nodos nuevo que cree el aprovisionamiento automático de nodos.
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true diskSizeGb: 100
Para usar un archivo de configuración de aprovisionamiento automático:
Crea un archivo con la configuración deseada en una ubicación a la que gcloud CLI pueda acceder a él.
Ejecuta el siguiente comando para aplicar la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.FILE_NAME
es el nombre del archivo de configuración.
Para obtener más información, consulta la documentación de
gcloud container clusters update
.
Configuración predeterminada del aprovisionamiento automático
El aprovisionamiento automático de nodos analiza los requisitos de los Pods en el clúster para determinar qué tipo de nodos se adapta mejor a ellos. Sin embargo, los Pods no especifican directamente algunas opciones de configuración del grupo de nodos (por ejemplo, la configuración relacionada con las actualizaciones de nodos). Puedes establecer valores predeterminados para esas opciones, que se aplicarán a todos los grupos de nodos recién creados.
Configura el tipo de imagen de nodo predeterminado
A fin de especificar el tipo de imagen de nodo que se usará para todos los grupos nuevos de nodos aprovisionados de forma automática, usa gcloud CLI o un archivo de configuración. Esta configuración solo está disponible para la versión 1.20.6-gke.1800 del clúster de GKE y versiones posteriores.
gcloud
Para establecer el tipo de imagen de nodo predeterminado, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \
--enable-autoprovisioning \
--autoprovisioning-image-type IMAGE_TYPE
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre del clústerIMAGE_TYPE
: el tipo de imagen de nodo, que puede ser una de las siguientes opciones:cos_containerd
: Container-Optimized OS con containerdubuntu_containerd
: Ubuntu con containerd
Archivo
Para todos los nuevos grupos de nodos aprovisionados de forma automática, puedes especificar el tipo de imagen de nodo
que se usará mediante un archivo de configuración.
La siguiente configuración de YAML especifica que, para los nuevos grupos de nodos aprovisionados de forma automática,
el tipo de imagen es cos_containerd
y tiene límites de recursos asociados
para la CPU y la memoria. Debes especificar valores máximos para la CPU y la memoria a fin de habilitar el aprovisionamiento automático.
Guarda la configuración de YAML:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 imageType: 'cos_containerd'
Aplica la configuración:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.FILE_NAME
: Es el nombre del archivo de configuración.
Configura valores predeterminados de identidad para grupos de nodos aprovisionados automáticamente
Los permisos para los recursos de Google Cloud son proporcionados por identidades.
A fin de especificar la identidad predeterminada (ya sea una cuenta de servicio, o uno o más permisos) para los grupos nuevos de nodos aprovisionados de forma automática, usa gcloud CLI o un archivo de configuración.
gcloud
Para especificar la cuenta de servicio de IAM predeterminada que usa el aprovisionamiento automático de nodos, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-service-account=SERVICE_ACCOUNT
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre del clústerSERVICE_ACCOUNT
es el nombre de la cuenta de servicio predeterminada.
En el siguiente ejemplo, se configura test-service-account@google.com
como la cuenta de servicio predeterminada en el clúster dev-cluster
:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning --autoprovisioning-service-account=test-service-account@google.com
Para especificar los permisos predeterminados que debe usar el aprovisionamiento automático de nodos, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-scopes=SCOPE
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.SCOPE
son los permisos de Google Cloud que usan los grupos de nodos aprovisionados de forma automática. Para especificar varios permisos, debes separarlos con una coma (por ejemplo,SCOPE1, SCOPE2,...
).
En el siguiente ejemplo, se establece el permiso predeterminado del clúster dev-cluster
en devstorage.read_only
:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning \ --autoprovisioning-scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/devstorage.read_only
Archivo
Puedes especificar la identidad predeterminada que usa el aprovisionamiento automático de nodos mediante un archivo de configuración. Mediante la siguiente configuración de YAML, se establece la cuenta de servicio de IAM:
serviceAccount: SERVICE_ACCOUNT
Reemplaza SERVICE_ACCOUNT
por el nombre de la cuenta de servicio predeterminada.
Como alternativa, puedes usar la siguiente configuración de YAML para especificar los permisos predeterminados que usa el aprovisionamiento automático de nodos:
scopes: SCOPE
Reemplaza SCOPE
por el permiso de Google Cloud que usan los grupos de nodos aprovisionados de forma automática. Para especificar varios permisos, debes separarlos con una coma (por ejemplo, SCOPE1, SCOPE2,...
).
Para usar un archivo de configuración de aprovisionamiento automático:
Crea un archivo de configuración que especifique los valores de identidad predeterminados en una ubicación a la que gcloud CLI pueda acceder a él.
Ejecuta el siguiente comando para aplicar la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.FILE_NAME
es el nombre del archivo de configuración.
Claves de encriptación administradas por el cliente (CMEK)
Puedes especificar claves de encriptación administradas por el cliente (CMEK) que usan los grupos de nodos nuevos aprovisionados de forma automática.
Puedes habilitar la encriptación administrada por el cliente para los controladores de arranque mediante un archivo de configuración. La siguiente configuración de YAML establece la clave CMEK:
bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Reemplaza lo siguiente:
KEY_PROJECT_ID
es el ID del proyecto de claves.LOCATION
: Es la ubicación del llavero de claves.KEY_RING
: Es el nombre del llavero de claves.KEY_NAME
es el nombre de la clave.
Para usar un archivo de configuración de aprovisionamiento automático:
Crea un archivo de configuración que especifique una clave CMEK en una ubicación a la que gcloud CLI pueda acceder a ella.
Ejecuta el siguiente comando para aplicar la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.FILE_NAME
es el nombre del archivo de configuración.
Integridad del nodo
El aprovisionamiento automático de nodos permite crear grupos de nodos con el inicio seguro y la supervisión de integridad habilitados.
Puedes habilitar el inicio seguro y la supervisión de integridad mediante un archivo de configuración. Con la siguiente configuración de YAML, se habilita el inicio seguro y se inhabilita la supervisión de integridad:
shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: false
Para usar un archivo de configuración de aprovisionamiento automático:
Copia la configuración anterior en un archivo en una ubicación en la que gcloud CLI pueda acceder a ella. Edita los valores de
enableSecureBoot
yenableIntegrityMonitoring
. Guarda el archivo.Ejecuta el siguiente comando para aplicar la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.FILE_NAME
es el nombre del archivo de configuración.
Reparación y actualización automáticas de nodos
El aprovisionamiento automático de nodos es compatible con la creación de grupos de nodos con la reparación y la actualización automáticas de nodos habilitadas.
gcloud
Para habilitar la reparación y la actualización automáticas en todos los grupos de nodos nuevos aprovisionados de forma automática, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --enable-autoprovisioning-autorepair \ --enable-autoprovisioning-autoupgrade
Reemplaza CLUSTER_NAME
por el nombre del clúster.
A fin de inhabilitar la reparación y la actualización automáticas en todos los grupos de nodos aprovisionados de forma automática, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --no-enable-autoprovisioning-autorepair \ --no-enable-autoprovisioning-autoupgrade
Reemplaza CLUSTER_NAME
por el nombre del clúster.
Archivo
Puedes habilitar o inhabilitar la reparación y la actualización automáticas mediante un archivo de configuración. Mediante la siguiente configuración de YAML, puedes habilitar la reparación automática y, a su vez, inhabilitar la actualización automática:
management: autoRepair: true autoUpgrade: false
Para usar un archivo de configuración de aprovisionamiento automático:
Copia la configuración anterior en un archivo en una ubicación en la que gcloud CLI pueda acceder a ella. Edita los valores de
autoUpgrade
yautoRepair
. Guarda el archivo.Ejecuta el siguiente comando para aplicar la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.FILE_NAME
: Es el nombre del archivo de configuración.
Usa actualizaciones de aumento para grupos de nodos nuevos aprovisionados de forma automática
A fin de especificar la configuración de actualización de aumento en todos los grupos de nodos nuevos aprovisionados de forma automática, usa gcloud CLI o un archivo de configuración. De forma predeterminada, GKE establece la estrategia de actualización de nodos en actualizaciones de aumento.
gcloud
A fin de especificar la configuración de actualización de aumento para todos los grupos de nodos nuevos aprovisionados de forma automática, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-max-surge-upgrade MAX_SURGE \ --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre del clústerMAX_SURGE
es la cantidad máxima de nodos que se pueden agregar al grupo de nodos durante las actualizaciones.MAX_UNAVAILABLE
es la cantidad máxima de nodos del grupo de nodos que pueden no estar disponibles de forma simultánea durante las actualizaciones.
Archivo
Puedes especificar la configuración de actualización de aumento para todos los grupos de nodos aprovisionados de forma automática mediante un archivo de configuración como el siguiente:
upgradeSettings: maxSurgeUpgrade: 1 maxUnavailableUpgrade: 2
Para usar un archivo de configuración de aprovisionamiento automático:
Copia la configuración anterior en un archivo que se encuentre en una ubicación a la que
gcloud
pueda acceder. Edita los valores demaxSurgeUpgrade
ymaxUnavailableUpgrade
. Guarda el archivo.Ejecuta el siguiente comando para aplicar la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.FILE_NAME
es el nombre del archivo de configuración.
Para obtener más información, consulta la documentación de gcloud container clusters update
.
A fin de volver a usar las actualizaciones de aumento para los grupos de nodos nuevos aprovisionados de forma automática, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-surge-upgrade
Reemplaza CLUSTER_NAME
por el nombre del clúster.
De forma opcional, puedes incluir las marcas para una configuración específica, como en los comandos anteriores. GKE vuelve a usar la configuración anterior para la estrategia de actualización, si se estableció.
Usa actualizaciones azul-verde para grupos de nodos nuevos aprovisionados de forma automática
Puedes usar las actualizaciones azul-verde para todos los grupos de nodos nuevos aprovisionados de forma automática mediante gcloud CLI. Con las actualizaciones azul-verde, puedes usar la configuración predeterminada o ajustarla para optimizar 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 para cualquier grupo de nodos aprovisionado de forma automática, consulta Activa o desactiva la actualización de aumento para un grupo de nodos existente y Actualiza la estrategia de actualización azul-verde de un grupo de nodos existente.
Las siguientes variables se usan en los comandos que se enumeran a continuación:
CLUSTER_NAME
: el nombre del clúster para el grupo de nodos.COMPUTE_ZONE
: la zona del clúster.NODE_POOL_NAME
: el nombre del grupo de nodosNUMBER_NODES
: la cantidad de nodos del grupo de nodos en cada una de las zonas del clúster.BATCH_NODE_COUNT
: la cantidad de nodos azules que se vaciarán en un lote durante la fase de drenado del grupo azul. El valor predeterminado es uno. Si se establece en cero, se omitirá la fase de vaciado del grupo azul.BATCH_PERCENT
: el porcentaje de nodos azules que se vaciarán en un lote durante la fase de drenado del grupo azul. Debe estar en el rango de [0.0, 1.0].BATCH_SOAK_DURATION
: la duración en segundos de la espera después de vaciar cada lote. El valor predeterminado es cero.NODE_POOL_SOAK_DURATION
: la duración en segundos que se espera después de completar el vaciado de todos los lotes. El valor predeterminado es de 3600 segundos.
La configuración predeterminada para las actualizaciones azul-verde es la siguiente:
BATCH_NODE_COUNT
= 1BATCH_SOAK_DURATION
= 0 segundosNODE_POOL_SOAK_DURATION
= 3600 segundos (1 hora)
Actualiza un clúster a fin de usar actualizaciones azul-verde para grupos de nodos nuevos aprovisionados de forma automática
Los siguientes comandos usan gcloud container clusters
update
a fin de actualizar la estrategia de actualización de nodos para grupos de nodos nuevos aprovisionados de forma automática.
También puedes usar estas marcas en los siguientes casos:
- Usa el comando
gcloud container clusters create
para crear un clúster con el aprovisionamiento automático de nodos habilitado. - Usa el comando
gcoud container clusters update
para habilitar el aprovisionamiento automático de nodos.
A fin de actualizar un clúster para usar actualizaciones azul-verde con la configuración predeterminada para grupos de nodos nuevos aprovisionados de forma automática, usa este comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade
Puedes actualizar un clúster a fin de usar actualizaciones azul-verde con una configuración específica para grupos de nodos nuevos aprovisionados de forma automática. 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 establecer un tamaño de lote de recuento absoluto de nodos:
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 configurar un tamaño de lote basado en porcentajes. Para esto, reemplaza batch-node-count
en el último comando por batch-percent
y usa un decimal entre 0 y 1 (por ejemplo, 25% es 0.25
). Para ver cómo se configuran los tamaños de lotes basados en porcentajes, consulta Actualiza un grupo de nodos con una actualización azul-verde mediante tamaños de lotes 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 la configuración del disco de arranque mediante un archivo de configuración. GKE reserva una parte del disco de arranque de nodo para las funciones de kubelet. Para obtener más información, consulta Almacenamiento efímero respaldado por un disco de arranque de 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 los siguientes valores:
diskSizeGb
: Es el tamaño del disco, especificado en GB.diskType
: Es el tipo de disco, que puede ser uno de los siguientes valores:pd-balanced
(predeterminada)pd-standard
pd-ssd
. En la versión 1.22 de GKE y en versiones anteriores, si especificaspd-ssd
, el aprovisionamiento automático de nodos solo considera los tipos de máquinas N1 cuando creas grupos de nodos.
Para usar un archivo de configuración de aprovisionamiento automático:
Crea un archivo con la configuración del disco de arranque deseada en una ubicación a la que gcloud CLI pueda acceder a él.
Ejecuta el siguiente comando para aplicar la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.FILE_NAME
: Es el nombre del archivo de configuración.
Separa los Pods administrados por GKE de tus cargas de trabajo
Como administrador del clúster, es posible que desees separar los Pods que GKE administra de tus cargas de trabajo. Esta separación ayuda a evitar problemas de reducción de escalamiento vertical si hay nodos poco usados en el clúster que tienen Pods del sistema en ejecución.
En el siguiente ejemplo, se muestra cómo puedes separar los Pods administrados de las cargas de trabajo a través de una combinación de aprovisionamiento automático de nodos y taints y tolerancias de Kubernetes.
Crea un clúster con un grupo de nodos predeterminado de VMs
e2-standard-2
y aplica un taint de nodo que solo permita que las cargas de trabajo del sistema GKE se ejecuten en esos nodos:gcloud container clusters create test-cluster \ --machine-type=e2-standard-2 \ --node-taints=components.gke.io/gke-managed-components=true:NoSchedule
Habilita el aprovisionamiento automático de nodos en el clúster:
gcloud container clusters update test-cluster \ --enable-autoprovisioning \ --min-cpu 1 \ --min-memory 1 \ --max-cpu 10 \ --max-memory 64
Tu clúster puede escalar entre un tamaño de clúster total de 1 CPU y 1 gigabyte de memoria hasta un máximo de 10 CPU y 64 gigabytes de memoria.
Para probar esta configuración, guarda el siguiente manifiesto de muestra como
nginx.yaml
:apiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent tolerations: - key: dedicated operator: Equal value: ui-team effect: NoSchedule nodeSelector: dedicated: ui-team
Este manifiesto implementa un Pod de carga de trabajo de prueba en el clúster con una etiqueta
nodeSelector
y un taint de nodo dededicated: ui-team
. Sin el aprovisionamiento automático de nodos, este Pod de carga de trabajo no se puede programar, puesto que ningún grupo de nodos tiene la etiqueta y los taints adecuados.Aplica el manifiesto al clúster:
kubectl apply -f nginx.yaml
El resultado es similar a este:
pod/nginx created
Consulta el grupo de nodos nuevo que se ajusta a la etiqueta
ui-team
:kubectl get node --selector=dedicated=ui-team
El resultado es similar al siguiente:
NAME STATUS ROLES AGE VERSION gke-test-nap-e2-medium-14b723z1-19f89fa8-jmhr Ready <none> 14s v1.21.11-gke.900
El clúster separa tus cargas de trabajo de los Pods de GKE administrados.
Usa aceleradores para grupos de nodos nuevos aprovisionados de forma automática
Puedes habilitar el aprovisionamiento automático de nodos y configurar GKE para aprovisionar aceleradores de GPU o Cloud TPU de forma automática para garantizar la capacidad necesaria para programar cargas de trabajo de IA/AA.
Configura los límites de GPU
Cuando usas el aprovisionamiento automático de nodos con GPU, puedes establecer el límite máximo para cada tipo de GPU en el clúster mediante gcloud CLI o la consola de Google Cloud. El recuento de límite de GPU es la cantidad máxima de GPU. Por ejemplo, una VM con 16 GPU cuenta como 16 no 1 para los fines de este límite. Si deseas configurar varios tipos de GPU, debes usar un archivo de configuración.
Para enumerar los resourceTypes disponibles, ejecuta gcloud compute accelerator-types list
.
gcloud
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --max-cpu MAXIMUM_CPU \ --max-memory MAXIMUM_MEMORY \ --min-accelerator type=GPU_TYPE,count=MINIMUM_ACCELERATOR \ --max-accelerator type=GPU_TYPE,count=MAXIMUM_ACCELERATOR
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre del clústerMAXIMUM_CPU
es la cantidad máxima de núcleos en el clúster.MAXIMUM_MEMORY
es la cantidad máxima de gigabytes de memoria en el clúster.GPU_TYPE
es el tipo de GPU.MINIMUM_ACCELERATOR
es la cantidad mínima de aceleradores de GPU en el clúster.MAXIMUM_ACCELERATOR
es la cantidad máxima de aceleradores de GPU en el clúster.
En el siguiente ejemplo, se establecen los límites de GPU para el tipo de acelerador de GPU nvidia-tesla-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
Archivo
Puedes cargar límites para varios tipos de GPU mediante un archivo de configuración. Mediante la siguiente configuración YAML, se configuran dos tipos de GPU diferentes:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 - resourceType: 'nvidia-tesla-v100' maximum: 2
Para usar un archivo de configuración de aprovisionamiento automático:
Copia la configuración anterior en un archivo en una ubicación en la que gcloud CLI pueda acceder a ella. Edita los valores de
cpu
ymemory
. Agrega tantos valores como necesites pararesourceType
. Guarda el archivo.Ejecuta el siguiente comando para aplicar la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.FILE_NAME
es el nombre del archivo de configuración.
Para obtener más información, consulta la documentación de gcloud container clusters update
.
Consola
Para habilitar el aprovisionamiento automático de nodos con recursos de GPU, sigue estos pasos:
Ve a la página de 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.Selecciona la casilla de verificación Habilitar el aprovisionamiento automático de nodos.
Configura el uso mínimo y máximo de CPU y memoria para el clúster.
Haz clic en
Agregar recurso.Selecciona el tipo de GPU (por ejemplo, NVIDIA T4) que deseas agregar. Establece la cantidad mínima y máxima de GPU que se agregará al clúster.
Acepta las limitaciones de GPU en GKE.
Haz clic en Guardar cambios.
Elige una versión del controlador para instalar
En la versión 1.29.2-gke.1108000 y posteriores de GKE, puedes seleccionar una versión del controlador de GPU para que GKE la instale automáticamente en los nodos de GPU aprovisionados de forma automática. Agrega el siguiente campo a tu manifiesto:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
Reemplaza DRIVER_VERSION
por uno de los siguientes valores:
default
: el controlador estable y predeterminado para la versión de GKE de tu nodo. Si omites nodeSelector en tu manifiesto, esta es la opción predeterminada.latest
: la última versión del controlador disponible para la versión de GKE de tu nodo.
Configura Cloud TPUs
A partir de la versión 1.28 de GKE, puedes usar el aprovisionamiento automático de nodos con Cloud TPUs. Sin embargo, v5p no es compatible con el aprovisionamiento automático de nodos y el ajuste de escala automático del clúster. Define los límites de TPU a nivel de clúster y crea los grupos de nodos TPU. Para obtener más información sobre cómo funciona el aprovisionamiento automático de nodos con TPUs, consulta Aceleradores de aprendizaje automático compatibles.
Crea un clúster y configura los pods para usar recursos TPU mediante gcloud CLI. Si deseas configurar varios tipos de TPU, debes usar un archivo de configuración.
gcloud
Crea un clúster y define los límites de TPU:
gcloud container clusters create 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
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre del clústerMINIMUM_CPU
es la cantidad mínima de vCPUs en el clúster.MAXIMUM_CPU
es la cantidad máxima de vCPUs en el clúster.MINIMUM_MEMORY
es la cantidad mínima de gigabytes de memoria en el clúster.MAXIMUM_MEMORY
es la cantidad máxima de gigabytes de memoria en el clúster.TPU_TYPE
: es el tipo de TPU que eliges. Usatpu-v4-podslice
para seleccionar TPU v4. Para seleccionar TPU v5e con un tipo de máquina que comience conct5lp-
, usatpu-v5-lite-podslice
. Para seleccionar TPU v5e con un tipo de máquina que comience conct5l-
, usatpu-v5-lite-device
.MINIMUM_ACCELERATOR
: es la cantidad mínima de chips TPU en el clúster.- Ten en cuenta que cuando usas
MINIMUM_ACCELERATOR
puede bloquearse la reducción de escala vertical de porciones de TPU de varios hosts, incluso sicount
es menor que la cantidad de chips TPU en la porción.
- Ten en cuenta que cuando usas
MAXIMUM_ACCELERATOR
: la cantidad máxima de chips TPU en el clúster.- Si la configuración del Pod solicita una porción de TPU de varios hosts,
GKE crea esa porción de forma atómica. Establece el valor de recuento lo suficientemente alto como para permitir el aprovisionamiento de todos los chips TPU de la topología especificada. La cantidad de chips en cada porción de TPU
es igual al producto de la topología. Por ejemplo, si la topología de la porción de TPU de varios hosts es
2x2x2
, la cantidad de chips TPU es igual a8
, por lo queMAXIMUM_ACCELERATOR
debe ser mayor que 8.
- Si la configuración del Pod solicita una porción de TPU de varios hosts,
GKE crea esa porción de forma atómica. Establece el valor de recuento lo suficientemente alto como para permitir el aprovisionamiento de todos los chips TPU de la topología especificada. La cantidad de chips en cada porción de TPU
es igual al producto de la topología. Por ejemplo, si la topología de la porción de TPU de varios hosts es
En el siguiente ejemplo, se establecen los límites de TPU para los tipos de máquinas
ct5lp-hightpu-1t
,ct5lp-hightpu-4t
yct5lp-hightpu-8t
en el clústerdev-cluster
. Por ejemplo, se pueden aprovisionar hasta diez máquinasct5lp-hightpu-4t
, cada una con 4 chips TPU, 112 CPUs virtuales y 192 GiB de memoria.gcloud container clusters create 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 implementación que de como resultado un Pod que solicite recursos TPU. Por ejemplo, con el siguiente manifiesto, se 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: cloud.google.com/gke-tpu-accelerator: tpu-v5-lite-podslice cloud.google.com/gke-tpu-topology: 2x2 cloud.google.com/reservation-name: my-reservation containers: - name: nginx image: nginx:1.14.2 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 la cantidad de aceleradores, en los que sucede lo siguiente: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 TPU, por ejemplo,2x2x1
o4x4x8
.
Para consumir una reserva existente con tu carga de trabajo, especifica una etiqueta adicional en el campo
nodeSelector
: *cloud.google.com/reservation-name
: Define el nombre de la reserva que GKE usa para aprovisionar de forma automática los nodos.En
limits: google.com/tpu
, define la cantidad de chips por nodo.
Archivo
Puedes asignar límites para varios tipos de TPU a través de un archivo de configuración. Mediante la siguiente configuración YAML, se configuran dos tipos de GPUs diferentes:
resourceLimits: - resourceType: 'cpu' maximum: 10000 - resourceType: 'memory' maximum: 10000 - resourceType: 'tpu-v4-podslice' maximum: 32 - resourceType: 'tpu-v5-lite' maximum: 64
Para usar un archivo de configuración de aprovisionamiento automático:
Copia la configuración anterior en un archivo en una ubicación en la que gcloud CLI pueda acceder a ella. Edita los valores de
resourceType
ymaximum
. Agrega tantos valores como necesites pararesourceType
. Guarda el archivo.Ejecuta el siguiente comando para aplicar la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.FILE_NAME
es el nombre del archivo de configuración.
Para obtener más información, consulta la documentación de gcloud container clusters update
.
Ubicaciones de aprovisionamiento automático de nodos
Establece las zonas en las que el aprovisionamiento automático de nodos puede crear grupos de nodos nuevos. Las ubicaciones regionales no se admiten. Las zonas deben pertenecer a la misma región que el clúster, pero no se limitan a las ubicaciones de nodos definidas a nivel de clúster. El cambio de las ubicaciones de aprovisionamiento automático de nodos no afecta a ningún grupo de nodos existente.
Para configurar las ubicaciones en las que el aprovisionamiento automático de nodos puede crear grupos de nodos nuevos, usa gcloud CLI o un archivo de configuración.
gcloud
Ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-locations=ZONE
Reemplaza lo siguiente:
CLUSTER_NAME
es el nombre del clúster.ZONE
es la zona en la que el aprovisionamiento automático de nodos puede crear grupos de nodos nuevos. Para especificar varias zonas, sepáralas con una coma (por ejemplo,ZONE1, ZONE2,...
).
Archivo
Para configurar las ubicaciones en las que el aprovisionamiento automático de nodos puede crear grupos de nodos nuevos, puedes usar un archivo de configuración.
Agrega la siguiente configuración de YAML que establece la nueva ubicación de los grupos de nodos:
autoprovisioningLocations:
- ZONE
Reemplaza ZONE
por la zona en la que el aprovisionamiento automático de nodos puede crear grupos de nodos nuevos. Para especificar varias zonas, agrega más zonas a la lista. Guarda el archivo.
Para usar un archivo de configuración de aprovisionamiento automático:
Crea un archivo de configuración en una ubicación a la que
gcloud CLI
pueda acceder.Aplica la configuración a tu clúster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre del clústerFILE_NAME
: es la ruta de acceso al archivo de configuración.
Nodos más cercanos físicamente con la ubicación compacta
A partir de la versión 1.25 de GKE, el aprovisionamiento automático de nodos admite una política de ubicación compacta. Con la política de ubicación compacta, puedes indicarle a GKE que cree grupos de nodos más cercanos entre sí dentro de una zona.
Para definir una política de ubicación compacta, agrega nodeSelector
a la especificación del 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 ubicación compacta.cloud.google.com/machine-family
es el nombre de la familia de máquinas. Para obtener más información, consulta las familias de máquinas que admiten la ubicación compacta.
En el siguiente ejemplo, se establece una política de ubicación compacta con un identificador de grupo ubicación de placement-group-1
y una familia de máquinas de c2
:
apiVersion: v1
kind: Pod
metadata:
...
spec:
...
nodeSelector:
cloud.google.com/gke-placement-group: placement-group-1
cloud.google.com/machine-family: c2
Si deseas obtener más información, consulta cómo definir la ubicación compacta para nodos de GKE.
Inhabilita el aprovisionamiento automático de nodos
Cuando inhabilitas el aprovisionamiento automático de nodos para un clúster, los grupos de nodos dejan de aprovisionarse de forma automática.
gcloud
A fin de inhabilitar el aprovisionamiento automático de nodos en un clúster, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --no-enable-autoprovisioning
Reemplaza CLUSTER_NAME
por el nombre del clúster.
Archivo
Para inhabilitar el aprovisionamiento automático de nodos mediante la consola de Google Cloud, sigue estos pasos:
Ve a la página de 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 de verificación Habilitar aprovisionamiento automático de nodos.
Haz clic en Guardar cambios.
Marca un grupo de nodos como aprovisionados de forma automática
Después de habilitar el aprovisionamiento automático de nodos en el clúster, puedes especificar los grupos de nodos que se aprovisionarán automáticamente. Un grupo de nodos aprovisionado de forma automática se borra de manera automática cuando no hay cargas de trabajo que lo usen.
Para marcar un grupo de nodos como aprovisionado de forma automática, ejecuta el siguiente comando:
gcloud container node-pools update NODE_POOL_NAME \ --enable-autoprovisioning
Reemplaza NODE_POOL_NAME
por el nombre del grupo de nodos.
Marca un grupo de nodos como no aprovisionado de forma automática
Para marcar un grupo de nodos como no aprovisionado de forma automática, ejecuta el siguiente comando:
gcloud container node-pools update NODE_POOL_NAME \ --no-enable-autoprovisioning
Reemplaza NODE_POOL_NAME
por el nombre del grupo de nodos.
Usa una familia de máquinas personalizadas
A partir de GKE 1.19.7-gke.800, puedes elegir una familia de máquinas para tus cargas de trabajo. La familia de máquinas T2D es compatible con GKE versión 1.22 y versiones posteriores.
A fin de elegir una familia de máquinas para tus cargas de trabajo, realiza una de las siguientes tareas:
- Configura la afinidad de nodos con la clave de
cloud.google.com/machine-family
, el operadorIn
y el valor que es la familia de máquinas deseada (por ejemplo,n2
). - Agrega un
nodeSelector
con la clave decloud.google.com/machine-family
y el valor que es la familia de máquinas deseada.
En este ejemplo, se establece nodeAffinity
en una familia de máquinas n2
:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/machine-family
operator: In
values:
- n2
Después de aplicar los cambios, el aprovisionamiento automático de nodos elige el mejor grupo de nodos con un tipo de máquina dentro de la familia de máquinas especificada. Si se usan varios valores para la expresión de coincidencia, se seleccionará un valor de manera arbitraria.
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.
¿Qué sigue?
- Obtén más información sobre el escalador automático de clústeres.
- Más información sobre los grupos de nodos
- Obtén más información sobre las estrategias de actualización de nodos.