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:
- As atualizações automáticas de imagem de nó não foram habilitadas quando o pool de nós foi criado.
- 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.