Consume recursos zonales reservados


Los clientes pueden reservar instancias de Compute Engine de una zona específica a fin de garantizar que estén disponibles los recursos para sus cargas de trabajo cuando sea necesario. Para obtener más información sobre cómo administrar las reservas, consulta Reserva recursos zonales de Compute Engine.

Después de crear las reservas, puedes crear clústeres y grupos de nodos de Google Kubernetes Engine (GKE) para consumir las instancias reservadas. GKE admite los mismos modos de consumo que Compute Engine, que se cubren en las siguientes secciones:

Antes de comenzar

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

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

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

Usa gcloud init

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

  1. Ejecuta gcloud init y sigue las instrucciones:

    gcloud init

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

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

Usa gcloud config

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

Consume instancias reservadas en GKE

Cuando creas un clúster o grupo de nodos, puedes especificar la marca --reservation-affinity para indicar el modo de consumo de reserva.

Consume cualquier reserva que coincida

Para consumir automáticamente cualquier reserva que coincida, configura la marca de afinidad de la reserva como --reservation-affinity=any.

En el modo de consumo de reserva any, los nodos consumen primero la capacidad de las reservas coincidentes de la misma zona y, si no es suficiente, consumen el resto del grupo de recursos generales de Compute Engine. Consulta Cómo funcionan las reservas para obtener detalles sobre cómo Compute Engine hace coincidir las reservas.

Para crear una reserva y unas instancias que consuman cualquier reserva, sigue estos pasos:

  1. Crea una reserva de tres instancias de VM:

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE --vm-count=3
    

    Reemplaza lo siguiente:

    • RESERVATION_NAME: Es el nombre de la reserva que se creará.
    • MACHINE_TYPE: El tipo de máquina (solo nombre) que se usará para la reserva. Por ejemplo, n1-standard-2.
  2. Verifica que se haya creado correctamente la reserva:

    gcloud compute reservations describe RESERVATION_NAME
    

    Reemplaza RESERVATION_NAME por el nombre de la reserva que acabas de crear.

  3. Crea un clúster que tenga un nodo para que consuma cualquier reserva que coincida:

    gcloud container clusters create CLUSTER_NAME \
        --machine-type=MACHINE_TYPE --num-nodes=1 \
        --reservation-affinity=any
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: es el nombre del clúster que se creará.
    • MACHINE_TYPE: El tipo de máquina (solo nombre) que se usará para el clúster. Por ejemplo n1-standard-2.
  4. Crea un grupo de nodos con tres nodos para consumir cualquier reserva coincidente:

    gcloud container node-pools create NODEPOOL_NAME \
        --cluster CLUSTER_NAME --num-nodes=3 \
        --machine-type=MACHINE_TYPE --reservation-affinity=any
    

    Reemplaza lo siguiente:

    • NODEPOOL_NAME: el nombre del grupo de nodos que se creará.
    • CLUSTER_NAME: es el nombre del clúster que creaste antes.
    • MACHINE_TYPE: El tipo de máquina (solo nombre) que se usará para el grupo de nodos. Por ejemplo n1-standard-2.

La cantidad total de nodos es 4, lo que excede la capacidad de la reserva. Por lo tanto, 3 de los nodos consumen la reserva, mientras que el último usa la capacidad del grupo de recursos generales de Compute Engine.

Consume una reserva específica

Para consumir una reserva específica, configura la marca de afinidad de reserva como --reservation-affinity=specific y proporciona el nombre de reserva específico. En este modo, las instancias deben consumir la capacidad de la reserva especificada de la zona. La solicitud falla si la reserva no tiene capacidad suficiente.

