Migre nós para o cgroupv2 do Linux

A partir da versão 1.33, o Google Kubernetes Engine (GKE) migra os clusters que executam o cgroupv1 para o cgroupv2. Esta página explica como fazer o seguinte:

  • Verifique em que modo de cgroup os nós do cluster estão a ser executados e se as suas cargas de trabalho podem ser afetadas pela transição entre modos de cgroup.
  • Migre os nós do cluster do GKE Autopilot ou os conjuntos de nós do cluster padrão para o cgroupv2.
  • Recuse temporariamente a migração automática de nós do GKE de cgroupv1 para cgroupv2. Siga estas instruções se o seu cluster executar cargas de trabalho que possam ser afetadas pela transição entre modos de cgroup.

Pode ignorar a leitura desta página se souber que as suas cargas de trabalho são executadas conforme esperado no cgroupv2 ou não são afetadas pela configuração do modo cgroup. O GKE migra automaticamente os clusters que executam o cgroupv1 para o cgroupv2 com a versão 1.33 e posterior.

Acerca dos grupos de controlo do Linux

O kubelet e o tempo de execução do contentor usam grupos de controlo (cgroups) do kernel do Linux para a gestão de recursos, como limitar a quantidade de CPU ou memória a que cada contentor num pod pode aceder. Existem dois modos do subsistema cgroup no kernel: cgroupv1 e cgroupv2. O suporte do Kubernetes para cgroupv2 foi introduzido como alfa na versão 1.18 do Kubernetes, beta na 1.22 e DG na 1.25. Para mais detalhes, consulte a documentação cgroups v2 do Kubernetes.

Para saber como configurar um modo de cgroup para clusters padrão, consulte as opções de configuração do modo de cgroup do Linux.

Como o GKE está a fazer a transição para o cgroupv2

Reveja a seguinte cronologia para compreender como o GKE está a fazer a transição dos clusters existentes para usar o cgroupv2:

  • Para versões anteriores à 1.26, cgroupv1 era a predefinição para os nós. Para as versões 1.26 ou posteriores, cgroupv2 é a predefinição para novos nós. Não há alterações aos nós existentes. Para saber mais sobre o modo de cgroup que os seus clusters do GKE executam por predefinição, consulte o artigo Verifique o modo de cgroup dos nós do cluster.
  • Com a versão secundária 1.31, o GKE descontinua o cgroupv1.
  • A partir da versão 1.33, o GKE migra os clusters que executam o sistema operativo cgroupv1 para o cgroupv2. Pode impedir temporariamente esta migração automática especificando explicitamente que um conjunto de nós usa cgroupv1.
  • Com a versão secundária 1.35, o GKE remove o suporte para cgroupv1.

Para ver o momento aproximado das atualizações automáticas para versões secundárias posteriores, como 1.31 e 1.33, consulte o cronograma estimado para os canais de lançamento.

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.

Verifique o modo cgroup dos nós do cluster

O modo cgroup predefinido depende do tipo de cluster ou node pool e da versão. Com a versão 1.26 ou posterior, a predefinição é cgroupv2. Com a versão 1.25 ou anterior, o valor predefinido é cgroupv1:

  • Para clusters do Autopilot e novos pools de nós de clusters Standard criados com o aprovisionamento automático de nós, o modo cgroup baseia-se na versão inicial do cluster. Não pode definir o modo cgroup durante a criação do cluster do Autopilot. Para novos nós aprovisionados automaticamente, não pode definir o modo de forma diferente do modo cgroup predefinido com base na versão secundária.
  • Para node pools de clusters padrão criados manualmente sem o aprovisionamento automático de nós, o modo cgroup baseia-se na versão inicial do node pool ou na configuração do sistema de nós personalizada.

Para verificar o modo cgroup, siga as instruções com base no modo do cluster.

Piloto automático

Execute o seguinte comando:

gcloud container clusters describe CLUSTER_NAME \
    --format='value(nodePools[0].config.effectiveCgroupMode)'

Substitua CLUSTER_NAME pelo nome do seu cluster.

Se o resultado for EFFECTIVE_CGROUP_MODE_V2, o cluster está a ser executado no cgroupv2. Se o resultado for EFFECTIVE_CGROUP_MODE_V1, o cluster está a ser executado no cgroupv1.

