Configure estratégias de atualização de nós

Como administrador da plataforma, pode configurar uma estratégia de atualização de nós para ajustar a forma como o Google Kubernetes Engine (GKE) atualiza os nós nos seus clusters do GKE. Para mais informações sobre as estratégias de atualização de nós, consulte o artigo Estratégias de atualização de nós.

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 CLI gcloud. 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.

Requisitos

Configure uma estratégia de atualização de nós

Quando configurar os conjuntos de nós padrão do cluster, pode selecionar e configurar uma das seguintes estratégias de atualização de nós suportadas:

A utilização destas estratégias de atualização permite-lhe otimizar o processo de atualização do node pool com base nas necessidades do ambiente do cluster. Os pools de nós geridos pelo Autopilot nos clusters Standard usam atualizações rápidas e não pode selecionar uma estratégia diferente nem alterar a configuração.

Configure atualizações de picos

As atualizações rápidas permitem-lhe alterar o número de nós que o GKE atualiza de uma só vez e a quantidade de interrupções que uma atualização provoca nas suas cargas de trabalho.

Os indicadores max-surge-upgrade e max-unavailable-upgrade estão definidos para cada conjunto de nós. Para mais informações sobre como escolher os parâmetros certos, aceda a Otimize a configuração da atualização por picos de atividade.

Pode alterar estas definições quando criar ou atualizar um cluster ou um conjunto de nós.

As seguintes variáveis são usadas nos comandos mencionados abaixo:

  • CLUSTER_NAME: o nome do cluster para o node pool.
  • COMPUTE_ZONE: a zona do cluster.
  • NODE_POOL_NAME: o nome do node pool.
  • NUMBER_NODES: o número de nós no node pool em cada uma das zonas do cluster.
  • SURGE_NODES: o número de nós adicionais (de pico) a criar em cada atualização do node pool.
  • UNAVAILABLE_NODES: o número de nós que podem estar indisponíveis em simultâneo em cada atualização do node pool.

Criar um cluster com parâmetros de pico específicos

Para criar um cluster com definições específicas para atualizações de picos de procura, use as flags max-surge-upgrade e max-unavailable-upgrade.

gcloud container clusters create CLUSTER_NAME \
    --max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODES

Criar um cluster com a atualização por picos desativada

Para criar um cluster sem atualizações rápidas, defina o valor da flag max-surge-upgrade como 0.

gcloud container clusters create CLUSTER_NAME \
    --max-surge-upgrade=0 --max-unavailable-upgrade=1

Criar um node pool com parâmetros de aumento específicos

Para criar um conjunto de nós num cluster existente com definições específicas para atualizações rápidas, use as flags max-surge-upgrade e max-unavailable-upgrade.

gcloud container node-pools create NODE_POOL_NAME \
    --num-nodes=NUMBER_NODES --cluster=CLUSTER_NAME \
    --max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODES

Altere as definições de atualização por picos de uma pool de nós existente

Para atualizar as definições de atualização de um node pool existente, use os flags max-surge-upgrade e max-unavailable-upgrade. Se definir max-surge-upgrade como superior a 0, o GKE cria nós de pico. Se definir max-surge-upgrade como 0, o GKE não cria nós de picos.

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --max-surge-upgrade=SURGE_NODES --max-unavailable-upgrade=UNAVAILABLE_NODES

Verificar se as atualizações por picos estão ativadas num conjunto de nós

Para ver se as atualizações rápidas estão ativadas num node pool, use gcloud para descrever os parâmetros do cluster:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

Se as atualizações de picos estiverem ativadas no conjunto de nós, a estratégia apresentada é SURGE.

Configure atualizações azul-verde

Com as atualizações do node pool azul-verde, pode controlar:

  • BATCH_NODE_COUNT ou BATCH_PERCENT: o tamanho dos lotes de nós que o GKE esgota de cada vez, o que significa que os pods são removidos dos nós. A predefinição é BATCH_NODE_COUNT=1. Se qualquer uma destas definições estiver definida como 0, o GKE ignora esta fase e avança para a fase Soak node pool.
  • BATCH_SOAK_DURATION: o tempo entre cada lote de nós a serem esgotados.
  • NODE_POOL_SOAK_DURATION: o tempo de teste de resistência para validar a sua carga de trabalho na nova configuração do nó.

Para mais informações sobre como funcionam as fases das atualizações azul-verde, consulte o artigo Fases das atualizações azul-verde.

As seguintes variáveis são usadas nos comandos indicados nas secções seguintes:

  • CLUSTER_NAME: o nome do cluster para o node pool.
  • NODE_POOL_NAME: o nome do node pool.
  • NUMBER_NODES: o número de nós no node pool em cada uma das zonas do cluster.
  • BATCH_NODE_COUNT: o número de nós azuis a esvaziar num lote durante a fase de esvaziamento do conjunto azul. A predefinição é 1. Se for definido como 0, a fase de drenagem do conjunto azul é ignorada.
  • BATCH_PERCENT: a percentagem de nós azuis a drenar num lote durante a fase de drenagem do conjunto azul, expressa como um decimal entre 0 e 1, inclusive. O GKE arredonda para baixo para o nó mais próximo, até um valor mínimo de 1 nó, se a percentagem não for um número inteiro de nós. Se for definido como 0, a fase de esgotamento do conjunto azul é ignorada.
  • BATCH_SOAK_DURATION: a duração em segundos a aguardar após cada esgotamento do lote. A predefinição é 0.
  • NODE_POOL_SOAK_DURATION: a duração em segundos a aguardar após a conclusão da eliminação de todos os lotes. A predefinição é 3600 segundos.

Criar um node pool que use a estratégia de atualização azul/verde

