Arrêter automatiquement les mises à niveau du cluster Azure Kubernetes Service (AKS) sur des changements cassants d’API
Cet article vous montre comment arrêter automatiquement les mises à niveau du cluster Azure Kubernetes Service (AKS) lors de changements cassants d’API.
Vue d’ensemble
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.
Vous pouvez configurer votre cluster AKS pour qu’il arrête automatiquement les opérations de mise à niveau qui consistent à apporter un changement de version mineur avec des API dépréciées et pour qu’il vous informe du problème. Cette fonctionnalité vous permet d’éviter des interruptions inattendues et vous donne le temps de résoudre les API dépréciées avant de poursuivre la mise à niveau.
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"
})
Vous avez deux options pour atténuer le problème : vous pouvez supprimer l’utilisation des API dépréciées (recommandé) ou passer outre la validation pour ignorer les changements des API.
Supprimer l’utilisation des API dépréciées (recommandé)
Dans le portail Azure, accédez à votre ressource de cluster et sélectionnez Diagnostiquer et résoudre les problèmes.
Sélectionnez Créer, mettre à niveau, supprimer et mettre à l’échelle>Dépréciations des API Kubernetes.
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. S’il s’agit d’un mécanisme de suivi des modifications (« watch »), vous pouvez attendre que l’utilisation tombe à zéro. (Vous pouvez également vérifier l’utilisation d’API passée en activant Container Insights et en explorant les journaux d’audit kube.)
Réessayez la mise à niveau de votre cluster.
Contourner une validation pour ignorer les modifications de l’API
Remarque
Cette méthode vous oblige à utiliser Azure CLI version 2.57 ou ultérieure. Si l’extension CLI de préversion est installée, vous devez effectuer une mise à jour vers la version 3.0.0b10
ou ultérieure. Cette méthode n’est pas recommandée, car les API dépréciées dans la version de Kubernetes ciblée risquent de 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 et appelez une mise à niveau. 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 upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION --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 sur13:00:00
GMT. Pour plus d’informations, consultez Représentations de date et d’heure combinées.
É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).
Azure Kubernetes Service