Atualizar um pool de nós

Depois de criar um cluster, é possível modificar os pools de nós dele. Apenas determinados parâmetros de um pool de nós podem ser atualizados, como tamanho, chave de criptografia e grupos de segurança. Neste documento, explicamos como executar essas e outras atualizações comuns em um pool de nós.

No entanto, este documento não apresenta uma lista completa desses comandos. Se você precisar atualizar um parâmetro não descrito neste documento, consulte gcloud container aws node-pools update e projects.locations.awsNodePools.patch documentação.

Antes de começar

Para atualizar um pool de nós, é necessário ter a seguinte permissão do gerenciamento de identidade e acesso: gkemulticloud.googleapis.com/awsNodePools.update.

Para instruções sobre como gerenciar permissões, consulte Conceder papéis do IAM aos usuários.

Atualizar um pool de nós

Nas seções a seguir, explicamos como fazer várias atualizações em um pool de nós. Um pool de nós é um grupo de nós em um cluster que têm a mesma configuração. Todos os nós em um cluster precisam pertencer a um pool de nós.

É possível atualizar vários parâmetros de um pool de nós ao mesmo tempo, basta especificar todos no mesmo comando. No entanto, para maior clareza, este documento mostra como atualizar um único parâmetro por vez.

Alterar versão do pool de nós

No GKE na AWS, alterar a versão do pool de nós significa alterar a versão do GKE em execução nos nós desse pool de nós.

Para alterar a versão do pool de nós, especifique a nova versão usando a sinalização node-version no seguinte comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION

Substitua:

Atualizar o tipo de instância do pool de nós

Um tipo de instância do pool de nós é o tipo de instância do AWS EC2 usado para criar os nós em um pool. Por exemplo, o tipo de instância m5.xlarge tem 4 vCPUs, 16 GB de memória e 32 GB de armazenamento SSD.

Para alterar o tipo de instância do pool de nós, especifique o novo tipo de instância usando a sinalização instance-type no seguinte comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --instance-type=INSTANCE_TYPE

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós.
  • CLUSTER_NAME: o nome do cluster.
  • GOOGLE_CLOUD_LOCATION: a região do Google Cloud que gerencia o cluster.
  • INSTANCE_TYPE: o novo tipo de instância de máquina da AWS para este pool de nós. Por exemplo, m5.xlarge.

As atualizações do tipo de instância do pool de nós não podem alterar a arquitetura de CPU subjacente da instância do EC2. Por exemplo, se o pool de nós original usa instâncias com CPUs de x86, o tipo de instância atualizado precisa continuar usando CPUs de x86 em vez de alguma outra arquitetura.

Para uma lista completa das instâncias compatíveis e das arquiteturas subjacentes, consulte os tipos de instâncias compatíveis da AWS.

Fazer rotação da chave de criptografia de um pool de nós

Para informações sobre como atualizar as chaves de criptografia do KMS do pool de nós, consulte Rotação de chaves.

Substituir grupos de segurança do pool de nós

Para atualizar os grupos de segurança anexados a um pool de nós, execute o seguinte comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --security-group-ids=SECURITY_GROUP_IDS

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós a ser atualizado;
  • CLUSTER_NAME: o nome do cluster.
  • GOOGLE_CLOUD_LOCATION: a região do Google Cloud que gerencia o cluster.
  • SECURITY_GROUP_IDS: uma lista separada por vírgulas de grupos de segurança a serem anexados ao pool de nós.

Para clusters que executam o GKE versão 1.25 ou posterior, a atualização pode ser realizada dinamicamente sem reiniciar os nós. Essa é a abordagem recomendada para clusters que usam o GKE v1.25 ou posterior.

Para executar atualizações dinâmicas, o papel de agente de serviço da API precisa ter as seguintes permissões do IAM da AWS:

  • ec2:ModifyInstanceAttribute
  • ec2:DescribeInstances

Essas permissões serão atribuídas automaticamente ao papel de agente de serviço da API se você escolher o papel padrão de agente de serviço de API ao criar o cluster.

Para clusters que executam versões anteriores do GKE ou clusters que executam versões 1.25 ou posteriores, mas o agente de serviço da API não tem as permissões para executar uma atualização dinâmica, ela é realizada usando uma atualização gradual. As atualizações graduais são mais disruptivas do que as dinâmicas porque elas reiniciam os nós, enquanto as dinâmicas não. Para mais informações sobre atualizações graduais, consulte Atualizações súbitas.

Remover grupos de segurança do pool de nós

