Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: ✔️ AKS Automatic ✔️ AKS Standard
Este artigo mostra como o Azure Kubernetes Service (AKS) pode bloquear automaticamente atualizações de cluster quando deteta o uso obsoleto da API Kubernetes.
Para a maioria das cargas de trabalho de produção, o AKS Automatic é a experiência predefinida recomendada e pronta para produção do AKS. A deteção de quebras de alteração da API Kubernetes está pré-configurada tanto nos clusters AKS Automatic como AKS Standard.
Comportamento no AKS Automatic e no AKS Standard
Ambos os modos cluster incluem esta salvaguarda:
- AKS Automatic: Incluído por predefinição como parte das salvaguardas da plataforma AKS Automatic preparada para produção.
- AKS Standard: Incluído por defeito nos clusters AKS Standard.
Em ambos os modos, o AKS pode bloquear operações de atualização de versões menores quando detetar o uso recente de APIs obsoletas ou removidas na versão alvo do Kubernetes.
Overview
Para se manter dentro de uma versão Kubernetes suportada, deve atualizar o seu cluster pelo menos uma vez por ano e preparar-se para possíveis interrupções. Estas disrupções podem incluir alterações incompatíveis na API, descontinuações e dependências de componentes como o Helm e a Container Storage Interface (CSI). Pode ser difícil antecipar estas perturbações e migrar cargas de trabalho críticas sem tempo de inatividade.
Quando o AKS detetar o uso obsoleto da API para a versão alvo, pode bloquear automaticamente as operações de atualização de versões menores e alertá-lo para o problema. Este comportamento ajuda-o a evitar interrupções inesperadas e dá-lhe tempo para corrigir o uso obsoleto da API antes de continuar a atualização.
Prerequisites
Certifique-se de cumprir os seguintes pré-requisitos:
- A operação de atualização é uma alteração menor de versão do Kubernetes para o plano de controlo do cluster.
- A versão alvo do Kubernetes é 1.26 ou posterior.
- A última utilização vista de APIs obsoletas para a versão alvo ocorreu dentro de 12 horas antes da operação de atualização. O AKS regista a utilização de hora a hora, pelo que a utilização na última hora pode não aparecer na deteção.
Nota
Não precisas de ativar manualmente esta funcionalidade de deteção. Os clusters do AKS Automatic e do AKS Standard vêm pré-configurados com ele.
Mitigar as operações de atualização interrompidas
Se cumprir os pré-requisitos, tentar uma atualização e receber um erro semelhante à seguinte mensagem de erro:
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"
})
Use uma das seguintes opções:
Remover o uso de APIs obsoletas (recomendado)
No portal Azure, navegue até ao recurso do seu cluster e selecione Diagnosticar e resolver problemas
Selecione Criar, Atualizar, Eliminar e Escalar>as desvalorizações da API Kubernetes.
Aguarde 12 horas desde o momento em que foi detetada a última utilização de uma API descontinuada. Os verbos só de leitura são excluídos da utilização da API obsoleta, ou seja, Get/List/Watch. Também pode verificar o uso passado da API ativando o Container insights e explorando os registos de auditoria do kube.
Tenta novamente a atualização do teu cluster.
Ignorar a validação para ignorar alterações à API
Nota
Este método requer CLI do Azure versão 2.57 ou posterior. Se tiver a extensão da CLI de pré-visualização instalada, atualize para a versão 3.0.0b10 ou posterior. Este método não é recomendado para operações normais de produção porque APIs obsoletas na versão alvo do Kubernetes podem falhar a longo prazo. Remova o uso obsoleto da API o mais rapidamente possível após a atualização.
Execute a atualização ignorando a validação, utilizando o comando az aks upgrade com --enable-force-upgrade, e defina --upgrade-override-until para indicar quando termina o período durante o qual a validação é ignorada. Se não definires um valor, a janela assume, por predefinição, três dias a partir da hora atual. A data e hora indicadas devem ser no futuro.
# Set environment variables
RESOURCE_GROUP_NAME=<your-resource-group-name>
CLUSTER_NAME=<your-cluster-name>
KUBERNETES_VERSION=<target-kubernetes-version>
# Run the upgrade command with validation bypass
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 da zona para o desfasamento zero em relação a UTC/GMT, também conhecido como hora 'Zulu'. Este exemplo define o fim da janela para 13:00:00 a GMT. Para mais informações, consulte Representações combinadas de data e hora.
Considerações sobre a produção
Para cargas de trabalho em produção, siga estas práticas:
- Trate o bloqueio de upgrade como um mecanismo de segurança, não como um estado de falha.
- Prefiro migração de API a forçar o bypass.
- Use períodos de manutenção planeados e verificações pré-atualização.
- Monitorizar continuamente o uso obsoleto da API para evitar bloqueios de atualização de última hora.
Conteúdo relacionado
Este artigo mostrou-lhe como impedir automaticamente atualizações de clusters AKS após alterações que quebram a API. Para saber mais sobre mais opções de atualização para clusters AKS, consulte Opções de atualização para clusters Azure Kubernetes Service (AKS).
Para saber mais sobre o AKS Automatic, consulte os seguintes artigos: