Como executar VMs preemptivas

Nesta página, você encontra uma visão geral do suporte de VMs preemptivas no Google Kubernetes Engine.

Visão geral

As VMs preemptivas são instâncias de VM do Google Compute Engine com duração de, no máximo, 24 horas e que não oferecem garantias de disponibilidade. Elas têm um preço mais baixo que as VMs padrão do Compute Engine e oferecem os mesmos tipos de máquinas e opções.

É possível usar VMs preemptivas em clusters ou pools de nós do GKE para executar jobs em lote ou tolerantes a falhas que sejam menos suscetíveis à natureza efêmera e não garantida das VMs preemptivas.

Para saber mais sobre elas, consulte VMs preemptivas na documentação do Compute Engine.

Como as VMs preemptivas funcionam

Quando os clusters ou pools de nós do GKE criam VMs do Compute Engine, elas se comportam como um grupo de instâncias gerenciadas. VMs preemptivas no GKE estão sujeitas às mesmas limitações das instâncias preemptivas em um grupo de instâncias gerenciadas. Elas são encerradas 30 segundos após o recebimento da notificação de preempção.

Além disso, essas VMs preemptivas recebem um Rótulo do Kubernetes, cloud.google.com/gke-preemptible=true. Os rótulos do Kubernetes podem ser usados no campo nodeSelector para escalonamento de pods para nós específicos.

Veja abaixo um seletor de exemplo de filtro de VMs preemptivas:

apiVersion: v1
kind: Pod
spec:
  nodeSelector:
    cloud.google.com/gke-preemptible: "true"

Práticas recomendadas

Como as VMs preemptivas não têm garantias de disponibilidade, é preciso projetar o sistema com o pressuposto de que qualquer ou todas as instâncias do Compute Engine podem ser rejeitadas e ficar indisponíveis. Não há garantias de quando novas instâncias ficam disponíveis.

Além disso, não há garantia de que os pods executados em VMs preemptivas sempre possam ser desligados normalmente.

Como criar um cluster ou pool de nós com VMs preemptivas

Use a ferramenta de linha de comando gcloudou o Console do GCP para criar um cluster ou pool de nós com VMs preemptivas.

gcloud

É possível criar um cluster ou pool de nós com VMs preemptivas especificando a sinalização --preemptible.

Para criar um cluster com VMs preemptivas, execute o comando a seguir:

gcloud beta container clusters create [CLUSTER_NAME] --preemptible

em que [COMPUTE_ZONE] é a zona do Compute do cluster.

Para criar um pool de nós com VMs preemptivas:

gcloud beta container node-pools create [POOL_NAME] --preemptible \
--cluster [CLUSTER_NAME]

Console

  1. Acesse o menu do Google Kubernetes Engine no Console do GCP.

    Acessar o menu do Google Kubernetes Engine

  2. Clique em Criar cluster.

  3. Escolha o Cluster padrão ou um modelo apropriado para a carga de trabalho.

  4. Configure o cluster como quiser. Em seguida, clique em Mais opções para o pool de nós que você quer configurar.

  5. Na seção Nós preemptivos, selecione Ativar nós preemptivos.

  6. Clique em Salvar para fechar a sobreposição de modificação do pool de nós.

  7. Clique em Criar.

Como usar taints de nó para evitar a programação em nós de VM preemptiva

Dependendo do caso de uso, você precisa evitar que pods importantes sejam programados em um nó de VM preemptiva. Para que isso não aconteça, use uma tolerância e taints de nó nesses casos.

Como criar taint de nó para VMs preemptivas

Para adicionar um taint de nó com VMs preemptivas, execute o comando a seguir:

kubectl taint nodes [NODE_NAME] cloud.google.com/gke-preemptible="true":NoSchedule

Agora, apenas os pods que toleram o taint serão programados no nó.

Como adicionar tolerância a pods

Para adicionar a tolerância relevante aos pods, inclua o seguinte na especificação do pod ou do modelo de pod do objeto:

tolerations:
- key: cloud.google.com/gke-preemptible
  operator: Equal
  value: "true"
  effect: NoSchedule

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine