Partilhar via


Usar a manutenção planejada para agendar e controlar atualizações para seu cluster do Serviço Kubernetes do Azure

Este artigo mostra como usar a manutenção planeada para agendar e controlar atualizações de imagens de cluster e de nó no Serviço de Kubernetes do Azure (AKS).

A manutenção regular é executada no seu cluster AKS automaticamente. Existem dois tipos de operações de manutenção:

  • A manutenção iniciada pelo AKS envolve as versões semanais que o AKS realiza para manter seu cluster atualizado com os recursos e correções mais recentes.
  • A manutenção iniciada pelo usuário inclui atualizações automáticas de cluster e atualizações de segurança automáticas do sistema operacional (SO) do nó.

Ao usar o recurso de manutenção planejada no AKS, você pode executar ambos os tipos de manutenção em uma cadência de sua escolha para minimizar o impacto da carga de trabalho.

Nota

Pode usar a manutenção planeada para agendar o momento das atualizações automáticas, mas ativar ou desativar a manutenção planeada não ativa nem desativa as atualizações automáticas.

Antes de começar

  • Este artigo pressupõe que você tenha um cluster AKS existente. Se você não tiver um cluster AKS, consulte Criar um cluster AKS.
  • Se estiveres a usar a CLI do Azure, atualiza para a versão mais recente usando o az upgrade comando.

Considerações

Quando você usa a manutenção planejada, as seguintes considerações se aplicam:

  • A AKS reserva-se o direito de interromper as janelas de manutenção planeada para operações de manutenção reativas não programadas que sejam urgentes ou críticas. Essas operações de manutenção podem até ser executadas durante o notAllowedTime ou o notAllowedDates períodos definidos na sua configuração.
  • As operações de manutenção são consideradas apenas o melhor esforço e não é garantido que ocorram dentro de uma janela especificada.

Programar tipos de configuração para manutenção planejada

Três tipos de configuração programada estão disponíveis para manutenção planejada:

  • default é uma configuração básica para controlar os lançamentos do AKS, que abrange componentes do plano de controle e atualização de addons do sistema. As versões podem levar até duas semanas para serem implantadas em todas as regiões desde o momento inicial do envio, devido às práticas de implantação segura do Azure.

    Escolha default agendar essas atualizações de uma maneira que seja menos perturbadora para você. Você pode monitorar o status de uma liberação do AKS em andamento por região com o rastreador de lançamento semanal.

  • aksManagedAutoUpgradeSchedule Controla quando executar atualizações de cluster agendadas pelo canal de atualização automática designado. Você pode definir configurações de cadência e recorrência mais finamente controladas com essa configuração em comparação com a default configuração. Para obter mais informações sobre a atualização automática do cluster, consulte Atualizar automaticamente um cluster do Serviço Kubernetes do Azure.

  • aksManagedNodeOSUpgradeSchedule controla quando executar o patch de segurança agendado pelo canal de atualização automática do sistema operacional do nó. Você pode definir configurações de cadência e recorrência mais finamente controladas com essa configuração em comparação com a default configuração. Para obter mais informações sobre os canais de atualização automática do sistema operativo dos nós, consulte Corrigir e atualizar automaticamente as imagens dos nós do cluster AKS.

Recomendamos usar aksManagedAutoUpgradeSchedule para todos os cenários de atualização da versão do Kubernetes do cluster e aksManagedNodeOSUpgradeSchedule para todos os cenários de correção de segurança do sistema operativo dos nós.

A default opção destina-se exclusivamente aos lançamentos semanais do AKS. Use default se quiser controlar o calendário de atualizações para componentes do plano de controlo do AKS (como API Server, ETCD, etc.) e complementos (como CoreDNS, Metrics Server, etc.).

Os três tipos de configurações podem coexistir.

Criar uma janela de manutenção

Nota

Quando estiver a utilizar a atualização automática, para garantir a funcionalidade adequada, utilize uma janela de manutenção com uma duração igual ou superior a quatro horas.

Nota

A partir da versão de API de 2023-05-01, utilize as propriedades da tabela seguinte para a configuração de default.

Uma janela de manutenção aksManagedAutoUpgradeSchedule ou aksManagedNodeOSUpgradeSchedule configuração default a partir da versão 2023-05-01 da API tem as seguintes propriedades:

Nome Descrição Valor padrão
utcOffset O fuso horário para manutenção do cluster. +00:00
startDate A data em que a janela de manutenção começa a produzir efeitos. A data atual no momento da criação
startTime A hora de início da manutenção, com base no fuso horário determinado por utcOffset. Não aplicável
schedule A frequência de atualização. Três tipos estão disponíveis: Weekly, AbsoluteMonthly, e RelativeMonthly. Não aplicável
intervalDays O intervalo em dias para as execuções de manutenção. É aplicável apenas a aksManagedNodeOSUpgradeSchedule. Não aplicável
intervalWeeks O intervalo em semanas para as execuções de manutenção. Não aplicável
intervalMonths O intervalo em meses para as manutenções. Não aplicável
dayOfWeek O dia da semana especificado para o início da manutenção. Não aplicável
durationHours A duração da janela para a realização da manutenção. Não aplicável
notAllowedDates Um intervalo de datas em que a manutenção não pode ser executada, determinado pelas propriedades subordinadas start e end. É aplicável somente quando você está criando a janela de manutenção usando um arquivo de configuração. Não aplicável

