Usa el aprovisionamiento automático de nodos

En esta página, se explica cómo usar la característica de aprovisionamiento automático de nodos de Google Kubernetes Engine.

Descripción general

El aprovisionamiento automático de nodos es un mecanismo del escalador automático del clúster que administra de forma automática una lista de grupos de nodos por cuenta del usuario. Sin el aprovisionamiento automático de nodos, el escalador automático del clúster tiene en consideración solo a los nodos nuevos del conjunto de grupos de nodos que elige el usuario. Con el aprovisionamiento automático de nodos, se pueden crear y borrar grupos de nodos nuevos de forma automática.

Antes de comenzar

Sigue estos pasos a fin de prepararte para esta tarea:

  • Asegúrate de que habilitaste la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Asegúrate de que instalaste el SDK de Cloud.
  • Establece tu ID del proyecto predeterminado:
    gcloud config set project [PROJECT_ID]
  • Si trabajas con clústeres zonales, establece tu zona de procesamiento predeterminada:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Si trabajas con clústeres regionales, establece tu región de procesamiento predeterminada:
    gcloud config set compute/region [COMPUTE_REGION]
  • Actualiza gcloud a la versión más reciente:
    gcloud components update

Operación

El escalador automático de clúster funciona por grupo de nodos. Con el aprovisionamiento automático de nodos, el conjunto de grupos de nodos escalados de forma automática se puede extender de manera automática según las especificaciones de pods que no son programables.

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

Límites a los recursos

El aprovisionamiento automático de nodos requiere límites superiores para la CPU y la memoria. Establecer límites para las GPU es opcional. Los límites se verifican en todos los nodos del clúster. De forma predeterminada, los grupos de nodos aprovisionados de manera automática están limitados a 1,000 nodos.

El escalador automático de clúster no crea nodos nuevos si al hacerlo se excede uno de los límites definidos. Sin embargo, si ya se superaron los límites, ningún nodo se borra de forma automática.

Separación de la carga de trabajo

Si hay pods pendientes con afinidades y tolerancias de nodo que indican una separación de la carga de trabajo, el aprovisionamiento automático de nodo puede aprovisionar nodos con etiquetas y taints coincidentes.

En este momento, el aprovisionamiento automático de nodos considera crear grupos de nodos de los nodos con etiquetas y taints si se cumplen con todas las condiciones a continuación:

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

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

  • Con un campo nodeSelector
  • Mediante un campo nodeAffinity con un operador In y solo un valor

El ejemplo siguiente es un extracto de una especificación de pod que se interpreta como una solicitud de separación de carga de trabajo. El pod tiene una tolerancia para nodos con etiquetas con una clave foo y un valor de bar. En este ejemplo, se usa nodeAffinity para la selección de nodos:

spec:
  tolerations:
  - key: foo
    operator: Equal
    value: bar
    effect: NoSchedule
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: foo
            operator: In
            values:
            - bar

Si este pod existe, se tienen en cuenta para la creación los nodos con taint key=value:NoSchedule y etiqueta key=value.

En el ejemplo debajo, se usa nodeSelector y con el mismo efecto:

spec:
  tolerations:
  - key: foo
    operator: Equal
    value: bar
    effect: NoSchedule
  nodeSelector:
    foo: bar

Borra grupos de nodos aprovisionados de modo automático

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

Tipos de máquina admitidos

En la actualidad, el aprovisionamiento automático de nodos solo considerará crear grupos de nodos con máquinas con hasta 16 CPU virtuales. Esta limitación quedará sin efecto en el futuro.

Limitaciones de escalabilidad

En este momento, estamos probamos el aprovisionamiento automático de nodos en clústeres con hasta 100 nodos. No recomendamos usar la característica en clústeres más grandes. Aparte de esto, se aplican los límites de escalabilidad del escalador automático de clúster.

Límite sobre el número de grupo de nodos aprovisionados de forma automática

No puede haber más de 15 grupos de nodos aprovisionados de modo automático en un clúster. Si se alcanza el límite, no se crea ningún grupo de nodos de aprovisionamiento automático nuevo.

Habilita el aprovisionamiento automático de nodos

gcloud

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

gcloud beta container clusters update [CLUSTER_NAME] --enable-autoprovisioning \
        --max-cpu 10 --max-memory 64

En este comando, encontrarás los elementos siguientes:

  • --enable-autoprovisioning, que indica que un nodo de aprovisionamiento automático está habilitado.
  • --max-cpu, que especifica el número máximo de núcleos en un clúster.
  • --max-memory, que especifica el número máximo de gigabytes de memoria en el clúster.

Configura los límites de GPU

gcloud

Cuando se usa el aprovisionamiento automático de nodos con GPU, se recomienda establecer el límite de la cantidad total de cada tipo de GPU en el clúster. Para hacerlo, ejecuta el comando siguiente:

gcloud beta container clusters update [CLUSTER_NAME] --enable-autoprovisioning \
        --max-cpu 10 --max-memory 64 --max-accelerator type=nvidia-tesla-k80,count=4

En este comando, encontrarás los elementos siguientes:

  • --enable-autoprovisioning, que indica que un nodo de aprovisionamiento automático está habilitado.
  • --max-cpu, que especifica el número máximo de núcleos en un clúster.
  • --max-memory, que especifica el número máximo de gigabytes de memoria en el clúster.
  • --max-accelerator, que especifica un número máximo de aceleradores de GPU nvidia-tesla-k80.

De manera alternativa, puedes cargar límites desde un archivo de configuración:

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

En este comando: * --enable-autoprovisioning indica que el aprovisionamiento automático de nodos está habilitado. * --autoprovisioning-config-file especifica el archivo con límites de recursos. Configuración de ejemplo:

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

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

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

gcloud beta container clusters update [CLUSTER_NAME] --no-enable-autoprovisioning

En este comando, encontrarás el elemento siguiente:

  • --no-enable-autoprovisioning, que indica que el aprovisionamiento automático de nodos está inhabilitado.

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

Puedes marcar cualquier grupo de nodos en el clúster como aprovisionados de forma automática. Esto podría causar que el grupo de nodos se borre de forma automática cuando no esté más en uso.

gcloud

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

gcloud beta container node-pool update [NODE_POOL_NAME] --enable-autoprovisioning

En este comando, encontrarás el elemento siguiente:

  • --enable-autoprovisioning, que indica que el grupo de nodos está marcado como aprovisionado de forma automática.

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

Puedes marcar un grupo de nodos como no aprovisionado de forma automática

gcloud

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

gcloud beta container node-pool update [NODE_POOL_NAME] --no-enable-autoprovisioning

En este comando, encontrarás el elemento siguiente:

  • --no-enable-autoprovisioning, que indica que el grupo de nodos está marcado como no aprovisionado de forma automática.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...