Use a Manutenção Planejada para agendar e controlar atualizações para seu Cluster do Azure Kubernetes Service (AKS)

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

A manutenção regular do cluster do AKS é executada automaticamente. Há dois tipos de operações de manutenção: iniciadas pelo AKS e iniciadas pelo usuário. A manutenção iniciada pelo AKS inclui as versões semanais executadas pelo AKS 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 automáticas de segurança do sistema operacional do nó. O recurso Manutenção Planejada permite que você execute os dois tipos de manutenção em uma cadência de sua escolha minimizando, assim, qualquer impacto na carga de trabalho.

Antes de começar

  • Este artigo considera que já existe um cluster do AKS. Se você não tiver um cluster do AKS, confira Criar um cluster do AKS.
  • Se estiver usando a CLI do Azure, atualize para a versão mais recente usando o comando az upgrade.

Considerações

Ao usar a Manutenção Planejada, as seguintes considerações se aplicam:

  • O AKS se reserva o direito de dividir essas janelas de Manutenção Planejada para operações de manutenção não planejadas e reativas que são urgentes ou críticas. Essas operações de manutenção podem até ser executadas durante os períodos notAllowedTime ou notAllowedDates definidos na sua configuração.
  • A execução de operações de manutenção é considerada apenas de melhor esforço e não tem garantia de ocorrer dentro de uma janela especificada.

Configurações de agendamento de Manutenção Planejada

Há três tipos de configuração de agendamento de manutenção disponíveis: default, aksManagedAutoUpgradeSchedule e aksManagedNodeOSUpgradeSchedule.

  • default é uma configuração básica usada para controlar as versões do AKS. As versões podem levar até duas semanas para serem distribuídas para todas as regiões desde o momento inicial do envio devido às Práticas de Implantação Segura (SDP) do Azure. Escolha default para agendar essas atualizações da forma menos inconveniente para você. Você pode monitorar o status de uma versão contínua do AKS por região com o rastreador de versões semanais.
  • aksManagedAutoUpgradeSchedule controla quando executar as atualizações agendadas pelo canal de atualização automática designado. Você pode definir configurações de cadência e recorrência mais controladas com essa configuração em comparação com a configuração default. Para obter mais informações sobre a atualização automática do cluster, consulte Atualizar automaticamente um cluster do Serviço de Kubernetes do Azure (AKS).
  • aksManagedNodeOSUpgradeSchedule controla quando executar o patch de segurança do sistema operacional do nó 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 controladas com essa configuração em comparação com a configuração default. Para obter mais informações sobre o canal de atualização automática do NodeOS, confira Corrigir e atualizar automaticamente imagens de nó de cluster do AKS

É recomendável usar aksManagedAutoUpgradeSchedule para todos os cenários de atualização de cluster e aksManagedNodeOSUpgradeSchedule para todos os cenários de aplicação de patch de segurança do sistema operacional do nó. A opção default destina-se exclusivamente a versões semanais do AKS. Você pode alternar a configuração default para as configurações aksManagedAutoUpgradeSchedule ou aksManagedNodeOSUpgradeSchedule usando o comando az aks maintenanceconfiguration update.

Como criar uma janela de manutenção

Observação

Ao usar a atualização automática, para garantir a funcionalidade adequada, use uma janela de manutenção com uma duração de quatro horas ou mais.

As janelas de Manutenção Planejada são especificadas em UTC (Tempo Universal Coordenado).

Uma janela de manutenção default tem as seguintes propriedades:

Nome Descrição Valor padrão
timeInWeek Em uma configuração default, essa propriedade contém os valores day e hourSlots definindo uma janela de manutenção N/D
timeInWeek.day O dia da semana para executar a manutenção em uma configuração default N/D
timeInWeek.hourSlots Uma lista de intervalos de tempo de uma hora para executar a manutenção em determinado dia em uma configuração default N/D
notAllowedTime Especifica um intervalo de datas em que a manutenção não pode ser executada, determinada pelas propriedades filho start e end. Aplicável somente ao criar a janela de manutenção usando um arquivo de configuração N/D

Uma janela de manutenção aksManagedAutoUpgradeSchedule ou aksManagedNodeOSUpgradeSchedule tem as seguintes propriedades:

Nome Descrição Valor padrão
utcOffset Usado para determinar o fuso horário para manutenção do cluster +00:00
startDate A data em que a janela de manutenção começa a entrar em vigor A data atual na hora da criação
startTime A hora de início da manutenção com base no fuso horário determinado por utcOffset N/D
schedule Usado para determinar a frequência. Três tipos estão disponíveis: Weekly, AbsoluteMonthly e RelativeMonthly N/D
intervalDays O intervalo em semanas para execuções de manutenção. Aplicável somente a aksManagedNodeOSUpgradeSchedule N/D
intervalWeeks O intervalo em semanas para execuções de manutenção N/D
intervalMonths O intervalo em meses para execuções de manutenção N/D
dayOfWeek O dia da semana especificado para o início da manutenção N/D
durationHours A duração da janela para a execução da manutenção N/D
notAllowedDates Especifica um intervalo de datas em que a manutenção não pode ser executada, determinada pelas propriedades filho start e end. Aplicável somente ao criar a janela de manutenção usando um arquivo de configuração N/D

Noções básicas sobre os tipos de agendamento