Para crear una reserva y unas instancias que consuman una reserva específica, haz lo siguiente:

  1. Crea una reserva específica de tres instancias de VM:

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE --vm-count=3 \
        --require-specific-reservation
    

    Reemplaza lo siguiente:

    • RESERVATION_NAME: Es el nombre de la reserva que se creará.
    • MACHINE_TYPE: El tipo de máquina (solo nombre) que se usará para la reserva. Por ejemplo, n1-standard-2.
  2. Crea un clúster que tenga un nodo para que consuma cualquier reserva que coincida:

    gcloud container clusters create CLUSTER_NAME \
        --machine-type=MACHINE_TYPE --num-nodes=1 \
        --reservation-affinity=specific --reservation=RESERVATION_NAME
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: es el nombre del clúster que se creará.
    • MACHINE_TYPE: El tipo de máquina (solo nombre) que se usará para el clúster. Por ejemplo n1-standard-2.
    • RESERVATION_NAME: es el nombre de la reserva que se consumirá.
  3. Crea un grupo de nodos con dos nodos para consumir cualquier reserva coincidente:

    gcloud container node-pools create NODEPOOL_NAME \
        --cluster CLUSTER_NAME --num-nodes=2 \
        --machine-type=MACHINE_TYPE \
        --reservation-affinity=specific --reservation=RESERVATION_NAME
    

    Reemplaza lo siguiente:

    • NODEPOOL_NAME: el nombre del grupo de nodos que se creará.
    • CLUSTER_NAME: es el nombre del clúster que creaste antes.
    • MACHINE_TYPE: El tipo de máquina (solo nombre) que se usará para el grupo de nodos. Por ejemplo n1-standard-2.
    • RESERVATION_NAME: es el nombre de la reserva que se consumirá.

Consideraciones adicionales sobre el consumo de reservas específicas

Cuando se crea un grupo de nodos con afinidad de reserva específica, incluidos los grupos de nodos predeterminados generados durante la creación de clústeres, su tamaño se limita a la capacidad de la reserva específica para toda la vida útil del grupo de nodos. Esto afecta las siguientes funciones de GKE:

  • Clúster con varias zonas: En clústeres regionales o multizonales, los nodos de un grupo de nodos pueden abarcar varias zonas. Dado que las reservas son de una sola zona, se necesitan varias reservas. Para crear un grupo de nodos que consuma una reserva específica de estos clústeres, debes crear una reserva específica que tenga exactamente el mismo nombre y las mismas propiedades de máquina en cada zona del grupo de nodos.
  • Ajuste de escala automático o actualización de aumento del clúster: Si no tienes capacidad adicional en la reserva específica, las actualizaciones de aumento o el ajuste de escala automático del grupo de nodos pueden fallar, ya que ambos requieren crear instancias adicionales. Para solucionar este problema, puedes cambiar el tamaño de la reserva o liberar algunos de sus recursos limitados.

Crea nodos sin consumir reservas

Para evitar el consumo de recursos de cualquier reserva, configura la afinidad como --reservation-affinity=none.

  1. Crea un clúster para que no consuma ninguna reserva:

    gcloud container clusters create CLUSTER_NAME --reservation-affinity=none
    

    Reemplaza CLUSTER_NAME por el nombre del clúster que deseas crear.

  2. Crea un grupo de nodos para que no consuma ninguna reserva:

    gcloud container node-pools create NODEPOOL_NAME \
        --cluster CLUSTER_NAME \
        --reservation-affinity=none
    

    Reemplaza lo siguiente:

    • NODEPOOL_NAME: el nombre del grupo de nodos que se creará.
    • CLUSTER_NAME: es el nombre del clúster que creaste antes.

Realice una limpieza

Para evitar que se generen cargos en tu cuenta de Facturación de Cloud por los recursos que se usaron en esta página, sigue estos pasos:

  1. Ejecuta el siguiente comando para cada uno de los clústeres a fin de borrar los clústeres que creaste:

    gcloud container clusters delete CLUSTER_NAME
    
  2. Ejecuta el siguiente comando para cada una de las reservas a fin de borrar las reservas que creaste:

    gcloud compute reservations delete RESERVATION_NAME
    

¿Qué sigue?