Migrar nós para o cgroupv2 do Linux

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

  • Verificar qual modo cgroup os nós do cluster estão executando e se as cargas de trabalho podem ser afetadas pela transição entre os modos cgroup.
  • Migrar nós de cluster do GKE Autopilot ou pools de nós de cluster Standard para cgroupv2.
  • Desativar temporariamente a migração automática de nós do GKE usando cgroupv1 para cgroupv2. Siga estas instruções se o cluster executar cargas de trabalho que possam ser afetadas pela transição entre os modos cgroup.

Você pode pular a leitura desta página se souber que as cargas de trabalho são executadas conforme o esperado em cgroupv2 ou não são afetadas pela configuração do modo cgroup. O GKE migra automaticamente clusters que executam cgroupv1 para cgroupv2 com a versão 1.33 e mais recentes.

Sobre grupos de controle do Linux

O kubelet e o ambiente de execução do contêiner usam grupos de controle do kernel do Linux (cgroups) para gerenciar recursos, como limitar a quantidade de CPU ou memória que cada contêiner em um pod pode acessar. Há 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 versão 1.22 e disponível para todos os usuários na versão 1.25. Para saber mais, consulte a documentação do Kubernetes cgroups v2.

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

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

Confira a linha do tempo a seguir para entender como o GKE está fazendo a transição dos clusters atuais para usar cgroupv2:

  • Para versões anteriores à 1.26, cgroupv1 era o padrão para nós. Para versões 1.26 ou mais recentes, cgroupv2 é o padrão para novos nós. Não há mudanças nos nós atuais. Para saber mais sobre qual modo cgroup os clusters do GKE executam por padrão, consulte Verificar o modo cgroup dos nós do cluster.
  • Com a versão secundária 1.31, o GKE descontinua cgroupv1.
  • A partir da versão 1.33, o GKE migra clusters que executam cgroupv1 para cgroupv2. É possível impedir temporariamente essa migração automática especificando explicitamente que um pool de nós use cgroupv1.
  • Com a versão secundária 1.35, o GKE remove o suporte para cgroupv1.

Para saber o tempo aproximado de upgrades automáticos para versões secundárias mais recentes, como 1.31 e 1.33, consulte a programação estimada para canais de lançamento.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ativar a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e, em seguida, inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.

Verificar o modo cgroup dos nós do cluster

O modo cgroup padrão depende do tipo de cluster ou pool de nós e da versão. Com a versão 1.26 ou mais recente, o padrão é cgroupv2. Com a versão 1.25 ou anterior, o padrão é cgroupv1:

  • Para clusters do Autopilot e novos pools de nós de cluster Standard criados com provisionamento automático de nós, o modo cgroup é baseado na versão inicial do cluster. Não é possível definir o modo cgroup durante a criação do cluster do Autopilot. Para novos nós com provisionamento automático, não é possível definir o modo de maneira diferente do modo cgroup padrão com base na versão secundária.
  • Para pools de nós de cluster Standard criados manualmente sem provisionamento automático de nós, o modo cgroup é baseado na versão inicial do pool de nós ou na configuração personalizada do sistema de nós.

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

Autopilot

Execute este comando:

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

Substitua CLUSTER_NAME pelo nome do cluster.

Se a saída for EFFECTIVE_CGROUP_MODE_V2, o cluster estará em execução em cgroupv2. Se a saída for EFFECTIVE_CGROUP_MODE_V1, o cluster estará em execução em cgroupv1.

Os clusters do GKE Autopilot que foram criados originalmente com a versão 1.25 ou anterior do GKE executam cgroupv1 até que você os migre.

Padrão

Com clusters do GKE Standard, o modo cgroup é definido no nível do pool de nós. Para verificar o modo de pools de nós individuais, siga as instruções para verificar a configuração do cgroup. Se os nós do cluster já estiverem usando cgroupv2, nenhuma outra ação será necessária.

Migrar nós para cgroupv2

Recomendamos que você migre os nós atuais antes que o GKE os migre automaticamente na versão 1.33 ou mais recente.

Siga estas etapas para migrar nós que executam cgroupv1:

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

    Autopilot

    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 cluster.

    Padrão

    1. Se você usar provisionamento automático de nós para o cluster, execute o comando a seguir para garantir que os pools de nós atuais e futuros criados com o provisionamento automático de nós usem cgroupv2:

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

      Substitua CLUSTER_NAME pelo nome do cluster.

    2. Para pools de nós atuais criados sem provisionamento automático de nós, atualize o nó pool para adicionar o seguinte à configuração do sistema de nós:

      linuxConfig:
        cgroupMode: 'CGROUP_MODE_V2'
      

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

      Quando você cria manualmente novos pools de nós sem provisionamento automático de nós, o GKE usa cgroupv2 por padrão.

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

Para evitar temporariamente a migração automática de nós que executam cgroupv1 para cgroupv2 com versões secundárias 1.33 e mais recentes, você precisa definir explicitamente cgroupv1. Você também pode usar essas instruções para reverter temporariamente para cgroupv1 se a migração de nós para cgroupv2 causar um problema nas cargas de trabalho do cluster.

Autopilot

Execute o comando a seguir para clusters que você criou originalmente usando a versão 1.25 ou anterior. Se o cluster foi criado executando a versão 1.26 ou mais recente, não é possível 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 cluster.

Padrão

Para continuar executando cgroupv1 com um pool de nós de cluster Standard do GKE que executa a versão 1.33 ou mais recente, siga estas etapas:

  1. Se você usar provisionamento automático de nós, e o cluster foi criado executando a versão 1.25 ou anterior, use o comando a seguir para garantir que os pools de nós atuais e futuros criados com provisionamento automático de nós usem cgroupv1. Se o cluster foi criado executando a versão 1.26 ou mais recente, não é possível definir o modo cgroup como cgroupv1:

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

    Substitua CLUSTER_NAME pelo nome do cluster.

  2. Para pools de nós Standard atuais, atualize o pool de nós para adicionar o seguinte à configuração do sistema de nós:

    linuxConfig:
      cgroupMode: 'CGROUP_MODE_V1'
    

    Você também precisa definir essa configuração de nó para novos pools de nós criados manualmente sem provisionamento automático de nós.

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

A seguir