Esta página mostra como consumir recursos zonais do Compute Engine reservados em cargas de trabalho específicas do GKE. Estas reservas de capacidade dão-lhe um elevado nível de garantia de que o hardware específico está disponível para as suas cargas de trabalho.
Certifique-se de que já conhece os conceitos de reservas do Compute Engine, como tipos de consumo, tipos de partilha e tipos de aprovisionamento. Para ver detalhes, consulte o artigo Reservas de recursos zonais do Compute Engine.
Esta página destina-se às seguintes pessoas:
- Operadores de aplicações que implementam cargas de trabalho que devem ser executadas assim que possível, normalmente com hardware especializado, como GPUs.
- Administradores da plataforma que querem obter um elevado nível de garantia de que as cargas de trabalho são executadas em hardware otimizado que cumpre os requisitos da aplicação e da organização.
Acerca do consumo de reservas no GKE
As reservas de capacidade do Compute Engine permitem-lhe aprovisionar configurações de hardware específicas em Google Cloud zonas, imediatamente ou num momento futuro especificado. Em seguida, pode consumir esta capacidade reservada no GKE.
Consoante o modo de funcionamento do GKE, pode consumir os seguintes tipos de reservas:
- Modo de condução autónoma: apenas reservas específicas.
- Modo padrão: reservas específicas ou qualquer reserva correspondente.
Para ativar o consumo de reservas para criar os seus recursos, tem de especificar uma
afinidade de reserva, como any
ou specific
.
Opções de consumo de reservas no GKE
O GKE permite-lhe consumir reservas diretamente em cargas de trabalho individuais através da utilização de nodeSelectors do Kubernetes no manifesto da carga de trabalho ou da criação de node pools no modo Standard que consomem a reserva. Esta página descreve a abordagem de selecionar diretamente reservas em recursos individuais.
Também pode configurar o GKE para consumir reservas durante as operações de escalabilidade que criam novos nós através de classes de computação personalizadas. As classes de computação personalizadas permitem que os administradores da plataforma definam uma hierarquia de configurações de nós para o GKE dar prioridade durante o dimensionamento de nós, de modo que as cargas de trabalho sejam executadas no hardware selecionado.
Pode especificar reservas na configuração da classe de computação personalizada para que qualquer carga de trabalho do GKE que use essa classe de computação personalizada indique ao GKE que consuma as reservas especificadas para essa classe de computação.
Para saber mais, na página "Acerca das classes de computação personalizadas", consulte a secção Consuma reservas do Compute Engine.
Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ative a API Google Kubernetes Engine
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize-a. Se instalou anteriormente a CLI gcloud, execute o comando
gcloud components update
para obter a versão mais recente. As versões anteriores da CLI gcloud podem não suportar a execução dos comandos neste documento.
Use reservas de capacidade em clusters do Autopilot
Os clusters do Autopilot suportam o consumo de recursos de reservas de capacidade do Compute Engine no mesmo projeto ou num projeto partilhado. Tem de definir a propriedade de tipo de consumo da reserva de destino como específica e tem de selecionar explicitamente essa reserva no seu manifesto. Se não especificar explicitamente uma reserva, os clusters do Autopilot não consomem reservas. Para saber mais sobre os tipos de consumo de reservas, consulte o artigo Como funcionam as reservas.
Estas reservas são elegíveis para descontos por utilização garantida flexíveis de computação. Tem de usar a classe de computação Accelerator
ou a classe de computação Performance
para consumir reservas de capacidade.
Antes de começar, crie um cluster do Autopilot com as seguintes versões:
- Para consumir aceleradores reservados, como GPUs: 1.28.6-gke.1095000 ou posterior
- Para executar pods numa série de máquinas específica e com cada pod no seu próprio nó: 1.28.6-gke.1369000 e posterior ou versão 1.29.1-gke.1575000 e posterior.
Crie reservas de capacidade para o Autopilot
Os pods do Autopilot podem consumir reservas que tenham a propriedade do tipo de consumo específica no mesmo projeto que o cluster ou numa reserva partilhada de um projeto diferente. Pode consumir o hardware reservado referenciando explicitamente essa reserva no seu manifesto. Pode usar reservas no Autopilot para os seguintes tipos de hardware:
Qualquer um dos seguintes tipos de GPUs:
nvidia-gb200
: NVIDIA GB200 (pré-visualização)nvidia-b200
: NVIDIA B200 (180GB)nvidia-h200-141gb
: NVIDIA H200 (141GB)nvidia-h100-mega-80gb
: NVIDIA H100 Mega (80GB)nvidia-h100-80gb
: NVIDIA H100 (80GB)nvidia-a100-80gb
: NVIDIA A100 (80GB)nvidia-tesla-a100
: NVIDIA A100 (40GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
Qualquer um dos seguintes tipos de TPUs:
tpu-v6e-slice
: fatia da TPU v6etpu-v5p-slice
: fatia da TPU v5ptpu-v5-lite-podslice
: TPU v5 lite podslicetpu-v5-lite-device
: dispositivo TPU v5 litetpu-v4-lite-device
: dispositivo TPU v4 litetpu-v4-podslice
: TPU v4 podslicetpu-v3-device
: dispositivo TPU v3tpu-v3-slice
: TPU v3 podslice
Para criar uma reserva de capacidade, consulte os seguintes recursos. A reserva tem de cumprir os seguintes requisitos:
- Os tipos de máquinas, os tipos de aceleradores e as quantidades de aceleradores correspondem ao que as suas cargas de trabalho vão consumir.
A reserva usa o tipo de consumo específico. Por exemplo, na CLI gcloud, tem de especificar a flag
--require-specific-reservation
quando cria a reserva.
O GKE anexa automaticamente todos os SSDs locais da reserva específica selecionada ao seu nó. Não tem de selecionar SSDs locais individuais no manifesto da carga de trabalho. Por exemplo, se a reserva que selecionar incluir dois SSDs locais, os nós que o GKE cria a partir dessa reserva têm dois SSDs locais anexados.
Use uma reserva específica no mesmo projeto no piloto automático
Esta secção mostra como consumir uma reserva de capacidade específica que se encontra no mesmo projeto que o seu cluster. Pode usar o kubectl ou o Terraform.
kubectl
Guarde o seguinte manifesto como
specific-autopilot.yaml
. Este manifesto tem seletores de nós que consomem uma reserva específica. Pode usar instâncias de VM ou aceleradores.Instâncias de VM
apiVersion: v1 kind: Pod metadata: name: specific-same-project-pod spec: nodeSelector: cloud.google.com/compute-class: Performance cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 2 memory: "4Gi"
Substitua o seguinte:
MACHINE_SERIES
: uma série de máquinas que contém o tipo de máquina das VMs na sua reserva de capacidade específica. Por exemplo, se a sua reserva for parac3-standard-4
tipos de máquinas, especifiquec3
no campoMACHINE_SERIES
.RESERVATION_NAME
: o nome da reserva de capacidade do Compute Engine.
Aceleradores de GPU
apiVersion: v1 kind: Pod metadata: name: specific-same-project-pod spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: nvidia.com/gpu: QUANTITY
Substitua o seguinte:
ACCELERATOR
: o acelerador que reservou na reserva de capacidade do Compute Engine. Tem de ser um dos seguintes valores:nvidia-gb200
: NVIDIA GB200 (pré-visualização)nvidia-b200
: NVIDIA B200 (180GB)nvidia-h200-141gb
: NVIDIA H200 (141GB)nvidia-h100-mega-80gb
: NVIDIA H100 Mega (80GB)nvidia-h100-80gb
: NVIDIA H100 (80GB)nvidia-a100-80gb
: NVIDIA A100 (80GB)nvidia-tesla-a100
: NVIDIA A100 (40GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
RESERVATION_NAME
: o nome da reserva de capacidade do Compute Engine.QUANTITY
: o número de GPUs a associar ao contentor. Tem de ser uma quantidade suportada para a GPU especificada, conforme descrito em Quantidades de GPUs suportadas.
Aceleradores de TPU
apiVersion: v1 kind: Pod metadata: name: specific-same-project-pod spec: nodeSelector: cloud.google.com/gke-tpu-accelerator: ACCELERATOR cloud.google.com/gke-tpu-topology: TOPOLOGY cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: google.com/tpu: QUANTITY
Substitua o seguinte:
ACCELERATOR
: o acelerador que reservou na reserva de capacidade do Compute Engine. Tem de ser um dos seguintes valores:tpu-v6e-slice
: fatia da TPU v6etpu-v5p-slice
: fatia da TPU v5ptpu-v5-lite-podslice
: TPU v5 lite podslicetpu-v5-lite-device
: dispositivo TPU v5 litetpu-v4-lite-device
: dispositivo TPU v4 litetpu-v4-podslice
: TPU v4 podslicetpu-v3-device
: dispositivo TPU v3tpu-v3-slice
: TPU v3 podslice
TOPOLOGY
: a topologia da TPU.RESERVATION_NAME
: o nome da reserva de capacidade do Compute Engine.QUANTITY
: o número de TPUs a associar ao contentor. Tem de estar alinhado com a topologia da TPU.
Implemente o agrupamento:
kubectl apply -f specific-autopilot.yaml
O Autopilot usa a capacidade reservada na reserva especificada para aprovisionar um novo nó para colocar o pod.
Terraform
Para consumir uma reserva específica no mesmo projeto com instâncias de VM usando o Terraform, consulte o seguinte exemplo:
Para consumir uma reserva específica no mesmo projeto com a classe de computação do acelerador usando o Terraform, consulte o seguinte exemplo:
Para saber mais sobre a utilização do Terraform, consulte o artigo Compatibilidade do Terraform com o GKE.
Use uma reserva partilhada específica no piloto automático
Esta secção usa os seguintes termos:
- Projeto proprietário: o projeto que detém a reserva e a partilha com outros projetos.
- Projeto do consumidor: o projeto que executa as cargas de trabalho que consomem a reserva partilhada.
Para consumir uma reserva partilhada, tem de conceder ao agente do serviço GKE acesso à reserva no projeto que detém a reserva. Faça o seguinte:
Crie uma função de IAM personalizada que contenha a autorização
compute.reservations.list
no projeto proprietário:gcloud iam roles create ROLE_NAME \ --project=OWNER_PROJECT_ID \ --permissions='compute.reservations.list'
Substitua o seguinte:
ROLE_NAME
: um nome para a sua nova função.OWNER_PROJECT_ID
: o ID do projeto do projeto que detém a reserva de capacidade.
Conceda ao agente de serviço do GKE no projeto do consumidor acesso à lista de reservas partilhadas no projeto proprietário:
gcloud projects add-iam-policy-binding OWNER_PROJECT_ID \ --project=OWNER_PROJECT_ID \ --member=serviceAccount:service-CONSUMER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role='projects/OWNER_PROJECT_ID/roles/ROLE_NAME'
Substitua
CONSUMER_PROJECT_NUMBER
pelo número numérico do projeto de consumidor. Para encontrar este número, consulte o artigo Identificar projetos na documentação do Resource Manager.Guarde o seguinte manifesto como
shared-autopilot.yaml
. Este manifesto tem nodeSelectors que indicam ao GKE para consumir uma reserva partilhada específica.Instâncias de VMs
apiVersion: v1 kind: Pod metadata: name: performance-pod spec: nodeSelector: cloud.google.com/compute-class: Performance cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-project: OWNER_PROJECT_ID cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 2 memory: "4Gi"
Substitua o seguinte:
MACHINE_SERIES
: uma série de máquinas que contém o tipo de máquina das VMs na sua reserva de capacidade específica. Por exemplo, se a sua reserva for parac3-standard-4
tipos de máquinas, especifiquec3
no campoMACHINE_SERIES
.RESERVATION_NAME
: o nome da reserva de capacidade do Compute Engine.OWNER_PROJECT_ID
: o ID do projeto do projeto que detém a reserva de capacidade.
Aceleradores de GPU
apiVersion: v1 kind: Pod metadata: name: specific-same-project-pod spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-project: OWNER_PROJECT_ID cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: nvidia.com/gpu: QUANTITY
Substitua o seguinte:
ACCELERATOR
: o acelerador que reservou na reserva de capacidade do Compute Engine. Tem de ser um dos seguintes valores:nvidia-gb200
: NVIDIA GB200 (pré-visualização)nvidia-b200
: NVIDIA B200 (180GB)nvidia-h200-141gb
: NVIDIA H200 (141GB)nvidia-h100-mega-80gb
: NVIDIA H100 Mega (80GB)nvidia-h100-80gb
: NVIDIA H100 (80GB)nvidia-a100-80gb
: NVIDIA A100 (80GB)nvidia-tesla-a100
: NVIDIA A100 (40GB)nvidia-l4
: NVIDIA L4nvidia-tesla-t4
: NVIDIA T4
RESERVATION_NAME
: o nome da reserva de capacidade do Compute Engine.OWNER_PROJECT_ID
: o ID do projeto do projeto que detém a reserva de capacidade.QUANTITY
: o número de GPUs a associar ao contentor. Tem de ser uma quantidade suportada para a GPU especificada, conforme descrito em Quantidades de GPUs suportadas.
Aceleradores de TPU
apiVersion: v1 kind: Pod metadata: name: specific-shared-project-pod spec: nodeSelector: cloud.google.com/gke-tpu-accelerator: ACCELERATOR cloud.google.com/gke-tpu-topology: TOPOLOGY cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-project: OWNER_PROJECT_ID cloud.google.com/reservation-affinity: "specific" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: google.com/tpu: QUANTITY
Substitua o seguinte:
ACCELERATOR
: o acelerador que reservou na reserva de capacidade do Compute Engine. Tem de ser um dos seguintes valores:tpu-v6e-slice
: fatia da TPU v6etpu-v5p-slice
: fatia da TPU v5ptpu-v5-lite-podslice
: TPU v5 lite podslicetpu-v5-lite-device
: dispositivo TPU v5 litetpu-v4-lite-device
: dispositivo TPU v4 litetpu-v4-podslice
: TPU v4 podslicetpu-v3-device
: dispositivo TPU v3tpu-v3-slice
: TPU v3 podslice
TOPOLOGY
: a topologia da TPU.RESERVATION_NAME
: o nome da reserva de capacidade do Compute Engine.OWNER_PROJECT_ID
: o ID do projeto do projeto que detém a reserva de capacidade.QUANTITY
: o número de TPUs a associar ao contentor. Tem de estar alinhado com a topologia da TPU.
Implemente o agrupamento:
kubectl apply -f shared-autopilot.yaml
O Autopilot usa a capacidade reservada na reserva especificada para aprovisionar um novo nó para colocar o pod.
Consuma um bloco de reserva específico no piloto automático
Esta secção mostra como consumir um bloco de reserva de capacidade específico que se encontra
no mesmo projeto que o cluster ou num projeto partilhado.
Esta funcionalidade só está disponível para aceleradores específicos.
Pode usar o kubectl
para configurar o seu Pod de forma a consumir o bloco de reserva.
Guarde o seguinte manifesto como
reservation-block-autopilot.yaml
. Este manifesto tem seletores de nós que consomem uma reserva específica.Projeto local
apiVersion: v1 kind: Pod metadata: name: specific-same-project-pod spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific" cloud.google.com/reservation-blocks: RESERVATION_BLOCKS_NAME containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: nvidia.com/gpu: QUANTITY
Substitua o seguinte:
ACCELERATOR
: o acelerador que reservou na reserva de capacidade do Compute Engine. Tem de ser um dos seguintes valores:nvidia-b200
: NVIDIA B200 (180GB)nvidia-h200-141gb
: NVIDIA H200 (141GB)
RESERVATION_NAME
: o nome da reserva de capacidade do Compute Engine.RESERVATION_BLOCKS_NAME
: o nome do bloco de reserva de capacidade do Compute Engine.QUANTITY
: o número de GPUs a associar ao contentor. Tem de ser uma quantidade suportada para a GPU especificada, conforme descrito em Quantidades de GPUs suportadas.
Para reservas pertencentes a um projeto diferente, adicione cloud.google.com/reservation-project: OWNER_PROJECT_ID ao campo
spec.nodeSelector
. SubstituaOWNER_PROJECT_ID
pelo ID do projeto do projeto que detém a reserva de capacidade.Implemente o agrupamento:
kubectl apply -f reservation-block-autopilot.yaml
O Autopilot usa a capacidade reservada no bloco de reserva especificado para aprovisionar um novo nó para colocar o pod.
Consuma um sub-bloco de reserva específico no piloto automático
Esta secção mostra como consumir um sub-bloco de reserva de capacidade específico que se encontra no mesmo projeto que o cluster ou num projeto partilhado.
Guarde o seguinte manifesto ComputeClass como
reservation-sub-block-computeclass.yaml
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: specific-reservation-subblock spec: nodePoolAutoCreation: enabled: true priorities: - gpu: type: ACCELERATOR_TYPE count: ACCELERATOR_COUNT reservations: affinity: Specific specific: - name: RESERVATION_NAME project: RESERVATION_PROJECT_ID reservationBlock: name: RESERVATION_BLOCK_NAME reservationSubBlock: name: RESERVATION_SUB_BLOCK_NAME
Substitua o seguinte:
ACCELERATOR_TYPE
: o acelerador que reservou na reserva de capacidade do Compute Engine. Este valor tem de sernvidia-gb200
.ACCELERATOR_COUNT
: o número de aceleradores a associar a cada nó. Este valor tem de ser uma quantidade suportada para o tipo de acelerador especificado. Para mais informações, consulte o artigo Quantidades de GPUs suportadas.RESERVATION_NAME
: o nome da reserva de capacidade do Compute Engine.RESERVATION_PROJECT_ID
: o ID do projeto do projeto que detém a reserva de capacidade.RESERVATION_BLOCK_NAME
: o nome do bloco de reserva de capacidade do Compute Engine.RESERVATION_SUB_BLOCK_NAME
: o nome do sub-bloco de reserva de capacidade do Compute Engine.
Guarde o seguinte manifesto do agrupamento como
reservation-sub-block-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: reservation-sub-block-pod spec: nodeSelector: cloud.google.com/compute-class: specific-reservation-subblock containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral-storage: "200Gi" limits: nvidia.com/gpu: CONTAINER_GPU_COUNT
Substitua
CONTAINER_GPU_COUNT
pelo número de GPUs a atribuir ao contentor. Este valor tem de ser inferior ou igual ao número de aceleradores que a classe de computação associa a cada nó.Implemente o agrupamento:
kubectl apply -f reservation-sub-block-pod.yaml
O Autopilot usa a capacidade reservada no sub-bloco de reserva especificado para aprovisionar um novo nó para executar o pod.
Resolução de problemas de consumo de reservas no piloto automático
- Certifique-se de que os tipos de máquinas, os tipos de aceleradores, as configurações de SSD local e as quantidades de aceleradores correspondem ao que as suas cargas de trabalho vão consumir. Para ver uma lista completa das propriedades que têm de corresponder, consulte as propriedades de reserva de capacidade do Compute Engine.
- Certifique-se de que a reserva é criada com afinidade específica.
- Quando usar reservas partilhadas, certifique-se de que o agente do serviço do GKE no projeto do consumidor tem autorização para listar reservas partilhadas no projeto do proprietário.
Consumir instâncias reservadas no GKE Standard
Quando cria um cluster ou um conjunto de nós, pode indicar o modo de consumo da reserva especificando a flag --reservation-affinity
.
Consumir quaisquer reservas correspondentes
Pode criar uma reserva e instâncias para consumir qualquer reserva através da CLI gcloud ou do Terraform.
gcloud
Para consumir automaticamente a partir de quaisquer reservas correspondentes, defina a flag de afinidade de reserva como --reservation-affinity=any
. Uma vez que any
é o valor predefinido definido no Compute Engine, pode omitir completamente a flag de afinidade de reserva.
No any
modo de consumo de reservas, os nós usam primeiro a capacidade de todas as reservas de projeto único antes de qualquer reserva partilhada, porque as reservas partilhadas estão mais disponíveis para outros projetos. Para mais informações
sobre como as instâncias são consumidas automaticamente, consulte o artigo
Ordem de consumo.
Crie uma reserva de três instâncias de VM:
gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE --vm-count=3
Substitua o seguinte:
RESERVATION_NAME
: o nome da reserva a criar.MACHINE_TYPE
: o tipo de máquina (apenas o nome) a usar para a reserva. Por exemplo,n1-standard-2
.
Verifique se a reserva foi criada com êxito:
gcloud compute reservations describe RESERVATION_NAME
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
pelo nome do cluster a criar.Crie um node pool 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
pelo nome do conjunto de nós a criar.
O número total de nós é quatro, o que excede a capacidade da reserva. Três dos nós consomem a reserva, enquanto o último nó usa capacidade do conjunto de recursos geral do Compute Engine.
Terraform
Para criar uma reserva de três instâncias de VM com o Terraform, consulte o seguinte exemplo:
Para criar um cluster com um nó para consumir qualquer reserva correspondente usando o Terraform, consulte o seguinte exemplo:
Para criar um node pool com três nós para consumir qualquer reserva correspondente usando o Terraform, consulte o exemplo seguinte:
Para saber mais sobre a utilização do Terraform, consulte o artigo Compatibilidade do Terraform com o GKE.
Consumir uma reserva de projeto único específica
Para consumir uma reserva específica, defina a flag de afinidade de reserva como
--reservation-affinity=specific
e indique o nome da reserva específica. Neste modo, as instâncias têm de usar capacidade da reserva especificada na zona. O pedido falha se a reserva não tiver capacidade suficiente.
Para criar uma reserva e instâncias para consumir uma reserva específica, execute os seguintes passos. Pode usar a CLI gcloud ou o Terraform.
gcloud
Crie uma reserva específica para três instâncias de VM:
gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE --vm-count=3 \ --require-specific-reservation
Substitua o seguinte:
RESERVATION_NAME
: o nome da reserva a criar.MACHINE_TYPE
: o tipo de máquina (apenas o nome) a usar para a reserva. Por exemplo,n1-standard-2
.
Crie um node pool com um único nó para consumir uma reserva de projeto único específica:
gcloud container node-pools create NODEPOOL_NAME \ --cluster CLUSTER_NAME \ --machine-type=MACHINE_TYPE --num-nodes=1 \ --reservation-affinity=specific --reservation=RESERVATION_NAME
Substitua o seguinte:
NODEPOOL_NAME
: o nome do node pool a criar.CLUSTER_NAME
: o nome do cluster que criou.
Terraform
Para criar uma reserva específica através do Terraform, consulte o seguinte exemplo:
Para criar um pool de nós com um único nó para consumir uma reserva de projeto único específica através do Terraform, consulte o seguinte exemplo:
Para saber mais sobre a utilização do Terraform, consulte o artigo Compatibilidade do Terraform com o GKE.
Usar uma reserva partilhada específica
Para criar uma reserva partilhada específica e consumir a reserva partilhada, execute os seguintes passos. Pode usar a CLI gcloud ou o Terraform.
- Siga os passos em Permitir e restringir a criação e a modificação de reservas partilhadas por parte de projetos.
gcloud
Crie uma reserva partilhada específica:
gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE --vm-count=3 \ --zone=ZONE \ --require-specific-reservation \ --project=OWNER_PROJECT_ID \ --share-setting=projects \ --share-with=CONSUMER_PROJECT_IDS
Substitua o seguinte:
RESERVATION_NAME
: o nome da reserva a criar.MACHINE_TYPE
: o nome do tipo de máquina a usar para a reserva. Por exemplo,n1-standard-2
.OWNER_PROJECT_ID
: o ID do projeto do projeto no qual quer criar esta reserva partilhada. Se omitir a flag--project
, o GKE usa o projeto atual como o projeto proprietário por predefinição.CONSUMER_PROJECT_IDS
: uma lista separada por vírgulas dos IDs dos projetos com os quais quer partilhar esta reserva. Por exemplo,project-1,project-2
. Pode incluir 1 a 100 projetos de consumo. Estes projetos têm de estar na mesma organização que o projeto proprietário. Não inclua oOWNER_PROJECT_ID
, porque pode consumir esta reserva por predefinição.
Consumir a reserva partilhada:
gcloud container node-pools create NODEPOOL_NAME \ --cluster CLUSTER_NAME \ --machine-type=MACHINE_TYPE --num-nodes=1 \ --reservation-affinity=specific \ --reservation=projects/OWNER_PROJECT_ID/reservations/RESERVATION_NAME
Substitua o seguinte:
NODEPOOL_NAME
: o nome do node pool a criar.CLUSTER_NAME
: o nome do cluster que criou.
Terraform
Para criar uma reserva partilhada específica com o Terraform, consulte o seguinte exemplo:
Para consumir a reserva partilhada específica com o Terraform, consulte o seguinte exemplo:
Para saber mais sobre a utilização do Terraform, consulte o artigo Compatibilidade do Terraform com o GKE.
Considerações adicionais para o consumo a partir de uma reserva específica
Quando um conjunto de nós é criado com afinidade de reserva específica, incluindo conjuntos de nós predefinidos durante a criação do cluster, o respetivo tamanho é limitado à capacidade da reserva específica durante todo o ciclo de vida do conjunto de nós. Isto afeta as seguintes funcionalidades do GKE:
- Cluster com várias zonas: em clusters regionais ou multizonais, os nós de um conjunto de nós podem abranger várias zonas. Como as reservas são de uma única zona, são necessárias várias reservas. Para criar um node pool que consuma uma reserva específica nestes clusters, tem de criar uma reserva específica com exatamente o mesmo nome e propriedades da máquina em cada zona do node pool.
- Escala automática do cluster e atualizações do node pool: se não tiver capacidade adicional na reserva específica, as atualizações do node pool ou a escala automática do node pool podem falhar, uma vez que ambas as operações requerem a criação de instâncias adicionais. Para resolver esta situação, pode alterar o tamanho da reserva ou libertar alguns dos respetivos recursos limitados.
Consumir reservas de GPU
Para criar um conjunto de nós padrão que consuma uma reserva de GPU ou
que consuma qualquer reserva em que a capacidade esteja numa única zona, tem de
especificar a flag --node-locations
quando adicionar um conjunto de nós. Quando cria um cluster padrão regional ou um cluster padrão multizonal, especificar as localizações dos nós garante que o GKE cria nós apenas numa zona onde tem capacidade de GPU reservada.
Para instruções detalhadas sobre como criar um node pool que usa GPUs, consulte o artigo Crie um node pool de GPU.
Consumir reservas de TPUs
Para criar um node pool padrão que consuma uma reserva de TPU, tem de
especificar a flag --node-locations
quando adicionar um node pool. Quando cria um cluster Standard regional ou um cluster Standard multizonal,
a especificação das localizações dos nós garante que o GKE cria nós apenas
numa zona onde reservou capacidade de TPUs.
As reservas de TPUs diferem de outros tipos de máquinas. Seguem-se os aspetos específicos das TPUs que deve considerar ao criar reservas de TPUs:
- Quando usar TPUs no GKE,
SPECIFIC
é o único valor suportado para a flag--reservation-affinity
.
Para instruções detalhadas sobre como criar um node pool que usa TPUs, consulte o artigo Crie um node pool de TPUs.
Criar nós sem consumir reservas
Para evitar explicitamente o consumo de recursos de quaisquer reservas, defina a afinidade como --reservation-affinity=none
.
Crie um cluster que não consuma nenhuma reserva:
gcloud container clusters create CLUSTER_NAME --reservation-affinity=none
Substitua
CLUSTER_NAME
pelo nome do cluster a criar.Crie um node pool que não consuma nenhuma reserva:
gcloud container node-pools create NODEPOOL_NAME \ --cluster CLUSTER_NAME \ --reservation-affinity=none
Substitua
NODEPOOL_NAME
pelo nome do conjunto de nós a criar.
Seguir as reservas disponíveis entre zonas
Quando usar pools de nós executados em várias zonas com reservas que não são iguais entre zonas, pode usar a flag --location_policy=ANY
. Isto garante que, quando são adicionados novos nós ao cluster, estes são criados na zona que ainda tem reservas não usadas.
Limpar
Para evitar incorrer em cobranças na sua conta do Cloud Billing pelos recursos usados nesta página:
Elimine os clusters que criou executando o seguinte comando para cada um dos clusters:
gcloud container clusters delete CLUSTER_NAME
Elimine as reservas que criou executando o seguinte comando para cada uma das reservas:
gcloud compute reservations delete RESERVATION_NAME
O que se segue?
- Saiba mais sobre como reservar recursos zonais do Compute Engine.
- Saiba mais sobre os conjuntos de nós.
- Saiba mais sobre o escalamento automático de clusters.
- Saiba mais acerca das estratégias de atualização de nós.