Partage via


Arrêter automatiquement les mises à niveau du cluster Azure Kubernetes Service (AKS) sur des changements cassants d’API

Pour rester dans une version de Kubernetes prise en charge, vous devez mettre à niveau votre cluster au moins une fois par an et vous préparer à toutes les interruptions possibles. Ces interruptions incluent celles provoquées par des changements cassants, des dépréciations et des dépendances d’API comme Helm et CSI (Container Storage Interface). Il peut être difficile d’anticiper ces interruptions et de migrer des charges de travail critiques sans subir de temps d’arrêt.

AKS arrête maintenant de manière automatique des opérations de mise à niveau constituées d’un changement de version mineur avec des API déconseillées et vous envoie un message d’erreur pour vous informer de ce problème.

Avant de commencer

Avant de commencer, veillez à respecter les conditions préalables suivantes :

  • L’opération de mise à niveau est un changement de version mineure Kubernetes pour le plan de contrôle du cluster.
  • Vous effectuez une mise à niveau vers Kubernetes version 1.26 ou ultérieure.
  • La dernière utilisation observée des API déconseillées pour la version ciblée vers laquelle vous effectuez la mise à niveau doit se produire dans les 12 heures précédant l’opération de mise à niveau. AKS enregistre l’utilisation toutes les heures, de sorte que l’utilisation d’API dépréciées dans l’heure peut ne pas apparaître dans la détection.

Atténuer des opérations de mise à niveau arrêtées

Si vous respectez les conditions préalables, que vous tentez une mise à niveau et que vous recevez un message d’erreur similaire à l’exemple de message d’erreur suivant :

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"
})

Deux options vous permettent d’atténuer le problème. Vous pouvez supprimer l’utilisation des API déconseillées (recommandé) ou ignorer la validation pour ignorer les modifications apportées à l’API.

  1. Dans le Portail Azure, accédez à la page de vue d’ensemble de votre cluster pour sélectionner l’option Diagnostiquer et résoudre les problèmes.

  2. Accédez à la catégorie Créer, mettre à niveau, supprimer et mettre à l’échelle, puis sélectionnez Dépréciations de l’API Kubernetes.

    A screenshot of the Azure portal showing the 'Selected Kubernetes API deprecations' section.

  3. Attendez 12 heures à partir de la dernière utilisation constatée des API dépréciées. Vérifiez le verbe dans l’utilisation de l’API déconseillée pour savoir s’il s’agit d’un espion.

  4. Réessayez la mise à niveau de votre cluster.

Vous pouvez également vérifier l’utilisation passée de l’API en activant Container Insights et en explorant les journaux d’audit kube. Vérifiez le verbe dans l’utilisation de l’API déconseillée pour comprendre s’il s’agit d’un cas d’utilisation d’espion.

Contourner une validation pour ignorer les modifications de l’API

Remarque

Cette méthode vous oblige à utiliser Azure CLI version 2.53 ou ultérieure. Si l’extension CLI aks-preview est installée, vous devez effectuer une mise à jour vers la version 0.5.154 ou une version ultérieure. Cette méthode n’est pas recommandée, car les API déconseillées dans la version de Kubernetes ciblée peuvent ne pas fonctionner à long terme. Nous vous recommandons de les supprimer dès que possible une fois la mise à niveau terminée.

  • Contournez la validation pour ignorer les changements cassants d’API en utilisant la commande az aks update. Spécifiez l’indicateur enable-force-upgrade et configurez la propriété upgrade-override-until pour définir la fin de la fenêtre pendant laquelle la validation est contournée. Si aucune valeur n’est définie, la valeur par défaut de la fenêtre est de trois jours à partir de l’heure actuelle. La date et l’heure que vous spécifiez doivent se situer dans le futur.

    az aks update --name myAKSCluster --resource-group myResourceGroup --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
    

    Notes

    Z est l’indicateur de zone pour le décalage UTC/GMT zéro, également appelé heure « Zulu ». Cet exemple montre comment définir la fin de la fenêtre sur 13:00:00 GMT. Pour plus d’informations, consultez Représentations de date et d’heure combinées.

  • Une fois que la commande précédente a réussi, vous pouvez réessayer l’opération de mise à niveau.

    az aks upgrade --name myAKSCluster --resource-group myResourceGroup --kubernetes-version <KUBERNETES_VERSION>
    

Étapes suivantes

Cet article vous a présenté comment arrêter automatiquement les mises à niveau du cluster AKS sur des changements cassants d’API. Si vous souhaitez obtenir plus d’informations sur les options de mise à niveau des clusters AKS, voir Options de mise à niveau des clusters Azure Kubernetes Service (AKS).