Partilhar via


Interromper atualizações de cluster do Serviço Kubernetes do Azure (AKS) automaticamente em alterações de quebra de API

Este artigo mostra como interromper as atualizações de cluster do Serviço Kubernetes do Azure (AKS) automaticamente em alterações de quebra de API.

Descrição geral

Para ficar dentro de uma versão suportada do Kubernetes, você 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 de quebra de API, depreciações e dependências, como Helm e CSI (Container Storage Interface). Pode ser difícil antecipar essas interrupções e migrar cargas de trabalho críticas sem passar por nenhum tempo de inatividade.

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

Antes de começar

Antes de começar, certifique-se de que cumpre os seguintes pré-requisitos:

  • A operação de atualização é uma alteração de versão secundária do Kubernetes para o plano de controle de cluster.
  • A versão do Kubernetes para a qual você está atualizando é 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 de hora em hora, portanto, não é garantido que qualquer uso de APIs preteridas dentro de uma hora apareça na deteção.

Atenuar as operações de atualização interrompidas

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: pode remover o uso de APIs preteridas (recomendado) ou ignorar a validação para ignorar as alterações da API.

  1. No portal do Azure, navegue até o recurso de cluster e selecione Diagnosticar e resolver problemas

  2. Selecione Criar, Atualizar, Excluir e dimensionar>descontinuações 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 de API preterido foi visto. Os verbos somente leitura são excluídos do uso preterido da api, ou seja, Get/List/Watch.( Você também pode verificar o uso anterior da API ativando as informações do contêiner e explorando os logs de auditoria do kube.)

  4. Tente atualizar novamente o cluster.

Ignorar a validação para ignorar as alterações da API

Nota

Esse método requer que você use a CLI do Azure versão 2.57 ou posterior. Se você tiver a extensão de visualização da CLI instalada, precisará atualizar para a versão 3.0.0b10 ou posterior. Esse método não é recomendado, pois APIs preteridas na versão Kubernetes de destino podem não funcionar a longo prazo. Recomendamos removê-los o mais rápido possível após a conclusão da atualização.

  1. Ignore a validação para ignorar as alterações de quebra de API e invocar uma atualização. Especifique o enable-force-upgrade sinalizador e defina a upgrade-override-until propriedade para definir o final da janela durante a qual a validação é ignorada. Se nenhum valor for definido, o padrão da janela será de três dias a partir da hora atual. A data e a hora especificadas 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
    

    Nota

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

Próximos passos

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