Propriedades obsoletas

Nota

Se criar uma default configuração com as seguintes propriedades obsoletas, ela migra automaticamente para as novas propriedades apresentadas na tabela anterior.

[Preterido] Uma janela de default manutenção tem as seguintes propriedades herdadas:

Nome Descrição Valor padrão
timeInWeek Em uma default configuração, esta propriedade contém os valores day e hourSlots que definem uma janela de manutenção. Não aplicável
timeInWeek.day O dia da semana para realizar a manutenção numa default configuração. Não aplicável
timeInWeek.hourSlots Uma lista de intervalos de tempo de uma hora para realizar manutenção num dia específico numa configuração de default. Não aplicável
notAllowedTime Um intervalo de datas em que a manutenção não pode ser executada, determinado pelas propriedades subordinadas start e end. Essa propriedade é aplicável somente quando você está criando a janela de manutenção usando um arquivo de configuração. Não aplicável

Tipos de agenda

São suportados quatro tipos de horários: Daily, Weekly, AbsoluteMonthly, e RelativeMonthly.

A tabela seguinte mostra que tipos estão disponíveis para cada opção de configuração de manutenção:

Tipo de horário default aksManagedClusterAutoUpgradeSchedule aksManagedNodeOSUpgradeSchedule
Diariamente Não suportado ❌ Suportado ✅ (após junho de 2025) Suportado ✅
Semanalmente Suportado ✅ Suportado ✅ Suportado ✅
AbsoluteMonthly Não suportado ❌ Suportado ✅ Suportado ✅
RelativeMonthly Não suportado ❌ Suportado ✅ Suportado ✅

Todos os campos mostrados para cada tipo de horário são obrigatórios.

Um Daily horário pode ser como "a cada três dias":

"schedule": {
    "daily": {
        "intervalDays": 3
    }
}

Um Weekly horário pode ser "a cada duas semanas à sexta-feira".

"schedule": {
    "weekly": {
        "intervalWeeks": 2,
        "dayOfWeek": "Friday"
    }
}

Um AbsoluteMonthly cronograma pode ser "a cada três meses no primeiro dia do mês":

"schedule": {
    "absoluteMonthly": {
        "intervalMonths": 3,
        "dayOfMonth": 1
    }
}

Um RelativeMonthly agendamento pode ser "a cada dois meses na última segunda-feira":

"schedule": {
    "relativeMonthly": {
        "intervalMonths": 2,
        "dayOfWeek": "Monday",
        "weekIndex": "Last"
    }
}

Valores válidos para weekIndex incluir First, Second, , ThirdFourth, e Last.

Adicionar uma configuração de janela de manutenção

Adicione uma configuração de janela de manutenção a um cluster AKS usando o az aks maintenanceconfiguration add comando.

O primeiro exemplo adiciona uma nova default configuração que agenda a manutenção para ser executada de 1h00 às 5h00 todas as segundas-feiras no fuso UTC horário. O segundo exemplo adiciona uma nova aksManagedAutoUpgradeSchedule configuração que agenda a manutenção para ser executada toda terceira sexta-feira entre 12h00 e 8h00 no fuso UTC+5:30 horário.

# Add a new default configuration
az aks maintenanceconfiguration add --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name default --schedule-type Weekly --day-of-week Monday --interval-weeks 1 --duration 4 --utc-offset +00:00 --start-time 01:00

# Add a new aksManagedAutoUpgradeSchedule configuration
az aks maintenanceconfiguration add --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name aksManagedAutoUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 3 --duration 8 --utc-offset +05:30 --start-time 00:00

Atualizar uma janela de manutenção existente

Atualize uma configuração de manutenção existente usando o az aks maintenanceconfiguration update comando.

O exemplo a seguir atualiza a configuração para agendar a default manutenção para ser executada das 2h00 às 6h00 todas as sextas-feiras:

az aks maintenanceconfiguration update --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name default --schedule-type Weekly --day-of-week Friday --interval-weeks 1 --duration 4 --utc-offset +00:00 --start-time 02:00

Listar todas as janelas de manutenção em um cluster existente

Liste as janelas de configuração de manutenção atuais no seu cluster AKS usando o az aks maintenanceconfiguration list comando:

az aks maintenanceconfiguration list --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME

Mostrar uma janela de configuração de manutenção específica em um cluster existente

Veja uma janela específica de configuração de manutenção no cluster AKS utilizando o comando az aks maintenanceconfiguration show com o parâmetro --name:

az aks maintenanceconfiguration show --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name aksManagedAutoUpgradeSchedule

O exemplo de saída a seguir mostra a janela de manutenção para aksManagedAutoUpgradeSchedule:

