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, acesse Como reservar recursos por zona do Compute Engine.

Depois de fazer as reservas, crie clusters e pools de nós do 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.

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 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

É possível especificar o modo de consumo de reserva usando --reservation-affinity ao criar um cluster ou pool de nós.

Como consumir reservas correspondentes

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

Nesse modo, primeiro os nós usam a capacidade de qualquer reserva correspondente na mesma zona e, se ela for insuficiente, suprem a necessidade restante no 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:

gcloud

  1. Crie uma reserva de três VMs:

    gcloud compute reservations create res1 --machine-type=n1-standard-2 \
     --vm-count=3
    
  2. Verifique se a reserva foi criada corretamente:

    gcloud compute reservations describe res1
    
  3. Crie um cluster para consumir qualquer reserva correspondente:

    gcloud container clusters create cluster1 --machine-type=n1-standard-2 \
     --num-nodes=1 --reservation-affinity=any
    
  4. Crie um pool de nós para consumir qualquer reserva correspondente:

    gcloud container node-pools create np1 --cluster cluster1 \
     --machine-type=n1-standard-2 --num-nodes=3 --reservation-affinity=any
    

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:

gcloud

  1. Crie uma reserva específica de três VMs:

    gcloud compute reservations create res2 --machine-type=n1-standard-2 \
     --vm-count=3 --require-specific-reservation
    
  2. Crie um cluster para consumir qualquer reserva correspondente:

    gcloud container clusters create cluster2 --machine-type=n1-standard-2 \
     --reservation-affinity specific --reservation=res2 --num-nodes 1
    
  3. Crie um pool de nós para consumir qualquer reserva correspondente:

    gcloud container node-pools create np2 --cluster cluster2 \
     --machine-type=n1-standard-2 --reservation-affinity specific \
     --reservation=res2 --num-nodes 2
    

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.

Upgrade dinâmico/escalonamento automático do 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 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.

gcloud

  1. Crie um cluster para consumir qualquer reserva correspondente:

    gcloud container clusters create cluster3 --reservation-affinity=none
    
  2. Crie um pool de nós para consumir qualquer reserva correspondente:

    gcloud container node-pools create np3 --cluster cluster3 \
     --reservation-affinity=none
    

Limpar

Para excluir os clusters criados, execute os seguintes comandos:

gcloud container clusters delete cluster1
gcloud container clusters delete cluster2
gcloud container clusters delete cluster3

Para excluir as reservas, execute os seguintes comandos:

gcloud compute reservations delete res1
gcloud compute reservations delete res2

A seguir