Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Para proteger seus clusters, as atualizações de segurança são aplicadas automaticamente aos nós do Linux no AKS. Essas atualizações incluem correções de segurança do sistema operacional ou atualizações do kernel. Algumas dessas atualizações exigem uma reinicialização do nó para concluir o processo. O AKS não reinicia automaticamente esses nós Linux para concluir o processo de atualização.
O processo para manter os nós do Windows Server atualizados é um pouco diferente. Os nós do Windows Server não recebem atualizações diárias. Em vez disso, executa uma atualização do AKS que implementa novos nós com a imagem de base mais recente do Windows Server e os patches mais recentes. Para clusters AKS que usam nós do Windows Server, consulte Atualizar um pool de nós no AKS.
Este artigo mostra-lhe como utilizar o kured (KUbernetes REboot Daemon) de código aberto para monitorizar nós Linux que precisam de ser reiniciados e, em seguida, tratar automaticamente do reagendamento dos pods em execução e do processo de reinicialização dos nós.
Observação
Kured é um projeto de código aberto na Cloud Native Computing Foundation. Por favor, encaminhe os problemas para o GitHub do kured. Suporte adicional pode ser encontrado no canal #kured no CNCF Slack.
Importante
O software de código aberto é mencionado em toda a documentação e amostras do AKS. O software que você implanta é excluído dos contratos de nível de serviço do AKS, da garantia limitada e do suporte do Azure. Ao usar a tecnologia de código aberto ao lado do AKS, consulte as opções de suporte disponíveis nas respetivas comunidades e mantenedores do projeto para desenvolver um plano.
A Microsoft assume a responsabilidade pela criação dos pacotes de código aberto que implantamos no AKS. Essa responsabilidade inclui ter a propriedade completa do processo de compilação, digitalização, assinatura, validação e correção rápida, juntamente com o controlo dos binários nas imagens de contentor. Para obter mais informações, consulte Gestão de vulnerabilidades para AKS e Cobertura de suporte AKS.
Importante
A partir de 30 de novembro de 2025, o Azure Kubernetes Service (AKS) deixou de suportar nem fornecer atualizações de segurança para o Azure Linux 2.0. A imagem da máquina virtual do Azure Linux 2.0 está congelada na versão 202512.06.0. A partir de 31 de março de 2026, as imagens dos nós serão removidas e não poderá ajustar o tamanho dos seus pools de nós. Migre para uma versão Azure Linux suportada atualizando os seus pools de nós para uma versão Kubernetes suportada ou migrando para o osSku AzureLinux3. Para mais informações, consulte a edição do Retirement GitHub e o anúncio de reforma do Azure Updates. Para se manter informado sobre anúncios e atualizações, siga as notas de lançamento do AKS.
Antes de começar
Você precisa da CLI do Azure versão 2.0.59 ou posterior instalada e configurada. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, consulte Install CLI do Azure.
Compreenda o processo de atualização de nós do AKS
Em um cluster AKS, seus nós do Kubernetes são executados como máquinas virtuais (VMs) do Azure. Essas VMs baseadas em Linux usam uma imagem do Ubuntu ou do Azure Linux, com o sistema operacional configurado para verificar automaticamente se há atualizações todos os dias. Se houver atualizações de segurança ou do kernel disponíveis, elas serão baixadas e instaladas automaticamente.
Algumas atualizações de segurança, como atualizações do kernel, exigem uma reinicialização do nó para finalizar o processo. Um nó Linux que requer uma reinicialização cria um arquivo chamado /var/run/reboot-required. Este processo de reinicialização não acontece automaticamente.
Pode usar os seus próprios fluxos de trabalho e processos para gerir reinicializações de nós ou usar kured para orquestrar o processo. Com kured, é implementado um DaemonSet que executa um pod em cada nó Linux do cluster. Esses pods no DaemonSet observam a existência do arquivo /var/run/reboot-required e, em seguida, iniciam um processo para reinicializar os nós.
Atualizações de imagem do nodo
As atualizações autônomas aplicam atualizações ao sistema operacional do nó Linux, mas a imagem usada para criar nós para o cluster permanece inalterada. Se um novo nó Linux for adicionado ao seu cluster, a imagem original será usada para criar o nó. Este novo nó recebe todas as atualizações de segurança e kernel disponíveis durante a verificação automática todos os dias, mas permanece sem correção até que todas as verificações e reinicializações sejam concluídas.
Como alternativa, você pode usar a atualização de imagem de nó para verificar e atualizar imagens de nó usadas pelo cluster. Para obter mais informações sobre a atualização da imagem do nó, consulte Atualização da imagem do nó do Serviço Kubernetes do Azure (AKS).
Atualização de nós
Há outro processo no AKS que permite atualizar um cluster. Normalmente, uma atualização consiste em passar para uma versão mais recente do Kubernetes, e não apenas em aplicar atualizações de segurança dos nós. Uma atualização do AKS executa as seguintes ações:
- Um novo nó é implementado com as atualizações de segurança mais recentes e a versão mais recente do Kubernetes aplicadas.
- Um nó antigo é isolado e drenado.
- Os pods são agendados no novo nó.
- O nó antigo é excluído.
Não é possível permanecer na mesma versão do Kubernetes durante um evento de atualização. Você deve especificar uma versão mais recente do Kubernetes. Para atualizar para a versão mais recente do Kubernetes, você pode atualizar seu cluster AKS.
Implantar kured em um cluster AKS
Para implantar o kured DaemonSet, instale o seguinte gráfico oficial Kured Helm. Isto cria um perfil e um perfil de cluster, vinculações e uma conta de serviço e, em seguida, implementa o DaemonSet usando kured.
# Add the Kured Helm repository
helm repo add kubereboot https://kubereboot.github.io/charts/
# Update your local Helm chart repository cache
helm repo update
# Create a dedicated namespace where you would like to deploy kured into
kubectl create namespace kured
# Install kured in that namespace with Helm 3 (only on Linux nodes, kured is not working on Windows nodes)
helm install my-release kubereboot/kured --namespace kured --set controller.nodeSelector."kubernetes\.io/os"=linux
Você também pode configurar parâmetros extras para kured, como integração com Prometheus ou Slack. Para obter mais informações sobre parâmetros de configuração, consulte o gráfico kured Helm.
Atualizar os nós do cluster
Por padrão, os nós Linux no AKS verificam se há atualizações todas as noites. Se não quiser esperar, você pode executar manualmente uma atualização para verificar se kured é executado corretamente. Primeiro, siga os passos para estabelecer uma ligação SSH a um dos seus nós AKS. Depois de ter uma conexão SSH com o nó Linux, verifique se há atualizações e aplique-as da seguinte maneira:
sudo apt-get update && sudo apt-get upgrade -y
Se forem aplicadas atualizações que exijam uma reinicialização do nó, um arquivo será gravado em /var/run/reboot-required.
Kured verifica, por predefinição, a cada 60 minutos, se existem nós que requerem um reinício.
Monitorar e revisar o processo de reinicialização
Quando uma das réplicas no DaemonSet deteta que uma reinicialização do nó é necessária, um bloqueio é colocado no nó por meio da API do Kubernetes. Este bloqueio impede que mais pods sejam programados no nó. O bloqueio também indica que apenas um nó deve ser reinicializado de cada vez. Com o nó marcado como indisponível, os pods em execução são retirados do nó e este é reinicializado.
Você pode monitorar o status dos nós usando o comando kubectl get nodes . O exemplo de saída seguinte mostra um nó com o estado SchedulingDisabled durante a preparação do nó para o processo de reinicialização:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-28993262-0 Ready,SchedulingDisabled agent 1h v1.11.7
Quando o processo de atualização estiver concluído, você poderá visualizar o status dos nós usando o comando kubectl get nodes com o --output wide parâmetro. Esta saída permite ver uma diferença na KERNEL-VERSION dos nós subjacentes, conforme mostrado na saída de exemplo seguinte. O aks-nodepool1-28993262-0 foi atualizado em uma etapa anterior e mostra a versão do kernel 4.15.0-1039-azure. O nó aks-nodepool1-28993262-1 que não foi atualizado apresenta a versão do kernel 4.15.0-1037-azure.
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
aks-nodepool1-28993262-0 Ready agent 1h v1.11.7 10.240.0.4 <none> Ubuntu 16.04.6 LTS 4.15.0-1039-azure docker://3.0.4
aks-nodepool1-28993262-1 Ready agent 1h v1.11.7 10.240.0.5 <none> Ubuntu 16.04.6 LTS 4.15.0-1037-azure docker://3.0.4
Próximos passos
Este artigo detalhou como usar kured para reinicializar nós Linux automaticamente como parte do processo de atualização de segurança. Para atualizar para a versão mais recente do Kubernetes, você pode atualizar seu cluster AKS.
Para clusters AKS que usam nós do Windows Server, consulte Atualizar um pool de nós no AKS.
Para obter uma discussão detalhada sobre as práticas recomendadas de atualização e outras considerações, consulte o patch do AKS e as diretrizes de atualização.