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 planejada para agendar e controlar atualizações de imagem de cluster e nó no Serviço 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. Você pode usar a manutenção planejada para agendar o tempo das atualizações automáticas, mas habilitar ou desabilitar a manutenção planejada não habilitará ou desabilitará 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 você estiver usando a CLI do Azure, atualize 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 quebrar as janelas de manutenção planeada para operações de manutenção reativas não planeadas que sejam urgentes ou críticas. Essas operações de manutenção podem até ser executadas durante os notAllowedTime períodos definidos notAllowedDates 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 as versões do AKS. 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 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 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 operacional do nó, consulte Corrigir e atualizar automaticamente as imagens do nó do cluster AKS.

Recomendamos o uso aksManagedAutoUpgradeSchedule para todos os cenários de atualização de cluster e aksManagedNodeOSUpgradeSchedule para todos os cenários de patch de segurança do sistema operacional do nó.

A default opção destina-se exclusivamente aos lançamentos semanais do AKS. Você pode alternar a default configuração para a aksManagedAutoUpgradeSchedule configuração ou aksManagedNodeOSUpgradeSchedule usando o az aks maintenanceconfiguration update comando.

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.

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

Uma default janela de manutenção tem as seguintes propriedades herdadas (não mais recomendadas):

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

Nota

A partir da versão da API 2023-05-01, use as propriedades abaixo para default configuração.

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

Nome Descrição Default value
utcOffset O fuso horário para manutenção de 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 manutenção é executado. É aplicável apenas a aksManagedNodeOSUpgradeSchedule. Não aplicável
intervalWeeks O intervalo em semanas para a manutenção é executado. Não aplicável
intervalMonths O intervalo em meses para a manutenção é executado. 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 execução da manutenção. Não aplicável
notAllowedDates Um intervalo de datas que a manutenção não pode executar, determinado por start e end propriedades do filho. É 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

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

Weekly, AbsoluteMonthlye RelativeMonthly os tipos de agenda são aplicáveis apenas a aksManagedClusterAutoUpgradeSchedule e aksManagedNodeOSUpgradeSchedule configurações. Daily As agendas são aplicáveis apenas às aksManagedNodeOSUpgradeSchedule configurações.

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

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

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

Um Weekly horário pode parecer "a cada duas semanas na sexta-feira":

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

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

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

Um RelativeMonthly horário pode parecer "a cada dois meses na última segunda-feira":

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

Valores válidos para weekIndex incluir First, Second, , FourthThird, 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 2h00 todas as segundas-feiras. 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 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

Nota

Ao usar um default tipo de configuração, você pode omitir o parâmetro para permitir a --start-time 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 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 3h00 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 AKS usando o az aks maintenanceconfiguration list comando:

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

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

az aks maintenanceconfiguration show --resource-group myResourceGroup --cluster-name myAKSCluster --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

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

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

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

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 notAllowedDates não planejada também pode acontecer durante os notAllowedTime 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 versões, verifique a região do cluster e procure informações em versões semanais para ver se elas correspondem à 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 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 do pod o impediram), ele poderá ser atualizado mais tarde, fora da janela de manutenção. Esse cenário é chamado de "atualização de recuperação". Isso evita permitir que os pools de agentes sejam atualizados com uma versão diferente do plano de controle 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 ele foi excluído. Nesse caso, um cluster com atualização automática, mas sem uma configuração de manutenção, será atualizado em momentos aleatórios (cronograma de fallback), o que pode ser um período de tempo 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.

    Defina o cronograma 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 o uso da mesma configuração de manutenção para vários clusters em uma única assinatura, pois isso pode levar a erros de limitação de ARM, causando falhas nas atualizações de cluster. Em vez disso, recomendamos escalonar as janelas de manutenção de cada cluster para evitar esses erros.

Próximos passos