Há quatro tipos de agendamento disponíveis: Daily, Weekly, AbsoluteMonthly e RelativeMonthly. Esses tipos de agendamento só são aplicáveis às configurações aksManagedClusterAutoUpgradeSchedule e aksManagedNodeOSUpgradeSchedule. Agendamento Daily são aplicáveis somente a tipos aksManagedNodeOSUpgradeSchedule.

Observação

Todos os campos mostrados para cada tipo de agendamento respectivo são obrigatórios.

Agendamento diário

Observação

Agendamentos diários só são aplicáveis a tipos de configuração aksManagedNodeOSUpgradeSchedule.

Um agendamento Daily pode ser semelhante a "a cada três dias":

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

Agendamento semanal

Um agendamento Weekly pode parecer "a cada duas semanas na sexta-feira":

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

Agendamento AbsoluteMonthly

Um agendamento AbsoluteMonthly pode parecer "a cada três meses, no primeiro dia do mês":

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

Agendamento RelativeMonthly

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

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

Os valores válidos para weekIndex incluem First, Second, Third, Fourth e Last.

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

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

    O primeiro exemplo adiciona uma nova configuração default que agenda a manutenção a ser executada entre 1h e 2h todas as segundas-feiras. O segundo exemplo adiciona uma nova configuração aksManagedAutoUpgradeSchedule que agenda a manutenção a ser executada a cada três sextas-feiras entre 0h e 8h no fuso horário UTC+5:30.

    # Add a new default configuration
    az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 1
    
    # Add a new aksManagedAutoUpgradeSchedule configuration
    az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 3 --duration 8 --utc-offset +05:30 --start-time 00:00
    

    Observação

    Ao usar um tipo de configuração default, você pode omitir o parâmetro --start-time para permitir a manutenção a qualquer momento durante um dia.

Atualizar uma janela de manutenção existente

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

    O exemplo a seguir atualiza a configuração default para agendar a manutenção a ser executada entre 2h e 3h todas as segundas-feiras.

    az aks maintenanceconfiguration update --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 2
    

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

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

az aks maintenanceconfiguration list --resource-group myResourceGroup --cluster-name myAKSCluster

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

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

az aks maintenanceconfiguration show --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule

O seguinte exemplo de saída mostra a janela de manutenção por 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
}

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

  • Exclua uma janela de configuração de manutenção no cluster do AKS usando o comando az aks maintenanceconfiguration delete.

    O exemplo a seguir exclui a configuração de manutenção autoUpgradeSchedule.

    az aks maintenanceconfiguration delete --resource-group myResourceGroup --cluster-name myAKSCluster --name autoUpgradeSchedule
    

Perguntas frequentes

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

    Use o comando az aks maintenanceconfiguration show.

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

    Sim, o AKS reserva-se o direito de interromper essas janelas para operações de manutenção reativa não planejadas que sejam urgentes ou críticas.

  • Como você pode saber se ocorreu um evento de manutenção?

    Para versões, verifique a região do cluster e pesquise informações de versão em versões semanais e valide se elas correspondem ou não à agenda de manutenção. Para exibir o status de suas atualizações automáticas, pesquise os logs de atividades no cluster. Você também pode pesquisar eventos relacionados a atualizações específicos, conforme mencionado em Atualizar um cluster do AKS. O AKS também emite eventos da Grade de Eventos relacionados a atualizações. Para saber mais, confira AKS como uma fonte da Grade de Eventos.

  • É possível usar mais de uma configuração de manutenção ao mesmo tempo?

    Sim, você pode executar todas as três configurações simultaneamente, ou seja, default, aksManagedAutoUpgradeSchedule e aksManagedNodeOSUpgradeSchedule. Caso as janelas se sobreponham, o AKS decidirá a ordem de execução.

  • Configurei uma janela de manutenção, mas a atualização não aconteceu, por quê?

    A atualização automática do AKS precisa de determinado tempo para levar em consideração a janela de manutenção. Recomendamos pelo menos 24 horas entre a criação ou a atualização de uma configuração de manutenção na hora de início agendada.

    Além disso, o cluster deve estar iniciado quando a janela de manutenção planejada estiver sendo iniciada. Se o cluster for interrompido, seu plano de controle será desalocado e nenhuma operação poderá ser executada.

  • A atualização automática do AKS não atualizou todos os meus pools de agentes ou um dos pools foi atualizado fora da janela de manutenção?

    Se um pool de agentes não for atualizado (por exemplo, devido aos orçamentos de interrupção do pod que o impedem de atualizar) ou estiver em um estado de falha, ele poderá ser atualizado posteriormente fora da janela de manutenção. Esse cenário é chamado de "atualização de recuperação" e evita permitir pools de agentes com uma versão diferente do painel de controle do AKS.

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

    Recomendamos definir o agendamento de atualizações de segurança do NodeOS para uma cadência semanal se você estiver usando NodeImage o canal, já que uma nova imagem de nó é enviada toda semana e diariamente se você optar por SecurityPatch um canal para receber atualizações diárias de segurança. Defina a agenda de atualizações automáticas com uma cadência mensal para se manter no topo da política de suporte N-2 do Kubernetes. Para obter uma discussão detalhada sobre as melhores práticas de atualização e outras considerações, veja Diretrizes de patch e atualização do AKS.

Próximas etapas