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.
Remover o uso de APIs preteridas (recomendado)
No portal do Azure, navegue até a página de visão geral do seu cluster e selecione Diagnosticar e resolver problemas
Selecione Criar, Atualizar, Excluir e Dimensionar>Preterimentos da API do Kubernetes.
Aguarde 12 horas a partir do momento em que o último uso da API preterida foi visto. Os verbos somente leitura são excluídos do uso obsoleto da API, ou seja, Obter/Listar/Observar. (Você também pode verificar o uso anterior da API habilitando Insights do contêiner e explorando os logs de auditoria do Kube.)
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.
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 propriedadeupgrade-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 para13: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).
Azure Kubernetes Service