{
  "id": "/subscriptions/<subscription>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/maintenanceConfigurations/aksManagedAutoUpgradeSchedule",
  "maintenanceWindow": {
    "durationHours": 4,
    "notAllowedDates": [
      {
        "end": "2024-01-05",
        "start": "2023-12-23"
      }
    ],
    "schedule": {
      "absoluteMonthly": {
        "dayOfMonth": 1,
        "intervalMonths": 3
      },
      "daily": null,
      "relativeMonthly": null,
      "weekly": null
    },
    "startDate": "2023-01-20",
    "startTime": "09:00",
    "utcOffset": "-08:00"
  },
  "name": "aksManagedAutoUpgradeSchedule",
  "notAllowedTime": null,
  "resourceGroup": "myResourceGroup",
  "systemData": null,
  "timeInWeek": null,
  "type": null
}

Excluir uma janela de configuração de manutenção em um cluster existente

Elimina uma janela de configuração de manutenção no teu cluster AKS usando o az aks maintenanceconfiguration delete comando.

O exemplo seguinte elimina a configuração de manutenção autoUpgradeSchedule.

az aks maintenanceconfiguration delete --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name autoUpgradeSchedule

Perguntas frequentes (FAQ)

Como posso verificar as configurações de manutenção existentes no meu cluster?

Utilize o comando az aks maintenanceconfiguration show.

A manutenção reativa e não planejada também pode acontecer durante os notAllowedDates períodos?

Sim. A AKS reserva-se o direito de quebrar estas janelas para operações de manutenção reativas não planeadas que sejam urgentes ou críticas.

Como posso saber se ocorreu um evento de manutenção?

Para lançamentos, verifique a região do seu cluster e procure as informações nos lançamentos semanais para verificar se estão de acordo com a sua programação de manutenção. Para ver o estado das atualizações automáticas, procure registos de atividade no cluster. Você também pode procurar eventos específicos relacionados à atualização, conforme mencionado em Atualizar um cluster AKS.

O AKS também emite eventos da Grade de Eventos do Azure relacionados à atualização. Para saber mais, consulte AKS como uma fonte de grade de eventos.

Posso usar mais de uma configuração de manutenção ao mesmo tempo?

Sim, você pode executar as três configurações simultaneamente: default, aksManagedAutoUpgradeSchedulee aksManagedNodeOSUpgradeSchedule. Se as janelas se sobrepõem, o AKS decide a ordem de execução.

Configurei uma janela de manutenção, mas a atualização não aconteceu. Porquê?

A atualização automática do AKS precisa de um certo tempo, geralmente não superior a 15 minutos, para levar em consideração a janela de manutenção. Recomendamos pelo menos 15 minutos entre a criação ou atualização de uma configuração de manutenção e a hora de início programada.

Além disso, certifique-se de que o cluster seja iniciado quando a janela de manutenção planejada começar. Se o cluster for interrompido, seu plano de controle será desalocado e nenhuma operação poderá ser executada.

Por que um dos meus pools de agentes foi atualizado fora da janela de manutenção?

Se um pool de agentes não for atualizado (por exemplo, porque os orçamentos de interrupção do pod o impediram), ele poderá ser atualizado mais tarde, fora da janela de manutenção. Este cenário é conhecido como uma atualização de recuperação. Evita permitir que os pools de agentes sejam atualizados com uma versão diferente do plano de controlo do AKS.

Outra razão pela qual um pool de agentes pode ser atualizado inesperadamente é quando não há uma configuração de manutenção definida ou se foi eliminado. Nesse caso, um cluster com atualização automática mas sem configuração de manutenção é atualizado em momentos aleatórios (programação padrão), o que pode ocorrer num período indesejado.

Existem práticas recomendadas para as configurações de manutenção?

Recomendamos definir a programação de atualizações de segurança do sistema operacional do nó para uma cadência semanal se você estiver usando o NodeImage canal, porque uma nova imagem de nó é enviada toda semana. Você também pode optar pelo SecurityPatch canal para receber atualizações de segurança diárias.

Pode definir o calendário de atualização automática para uma cadência mensal para se manter atualizado com a política de suporte do Kubernetes N-2.

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.

Posso configurar todos os meus clusters em uma única assinatura para usar a mesma configuração de manutenção?

Não recomendamos a utilização da mesma configuração de manutenção para vários clusters numa única subscrição, pois isso pode levar a erros de limitação do Azure Resource Manager (ARM), causando falhas nas atualizações do cluster. Em vez disso, recomendamos escalonar as janelas de manutenção de cada cluster para evitar esses erros.

Porque é que os meus pools de nós foram atualizados duas vezes durante a mesma janela de manutenção?

Se uma versão mais recente da imagem do nó ficar disponível durante a janela de manutenção, o AKS efetua uma segunda atualização para garantir que os seus pools de nós estão a executar a versão mais recente. Este comportamento é normal e não indica um problema.

Para começar a atualizar seu cluster AKS, consulte Opções de atualização para clusters AKS.