Crie um node pool que use os parâmetros predefinidos de atualização azul/verde

Para criar um conjunto de nós num cluster existente que use a estratégia de atualização azul/verde com os parâmetros predefinidos, use o seguinte comando:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade

Crie um node pool que use atualizações azul-verde com tamanhos de lotes de contagem de nós absolutos

Para criar um conjunto de nós que use definições de atualização azul/verde personalizadas, use as flags de parâmetros com o comando de criação do conjunto de nós.

Este comando cria um conjunto de nós com a seguinte configuração azul-verde personalizada, usando uma contagem de nós absoluta para as drenagens em lote:

  • BATCH_NODE_COUNT = 2
  • BATCH_SOAK_DURATION = 10s
  • NODE_POOL_SOAK_DURATION = 600s
gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-node-count=2,batch-soak-duration=10s \
    --node-pool-soak-duration=600s

Crie um node pool que use a atualização azul/verde com tamanhos de lotes baseados em percentagens

Este comando cria um conjunto de nós com a seguinte configuração azul-verde personalizada, usando uma percentagem para as drenagens em lote:

  • BATCH_PERCENTAGE = 25% (do tamanho do node pool)
  • BATCH_SOAK_DURATION = 10s
  • NODE_POOL_SOAK_DURATION = 1800s
gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-percent=0.25,batch-soak-duration=10s \
    --node-pool-soak-duration=1800s

Atualizar um node pool existente para usar a estratégia de atualização azul/verde

Atualize um node pool para usar atualizações azul-verde com os parâmetros predefinidos

Para atualizar um node pool existente para a estratégia de atualização azul/verde, use o seguinte comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade

Atualize um node pool para usar atualizações azul-verde com tamanhos de lotes de contagem de nós absolutos

Para atualizar um conjunto de nós existente para a estratégia de atualização azul/verde com definições personalizadas, use as flags de parâmetros com o comando de criação do conjunto de nós.

Este comando atualiza um conjunto de nós para usar a seguinte configuração azul-verde personalizada, usando uma contagem de nós absoluta para as drenagens em lote:

  • BATCH_NODE_COUNT = 2
  • BATCH_SOAK_DURATION = 10s
  • NODE_POOL_SOAK_DURATION = 600s
gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-node-count=2,batch-soak-duration=10s \
    --node-pool-soak-duration=600s

Atualize um node pool para usar atualizações azul-verde com tamanhos de lotes baseados em percentagens

Este comando cria um conjunto de nós com a seguinte configuração azul-verde personalizada, usando uma percentagem para as drenagens em lote:

  • BATCH_PERCENTAGE = 25% (do tamanho do node pool)
  • BATCH_SOAK_DURATION = 10s
  • NODE_POOL_SOAK_DURATION = 1800s
gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --standard-rollout-policy=batch-percent=0.25,batch-soak-duration=10s \
    --node-pool-soak-duration=1800s

Voltar a usar atualizações por picos

Pode alterar o comportamento das atualizações azul-verde com definições e controlar o processo de atualização com comandos.

No entanto, se quiser usar atualizações de picos, execute o seguinte comando para voltar às atualizações de picos:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-surge-upgrade

Configure atualizações azul-verde com escalamento automático

Para usar atualizações azul-verde com dimensionamento automático para um conjunto de nós, não tem de configurar nenhum dos parâmetros adicionais para o tamanho do lote ou a preparação. No entanto, pode configurar o período entre a colocação em quarentena e a drenagem dos nós. Antes de ativar esta estratégia de atualização, reveja as práticas recomendadas e as limitações.

Crie um node pool que use atualizações azul-verde com dimensionamento automático

Crie um node pool com atualizações azul-verde com dimensionamento automático ativado:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --enable-autoscaling \
    --max-nodes=MAX_NODES \
    --enable-blue-green-upgrade \
    --autoscaled-rollout-policy=[wait-for-drain-duration=WAIT_FOR_DRAIN_DURATIONs]

Para definir os parâmetros MIN_NODE e MAX_NODE, consulte as recomendações sobre como configurar o cluster e os conjuntos de nós.

Substitua o parâmetro WAIT_FOR_DRAIN_DURATION opcional pelo tempo, em segundos, a aguardar após isolar o conjunto azul e antes de esvaziar os nós. Pode configurar este tempo entre zero e sete dias, sendo a predefinição de três dias (259200 segundos).

Atualize um node pool para usar atualizações azul-verde com dimensionamento automático

Atualize um node pool existente para usar atualizações azul-verde com dimensionamento automático:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --enable-blue-green-upgrade \
    --autoscaled-rollout-policy=[wait-for-drain-duration=WAIT_FOR_DRAIN_DURATIONs]

Substitua o parâmetro WAIT_FOR_DRAIN_DURATION opcional pelo tempo, em segundos, a aguardar após isolar o conjunto azul e antes de esvaziar os nós. Pode configurar este tempo entre zero e sete dias, sendo a predefinição de três dias (259200 segundos).

Inspeccione as definições de atualização de um conjunto de nós

Para inspecionar as definições de atualização atuais de um node pool, pode usar o seguinte comando para descrever o node pool:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME

O fragmento seguinte é um exemplo do resultado do comando. O campo strategy indica a estratégia de atualização em utilização:

upgradeSettings:
  blueGreenSettings:
    nodePoolSoakDuration: 1800s
    standardRolloutPolicy:
      batchNodeCount: 1
      batchSoakDuration: 10s
  strategy: BLUE_GREEN

Este comando também mostra a fase atual de uma atualização azul/verde em curso. Saiba mais sobre como verificar as definições de atualização de um conjunto de nós.

O que se segue?