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:
- 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 (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 momento das atualizações automáticas, mas habilitar ou desabilitar a manutenção planejada não irá habilitar nem desabilitar as atualizações automáticas.
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
ounotAllowedDates
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çãodefault
. 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çãodefault
. 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 herdadas (não é mais recomendável):
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 |
Observação
Na versão da API 2023-05-01 em diante, use as propriedades abaixo para configuração default
.
Uma janela de manutenção aksManagedAutoUpgradeSchedule
ou aksManagedNodeOSUpgradeSchedule
e configuração default
da versão da API 2023-05-01 em diante 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
ounotAllowedDates
?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
eaksManagedNodeOSUpgradeSchedule
. 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 um determinado tempo, geralmente não mais do que 15 minutos, para levar em consideração a janela de manutenção. Recomendamos pelo menos 15 minutos 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.
Outro motivo pelo 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 (programação de fallback), o que pode ser um período indesejado.
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 canalSecurityPatch
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
- Para começar a atualizar seu cluster do AKS, confira Opções de atualização para clusters do AKS.
Azure Kubernetes Service