Execute o comando a seguir para remover todos os grupos de segurança não padrão anexados ao pool de nós. Para mais informações sobre os grupos de segurança padrão, consulte Grupos de segurança de pools de nós.

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --clear-security-group-ids

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós a ser atualizado;
  • CLUSTER_NAME: o nome do cluster.
  • GOOGLE_CLOUD_LOCATION: a região do Google Cloud que gerencia o cluster.

Redimensionar um pool de nós

Para alterar o tamanho do pool de nós (ou seja, o número de nós nele), atribua novos valores às sinalizações min-nodes e max-nodes no seguinte comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós a ser atualizado;
  • CLUSTER_NAME: o nome do cluster ao qual o pool de nós será anexado.
  • GOOGLE_CLOUD_LOCATION: a região compatível com o Google Cloud que gerencia seu cluster Por exemplo, us-west1.
  • MIN_NODES: o número mínimo de nós que o pool pode conter. O valor pode ser 0 ou maior.
  • MAX_NODES: o número máximo de nós que o pool pode conter. O valor precisa ser pelo menos 1 e maior ou igual ao valor de MIN_NODES.

Mais detalhes sobre o redimensionamento de pools de nós

Antes de redimensionar um pool de nós, é importante avaliar as possíveis repercussões nas suas cargas de trabalho.

Redimensionamento das ações e as consequências delas

Ao redimensionar pools de nós, diferentes ações são acionadas com base na nova configuração e no estado atual dos nós. É fundamental entender essas ações e as implicações delas:

  • Sem alteração: se a contagem de nós atual já estiver alinhada ao novo intervalo especificado, o GKE na AWS não fará ajustes no número de nós.
  • Aumentar o mínimo: se o novo número mínimo de nós for definido como maior que a contagem atual, os GKE na AWS adicionará nós gradualmente até que o tamanho mínimo recém-definido seja atingido.
  • Diminuir o máximo: se você alterar a contagem máxima de nós para um valor inferior à contagem atual, o GKE na AWS realizará as seguintes ações:
    • Desativa o escalonador automático de clusters.
    • Define o grupo de escalonamento automático do pool de nós para o tamanho mínimo especificado.
    • Seleciona nós individuais para remoção. Cada nó é isolado, drenado das tarefas e, em seguida, encerrado. Esse procedimento continua até que o tamanho máximo especificado seja atingido.
    • Modifica o grupo de escalonamento automático do pool de nós para se alinhar com o novo tamanho máximo.
    • Reativa o escalonador automático de clusters quando o tamanho máximo é atingido.

Para mais informações sobre o escalonador automático de clusters, consulte Sobre o escalonador automático de clusters.

Proteção da carga de trabalho durante o redimensionamento

Para garantir a disponibilidade contínua de cargas de trabalho durante o redimensionamento do pool de nós, o GKE na AWS fornece as seguintes salvaguardas:

  • Durante um dreno de nó, o GKE na AWS respeita a configuração PodDisruptionBudget por até uma hora. Os pods restantes no nó após esse período são excluídos.

  • Quando os nós são definidos para serem reiniciados ou removidos, o GKE na AWS garante o encerramento otimizado e aguarda até duas horas. Se os pods permanecerem no nó após esse período, a instância de máquina virtual subjacente será excluída.

Verificar o status do seu pool de nós

Para verificar se a atualização foi bem-sucedida, verifique o status do pool de nós executando o seguinte comando:

gcloud container aws node-pools describe NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós.
  • CLUSTER_NAME: o nome do cluster.
  • GOOGLE_CLOUD_LOCATION: a região do Google Cloud que gerencia o cluster.

O GKE na AWS tenta executar as atualizações solicitadas no pool de nós e, em seguida, realiza uma verificação de integridade. Se alguma das etapas de atualização falhar, o status do pool de nós será marcado como DEGRADED.

Cancelar uma operação de atualização

Antes de cancelar uma atualização em andamento do pool de nós, você precisa determinar o nome da operação em andamento. Para listar as operações em andamento e os respectivos nomes, execute o seguinte comando:

gcloud container aws operations list--filter="status=PENDING OR status=RUNNING"
    --location GOOGLE_CLOUD_LOCATION

Substitua GOOGLE_CLOUD_LOCATION pela região compatível do Google Cloud que gerencia seu cluster. Por exemplo, us-west1.

Procure o OPERATION_NAME da atualização que você quer cancelar na saída do comando. Para ver uma lista de operações, consulte a lista de operações gcloud container awsoperations.

Depois de identificar o OPERATION_NAME, cancele a operação com o seguinte comando:

gcloud container aws operations cancel OPERATION_NAME
    --location GOOGLE_CLOUD_LOCATION

Substitua:

O cancelamento de uma atualização em andamento do pool de nós não reverte as atualizações de nós que já foram concluídas. Isso pode resultar em um pool de nós parcialmente atualizado.