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

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 é executada no cluster do AKS automaticamente. Há dois tipos de operações de manutenção:

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.

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 você 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.
  • As operações de manutenção são consideradas apenas de melhor esforço e não tem garantia de ocorrer dentro de uma janela especificada.

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

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

  • default é uma configuração básica para controlar 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 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 configurar definiçõ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.

  • aksManagedNodeOSUpgradeSchedule controla quando executar o patch de segurança do SO do nó agendado pelo canal de atualização automática do sistema operacional do nó. Você pode configurar definiçõ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 os canais de atualização automática do SO do nó, 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.

Criar uma janela de manutenção

Observação

Quando você estiver usando 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 que definem uma janela de manutenção. Não aplicável
timeInWeek.day O dia da semana para executar a manutenção em uma configuração default. Não aplicável
timeInWeek.hourSlots Uma lista de intervalos de tempo de uma hora para executar a manutenção em um dia específico em uma configuração default. Não aplicável
notAllowedTime Um intervalo de datas em que a manutenção não pode ser executada, determinada pelas propriedades filho 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

Uma janela de manutenção aksManagedAutoUpgradeSchedule ou aksManagedNodeOSUpgradeSchedule 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 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ã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 semanas para execuções de manutenção. É aplicável apenas a aksManagedNodeOSUpgradeSchedule. Não aplicável
intervalWeeks O intervalo em semanas para execuções de manutenção. Não aplicável
intervalMonths O intervalo em meses para execuções de manutenção. 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 execução da manutenção. Não aplicável
notAllowedDates Um intervalo de datas em que a manutenção não pode ser executada, determinada pelas propriedades filho start e end. Ele é aplicável somente quando você está criando a janela de manutenção usando um arquivo de configuração. Não aplicável

Tipos de agendamentos

Quatro tipos de agendamento estão disponíveis: Daily, Weekly, AbsoluteMonthly e RelativeMonthly.

Os tipos de agendamento Weekly, AbsoluteMonthly e RelativeMonthly são aplicáveis somente às configurações aksManagedClusterAutoUpgradeSchedule e aksManagedNodeOSUpgradeSchedule. Os agendamentos Daily são aplicáveis somente às configurações aksManagedNodeOSUpgradeSchedule.

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

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

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

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

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

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

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

Um agendamento RelativeMonthly pode ser semelhante a "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 da 1h às 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 das 2h às 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 dividir essas janelas para operações de manutenção não planejadas e reativas que são urgentes ou críticas.

  • Como é possível saber se ocorreu um evento de manutenção?

    Para as versões, verifique a região do cluster e procure informações nas versões semanais para ver se correspondem ao seu agendamento 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 específicos relacionados a atualizações, conforme mencionado em Atualizar um cluster do AKS.

    O AKS também emite eventos da Grade de Eventos do Azure 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, é possível executar todas as três configurações simultaneamente: default, aksManagedAutoUpgradeSchedule e aksManagedNodeOSUpgradeSchedule. Se 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 e a hora de início agendada.

    Além disso, o cluster deve estar iniciado quando a janela de manutenção planejada for iniciada. 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 de pods o impediram), ele pode ser atualizado posteriormente, fora da janela de manutenção. Esse cenário é chamado de "atualização de recuperação". Ele evita permitir que os pools de agentes sejam atualizados com uma versão diferente do plano 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 sistema operacional do nó para uma cadência semanal se estiver usando o canal NodeImage, pois uma nova imagem de nó é enviada todas as semanas. Você também pode optar pelo canal SecurityPatch para receber atualizações de segurança diárias.

    Defina a agenda de atualizações automáticas com uma cadência mensal para se manter atualizado com a 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