Compartilhar via


Parar atualizações de cluster do Serviço de Kubernetes do Azure (AKS) automaticamente nas alterações interruptivas da API

Saiba como parar atualizações de cluster do Serviço de Kubernetes do Azure (AKS) automaticamente em alterações interruptivas da API.

Visão geral

Para ficar dentro de uma versão do Kubernetes com suporte, você geralmente precisa atualizar seu cluster pelo menos uma vez por ano e se preparar para todas as possíveis interrupções. Essas interrupções incluem aquelas causadas por alterações significativas na API, descontinuações e dependências, como Helm e Interface de Armazenamento de Contêiner (CSI). Pode ser difícil prever essas interrupções e migrar cargas de trabalho críticas sem passar por nenhum tempo de inatividade.

Você pode configurar o cluster do AKS para interromper automaticamente as operações de atualização que consistem em uma alteração de versão secundária com APIs preteridas e alertá-lo sobre o problema. Esse recurso ajuda você a evitar interrupções inesperadas e oferece tempo para resolver as APIs preteridas antes de prosseguir com a atualização.

Antes de começar

Antes de iniciar, verifique se você cumpre os seguintes pré-requisitos:

  • A operação de atualização é uma pequena alteração da versão do Kubernetes para o painel de controle de cluster.
  • A versão do Kubernetes para a qual você está atualizando deve ser 1.26 ou posterior.
  • O último uso visto de APIs preteridas para a versão de destino para a qual você está atualizando deve ocorrer dentro de 12 horas antes da operação de atualização. O AKS registra o uso a cada hora, portanto, qualquer uso de APIs preteridas dentro de uma hora não é garantido para aparecer na detecção.

A mitigação parou as operações de atualização

Se você atender aos pré-requisitos, tente uma atualização e receba uma mensagem de erro semelhante à seguinte mensagem de erro de exemplo:

Bad Request({
  "code": "ValidationError",
  "message": "Control Plane upgrade is blocked due to recent usage of a Kubernetes API deprecated in the specified version. Please refer to https://kubernetes.io/docs/reference/using-api/deprecation-guide to migrate the usage. To bypass this error, set enable-force-upgrade in upgradeSettings.overrideSettings. Bypassing this error without migrating usage will result in the deprecated Kubernetes API calls failing. Usage details: 1 error occurred:\n\t* usage has been detected on API flowcontrol.apiserver.k8s.io.prioritylevelconfigurations.v1beta1, and was recently seen at: 2023-03-23 20:57:18 +0000 UTC, which will be removed in 1.26\n\n",
  "subcode": "UpgradeBlockedOnDeprecatedAPIUsage"
})

Você tem duas opções para atenuar o problema: você pode remover o uso de APIs preteridas (recomendadas) ou ignorar a validação para ignorar as alterações de API.

  1. No portal do Azure, navegue até a página de visão geral do seu cluster e selecione Diagnosticar e resolver problemas

  2. Selecione Criar, Atualizar, Excluir e Dimensionar>Preterimentos da API do Kubernetes.

    Uma captura de tela do portal do Azure mostrando a seção 'Descontinuações selecionadas da API do Kubernetes'.

  3. Aguarde 12 horas a partir do momento em que o último uso da API preterida foi visto. Verifique o verbo no uso da API preterida para saber se é uma inspeção. Se for um relógio, você poderá aguardar o uso cair para zero. (Você também pode verificar o uso anterior da API habilitando os Insights de Contêiner e explorando os logs de auditoria do kube).

  4. Tentar novamente a atualização do cluster.

Dispensar a validação para ignorar as alterações de API.

Observação

Esse método requer o uso da versão 2.57 ou posterior da CLI do Azure. Se você tiver a extensão de CLI em versão prévia instalada, será necessário atualizar para a versão 3.0.0b10 ou posterior. Este método não é recomendado, pois as APIs preteridas na versão do Kubernetes de destino podem não funcionar a longo prazo. Recomendamos removê-las o mais rápido possível após a conclusão da atualização.

  1. Ignorar a validação para ignorar alterações interruptivas da API e invocar uma atualização. Especifique o sinalizador enable-force-upgrade e defina a propriedade upgrade-override-until para definir o final da janela durante a qual a validação é ignorada. Se nenhum valor for definido, a janela será padronizada de três dias a partir da hora atual. A data e a hora que você especificar devem ser no futuro.

    az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
    

    Observação

    Z é o designador de zona para o deslocamento UTC/GMT zero, também conhecido como horário 'Zulu'. Este exemplo define o fim da janela para 13:00:00 GMT. Para mais informações, ver Representações combinadas de data e hora.

Próximas etapas

Esse artigo mostrou como parar atualizações de cluster do AKS automaticamente em alterações de falha de API. Para saber mais sobre mais opções de atualização para clusters do AKS, consulte opções de atualização para clusters do Serviço de Kubernetes do Azure (AKS).