Os clusters do GKE Autopilot criados inicialmente com a versão 1.25 ou anterior do GKE executam o cgroupv1 até os migrar.

Standard

Com os clusters padrão do GKE, o modo cgroup é definido ao nível do conjunto de nós. Para verificar o modo de pools de nós individuais, siga as instruções para validar a configuração do cgroup. Se os nós do cluster já estiverem a usar o cgroupv2, não é necessária nenhuma ação adicional.

Migre nós para cgroupv2

Recomendamos que migre os nós existentes antes de o GKE os migrar automaticamente na versão 1.33 ou posterior.

Siga estes passos para migrar nós que executam o cgroupv1:

  1. Verifique o modo cgroup dos nós. Se os nós do cluster já estiverem a usar o cgroupv2, não é necessária nenhuma ação adicional.
  2. Reveja as considerações sobre a migração, Migrar para cgroup v2, para garantir que as suas cargas de trabalho estão preparadas para usar a nova versão da API.
  3. Migre os nós do cluster.

    Piloto automático

    Defina explicitamente os nós do cluster para usar cgroupv2:

    gcloud container clusters update CLUSTER_NAME \
        --autoprovisioning-cgroup-mode=v2
    

    Substitua CLUSTER_NAME pelo nome do seu cluster.

    Standard

    1. Se usar o aprovisionamento automático de nós para o cluster, execute o seguinte comando para garantir que os conjuntos de nós existentes e futuros criados com o aprovisionamento automático de nós usam o cgroupv2:

      gcloud container clusters update CLUSTER_NAME \
          --autoprovisioning-cgroup-mode=v2
      

      Substitua CLUSTER_NAME pelo nome do seu cluster.

    2. Para os node pools existentes criados sem a administração de contas automática de nós, atualize o node pool para adicionar o seguinte à configuração do sistema de nós:

      linuxConfig:
        cgroupMode: 'CGROUP_MODE_V2'
      

      Para saber mais, consulte o artigo Personalizar a configuração do sistema de nós.

      Quando cria manualmente novos pools de nós sem o aprovisionamento automático de nós, o GKE usa o cgroupv2 por predefinição.

Desative temporariamente a migração automática para o cgroupv2

Para evitar temporariamente a migração automática de nós que executam o cgroupv1 para o cgroupv2 com as versões secundárias 1.33 e posteriores, tem de definir explicitamente o cgroupv1. Também pode usar estas instruções para reverter temporariamente para cgroupv1 se a migração de nós para cgroupv2 tiver causado um problema para as cargas de trabalho do seu cluster.

Piloto automático

Execute o seguinte comando para clusters que criou originalmente com a versão 1.25 ou anterior. Se o cluster tiver sido criado com a versão 1.26 ou posterior, não pode definir o modo cgroup como cgroupv1.

Defina explicitamente os nós do cluster para usar cgroupv1:

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-cgroup-mode=v1

Substitua CLUSTER_NAME pelo nome do seu cluster.

Standard

Para continuar a executar o cgroupv1 com um conjunto de nós do cluster padrão do GKE com a versão 1.33 ou posterior, siga os passos abaixo:

  1. Se usar o aprovisionamento automático de nós, e o cluster tiver sido criado com a versão 1.25 ou anterior, use o seguinte comando para garantir que os conjuntos de nós existentes e futuros criados com o aprovisionamento automático de nós usam o cgroupv1. Se o cluster tiver sido criado com a versão 1.26 ou posterior, não pode definir o modo cgroup como cgroupv1:

    gcloud container clusters update CLUSTER_NAME \
        --autoprovisioning-cgroup-mode=v1
    

    Substitua CLUSTER_NAME pelo nome do seu cluster.

  2. Para os node pools padrão existentes, atualize o node pool para adicionar o seguinte à configuração do sistema de nós:

    linuxConfig:
      cgroupMode: 'CGROUP_MODE_V1'
    

    Também tem de definir esta configuração do nó para novos conjuntos de nós que criar manualmente sem o aprovisionamento automático de nós.

    Para saber mais, consulte o artigo Personalizar a configuração do sistema de nós.