Compartilhar via


Solucionar problemas de versões desatualizadas do kernel em imagens de nós do Host de Contêiner do Linux do Azure

Durante a migração ou ao adicionar novos pools de nós ao Host de Contêiner do Linux do Azure, você pode encontrar problemas com versões desatualizadas do kernel. O Serviço de Kubernetes do Azure (AKS) lança uma nova imagem de nó do Linux do Azure toda semana, que é usada para novos pools de nós e como imagem inicial para escalar verticalmente. No entanto, os pools de nós mais antigos podem não estar atualizando suas versões de kernel conforme o esperado.

Para verificar a KERNEL-VERSION de seus pools de nós, execute:

    kubectl get nodes -o wide

Em seguida, compare a versão do kernel de seus pools de nós com o kernel mais recente publicado em packages.microsoft.com.

Sintoma

Um sintoma comum desse problema inclui:

  • Os nós do Linux do Azure não estão usando a versão mais recente do kernel.

Causas

Há duas causas principais para esse problema:

  1. As atualizações automáticas de imagem de nó não foram habilitadas quando o pool de nós foi criado.
  2. A imagem de base que o AKS usa para iniciar clusters é executada com duas semanas de atraso em relação às versões mais recentes do kernel devido ao seu procedimento de distribuição.

Solução

Você pode habilitar as atualizações automáticas usando GitHub Actions e reinicializar os nós para resolver esse problema.

Habilitar upgrades automáticos de imagem de nó usando a CLI do Azure

Para habilitar upgrades automáticos de imagem de nó ao implantar um cluster a partir da az-cli, adicione o parâmetro --auto-upgrade-channel node-image.

az aks create --name testAzureLinuxCluster --resource-group testAzureLinuxResourceGroup --os-sku AzureLinux --auto-upgrade-channel node-image

Habilitar upgrades automáticos de imagem de nó usando modelos do ARM

Para habilitar upgrades automáticos de imagem de nó ao usar um modelo do ARM, você pode definir a propriedade upgradeChannel em autoUpgradeProfile como node-image.

    autoUpgradeProfile: {
      upgradeChannel: 'node-image'
    }

Reinicializar os nós

Ao atualizar a versão do kernel, você precisa reinicializar o nó para usar a nova versão do kernel. Recomendamos que você configure o DaemonSet kured. Kured para monitorar seus nós em busca do arquivo /var/run/reboot-required, esvaziar a carga de trabalho e reiniciar os nós.

Solução alternativa: Atualizações manuais

Se precisar de uma solução rápida, você pode atualizar manualmente a imagem do nó em um cluster usando az aks nodepool upgrade. Isso pode ser feito executando

az aks nodepool upgrade \
    --resource-group testAzureLinuxResourceGroup \
    --cluster-name testAzureLinuxCluster \
    --name myAzureLinuxNodepool \
    --node-image-only

Próximas etapas

Se as etapas anteriores não resolverem o problema, abra um tíquete de suporte.