Como consumir recursos por zona reservados


Os clientes podem reservar instâncias do Compute Engine em uma zona específica para garantir que os recursos estejam disponíveis para as cargas de trabalho deles conforme a necessidade. Para mais detalhes sobre como gerenciar reservas, consulte Como reservar recursos por zona do Compute Engine.

Depois de fazer as reservas, crie clusters e pools de nós do Google Kubernetes Engine (GKE) para consumir as instâncias reservadas. O GKE é compatível com os mesmos modos de consumo do Compute Engine:

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

Defina as configurações padrão da gcloud usando um dos métodos a seguir:

  • Use gcloud init se quiser orientações para definir os padrões.
  • Use gcloud config para definir individualmente a região, a zona e o ID do projeto.

Como usar o gcloud init

Se você receber o erro One of [--zone, --region] must be supplied: Please specify location, conclua esta seção.

  1. Execute gcloud init e siga as instruções:

    gcloud init

    Se você estiver usando SSH em um servidor remoto, utilize a sinalização --console-only para impedir que o comando inicie um navegador:

    gcloud init --console-only
  2. Siga as instruções para autorizar a gcloud a usar sua conta do Google Cloud.
  3. Crie uma nova configuração ou selecione uma atual.
  4. Escolha um projeto do Google Cloud.
  5. Escolha uma zona padrão do Compute Engine para clusters zonais ou uma região para clusters regionais ou de Autopilot.

Como usar o gcloud config

  • Defina o ID do projeto padrão:
    gcloud config set project PROJECT_ID
  • Se você estiver trabalhando com clusters zonais, defina a zona do Compute padrão:
    gcloud config set compute/zone COMPUTE_ZONE
  • Se você estiver trabalhando com clusters de Autopilot ou regionais, defina a região do Compute padrão:
    gcloud config set compute/region COMPUTE_REGION
  • Atualize gcloud para a versão mais recente:
    gcloud components update

Como consumir instâncias reservadas no GKE

Ao criar um cluster ou pool de nós, indique o modo de consumo de reserva especificando a sinalização --reservation-affinity.

Como consumir reservas correspondentes

Para consumir automaticamente qualquer reserva correspondente, defina a sinalização de afinidade de reserva como --reservation-affinity=any.

No modo de consumo de reserva any, os nós primeiro usam a capacidade de qualquer reserva correspondente na mesma zona e, se ela for insuficiente, cumprem o restante do pool geral de recursos do Compute Engine. Consulte Como funcionam as reservas para saber mais detalhes sobre como o Compute Engine faz a correspondência das reservas.

Se quiser criar uma reserva e instâncias para consumir qualquer reserva, siga estas etapas:

  1. Crie uma reserva de três instâncias de VM:

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

    Substitua:

    • RESERVATION_NAME: o nome da reserva a ser criada.
    • MACHINE_TYPE: o tipo de máquina (somente nome) a ser usado para a reserva. Por exemplo, n1-standard-2.
  2. Verifique se a reserva foi criada corretamente:

    gcloud compute reservations describe RESERVATION_NAME
    

    Substitua RESERVATION_NAME pelo nome da reserva que você acabou de criar.

  3. Crie um cluster com um nó para consumir qualquer reserva correspondente:

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

    Substitua:

    • CLUSTER_NAME: o nome do cluster a ser criado.
    • MACHINE_TYPE: o tipo de máquina (somente nome) a ser usado no cluster. Exemplo:n1-standard-2
  4. Crie um pool de nós com três nós para consumir qualquer reserva correspondente:

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

    Substitua:

    • NODEPOOL_NAME: o nome do pool de nós a ser criado;
    • CLUSTER_NAME: o nome do cluster criado anteriormente;
    • MACHINE_TYPE: o tipo de máquina (somente nome) a ser usado no pool de nós. Exemplo:n1-standard-2

O número total de nós é quatro, o que excede a capacidade da reserva. Assim, três dos nós consomem a reserva, e o último nó utiliza o pool geral de recursos do Compute Engine.

Como consumir uma reserva específica

Para consumir uma reserva específica, defina a sinalização de afinidade de reserva como --reservation-affinity=specific e informe o nome dessa reserva. Nesse modo, as instâncias precisam usar a capacidade da reserva especificada na zona. A solicitação gerará uma falha se a reserva não tiver capacidade suficiente.

Se quiser criar uma reserva e instâncias para consumir uma reserva específica, siga estas etapas:

  1. Crie uma reserva específica de três instâncias de VM:

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

    Substitua:

    • RESERVATION_NAME: o nome da reserva a ser criada.
    • MACHINE_TYPE: o tipo de máquina (somente nome) a ser usado para a reserva. Por exemplo, n1-standard-2.
  2. Crie um cluster com um nó para consumir qualquer reserva correspondente:

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

    Substitua:

    • CLUSTER_NAME: o nome do cluster a ser criado.
    • MACHINE_TYPE: o tipo de máquina (somente nome) a ser usado no cluster. Exemplo:n1-standard-2
    • RESERVATION_NAME: o nome da reserva a ser consumida.
  3. Crie um pool de nós com dois nós para consumir qualquer reserva correspondente:

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

    Substitua:

    • NODEPOOL_NAME: o nome do pool de nós a ser criado;
    • CLUSTER_NAME: o nome do cluster criado anteriormente;
    • MACHINE_TYPE: o tipo de máquina (somente nome) a ser usado no pool de nós. Exemplo:n1-standard-2
    • RESERVATION_NAME: o nome da reserva a ser consumida.

Outras considerações sobre o consumo de uma reserva específica

Quando um pool de nós é criado com uma afinidade específica de reserva, incluindo pools padrão na criação do cluster, o tamanho dele é limitado à capacidade da reserva específica durante todo o ciclo de vida do pool. Isso afeta os seguintes recursos do GKE:

  • Cluster com várias zonas: em clusters regionais ou de várias zonas, os nós de um pool podem se estender por várias zonas. Como as reservas são exclusivas de uma zona, é necessário ter várias reservas. Para ter um pool de nós que consuma a reserva desses clusters, crie uma reserva específica com exatamente os mesmos nome e propriedades de máquina em cada zona do pool.
  • Escalonamento automático de upgrade/sobrecarga de cluster: se você não tiver capacidade extra na reserva específica, os upgrades dinâmicos ou o escalonamento automático do pool de nós poderão falhar, já que ambos exigem a criação de mais instâncias. para criar um anexo da VLAN de monitoramento. Para resolver isso, altere o tamanho da reserva ou libere alguns dos seus recursos limitados.

Como criar nós sem consumir reservas

Para evitar expressamente o consumo de recursos de qualquer reserva, defina a afinidade como --reservation-affinity=none.

  1. Crie um cluster para consumir qualquer reserva correspondente:

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

    Substitua CLUSTER_NAME pelo nome do cluster a ser criado.

  2. Crie um pool de nós para consumir qualquer reserva correspondente:

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

    Substitua:

    • NODEPOOL_NAME: o nome do pool de nós a ser criado;
    • CLUSTER_NAME: o nome do cluster criado anteriormente;

Limpeza

Para evitar cobranças dos recursos usados nesta página na conta do Google Billing, siga estas etapas:

  1. Exclua os clusters criados executando o seguinte comando para cada um dos clusters:

    gcloud container clusters delete CLUSTER_NAME
    
  2. Exclua as reservas criadas executando o seguinte comando para cada uma das reservas:

    gcloud compute reservations delete RESERVATION_NAME
    

A seguir