Résoudre les problèmes de codes d’erreur ZonalAllocationFailed, AllocationFailed ou OverconstrainedAllocationRequest

Résumé

Cet article explique comment identifier et résoudre les ZonalAllocationFailedAllocationFailedOverconstrainedAllocationRequest erreurs qui peuvent se produire lorsque vous essayez de créer, déployer ou mettre à jour un cluster Azure Kubernetes Service (AKS).

Conditions préalables

Pour résoudre ces erreurs, il est recommandé d’avoir les conditions préalables suivantes :

  • Azure CLI (facultatif), version 2.86.0 ou ultérieure. Si Azure CLI est déjà installé, utilisez cette option az --version pour vérifier le numéro de version.
  • Azure PowerShell (facultatif) .

Symptômes

Lorsque vous essayez de créer, de mettre à niveau ou de monter en puissance un cluster, vous recevez l’un des messages d’erreur suivants :

Code : ZonalAllocationFailed

Message : Allocation failed. We do not have sufficient capacity for the requested VM size in this zone. Read more about improving likelihood of allocation success at https://aka.ms/allocation-guidance. Please note that allocation failures can also arise if a proximity placement group is associated with this VMSS. See https://learn.microsoft.com/troubleshoot/azure/azure-kubernetes/error-code-zonalallocationfailed-allocationfailed for more details. This is not AKS controlled behavior, please ask help to VMSS team for allocation failure. If the error is due to capacity constrain, consider upgrade with maxUnavailable instead of maxSurge, details: aka.ms/aks/maxUnavailable.

Code : AllocationFailed

Message : The VM allocation failed due to an internal error. Please retry later or try deploying to a different location. Please note that allocation failures can also arise if a proximity placement group is associated with this VMSS. See https://learn.microsoft.com/troubleshoot/azure/azure-kubernetes/error-code-zonalallocationfailed-allocationfailed for more details. This is not AKS controlled behavior, please ask help to VMSS team for allocation failure.

Code : OverconstrainedAllocationRequest

Message : Create or update VMSS failed. Allocation failed. VM(s) with the following constraints cannot be allocated, because the condition is too restrictive. Please remove some constraints and try again. Constraints applied are: - Differencing (Ephemeral) Disks - Networking Constraints (such as Accelerated Networking or IPv6) - VM Size

Cause 1 : Disponibilité limitée de zone dans une référence SKU

Vous essayez de déployer, de mettre à niveau ou de mettre à l’échelle un cluster dans une zone qui a une disponibilité limitée pour la référence SKU spécifique.

Solution 1 : Utiliser une autre référence SKU, une zone ou une région

Essayez une ou plusieurs des méthodes suivantes :

  • Redéployez le cluster dans la même région à l’aide d’une autre référence SKU.
  • Redéployez le cluster dans une autre zone de cette région.
  • Redéployez le cluster dans une autre région.
  • Créez un pool de nœuds dans une autre zone ou utilisez une autre référence SKU.

Pour plus d’informations sur la résolution de cette erreur, consultez Résoudre les erreurs pour la référence SKU non disponible.

Solution 2 : Redimensionner un pool de nœuds en place lorsque la création ou la mise à l’échelle est bloquée en raison de la disponibilité requise de la taille de machine virtuelle

Si une autre taille de machine virtuelle compatible dispose de capacité, redimensionnez les groupes identiques de machines virtuelles (VMSS) existants ou le pool de nœuds de machines virtuelles (VM) afin d’utiliser cette taille. AKS remplace les nœuds de manière progressive, ce qui vous évite de devoir créer un nouveau pool de nœuds et migrer manuellement les charges de travail. Cette fonctionnalité est actuellement en préversion et nécessite une capacité d’augmentation pour la taille de machine virtuelle cible. Pour connaître les conditions préalables, les limitations et les instructions, consultez Redimensionner un pool de nœuds VMSS en place (version préliminaire).

Solution 3 : Utiliser le placement automatique dans les zones lorsque la création ou la mise à l’échelle est bloquée par une limitation zonale spécifique

Pour les charges de travail s'étendant sur plusieurs zones, créez ou mettez à jour le pool de nœuds avec placement automatique dans les zones. AKS sélectionne les zones de disponibilité qui ont la capacité de la référence SKU de machine virtuelle demandée et réévalue la disponibilité de la zone pendant les opérations de scale-out ultérieures. Cette fonctionnalité est actuellement en préversion et une allocation peut toujours échouer si Azure ne peut pas allouer les nœuds demandés lors de l'respect de la limite par zone. Pour connaître les conditions préalables, les limitations et les instructions, consultez placement de zone automatique dans Azure Kubernetes Service (préversion).

Solution 4 : Mise à l’échelle dynamique à l’aide du provisionnement automatique de nœud

L’approvisionnement automatique de nœud vous permet de provisionner automatiquement des références SKU de machine virtuelle en fonction des besoins de votre charge de travail. Si une référence SKU n’est pas disponible en raison de contraintes de capacité, Node Auto Provisioning (NAP) sélectionne un autre type de référence SKU en fonction des spécifications fournies dans les définitions de ressources client (CRD) comme NodePool et AKSNodeClass. Cela peut être utile pour les scénarios de mise à l’échelle lorsque les capacités SKU deviennent limitées. Pour plus d’informations sur la configuration de votre cluster NAP, consultez Configurer des pools de nœuds pour l’approvisionnement automatique de nœud (NAP) dans Azure Kubernetes Service (AKS) et configurer des ressources AKSNodeClass pour l’approvisionnement automatique de nœud (NAP) dans Azure Kubernetes Service (AKS).

Solution 5 : Effectuer une mise à niveau sur place à l’aide de MaxUnavailable

Si vous n’avez pas besoin de nœuds d’augmentation pendant les mises à niveau, consultez Personnaliser les nœuds non disponibles pour plus d’informations sur la mise à niveau avec la capacité existante. Défini MaxUnavailable sur une valeur supérieure à zéro et défini MaxSurge sur zéro. Le processus de mise à niveau marque les nœuds existants comme non planifiables et les vide un par un, puis expulse les pods vers les nœuds restants. Le processus ne crée pas de nœud de mémoire tampon.

Solution 6 : Utiliser le générateur de recommandations de déploiement dans le portail pour créer un nouveau cluster

Pendant la création d’un cluster AKS dans le portail Azure, si la référence SKU du pool de nœuds sélectionné n’est pas disponible dans la région et les zones choisies, l’outil de recommandation de déploiement recommande une autre référence SKU, des zones et une combinaison de régions qui a la disponibilité.

Solution 7 : Utiliser des expandeurs prioritaires avec le cluster-autoscaler

L’expandeur de priorité du cluster-autoscaler vous permet de définir une liste ordonnée de pools de nœuds pour tenter la mise à l’échelle en séquence. Par exemple : D'abord les pools spot (optimisation des coûts), puis les pools à la demande (repli de disponibilité). L’accès conditionnel tente d’implémenter d’abord le pool de la priorité la plus élevée. En cas d’échec de la mise à l’échelle (par exemple, en raison d’un échec d’allocation), il tente le pool suivant.

Limitations

Les limitations suivantes s’appliquent au expandeur de priorité :

  • L’accès conditionnel ne crée pas de pools de nœuds. Il fonctionne uniquement avec les pools existants. Si vous souhaitez configurer une référence SKU dynamique, utilisez NAP, qui peut créer des pools en fonction de la disponibilité de la référence SKU.
  • L’extenseur de priorité fonctionne au niveau du pool de nœuds, et non au niveau du SKU. Vous devez précréer les pools pour chaque famille de références SKU que vous souhaitez utiliser.

Cause 2 : Trop de contraintes pour une machine virtuelle à prendre en charge

Si vous recevez un code dOverconstrainedAllocationRequest'erreur, la plateforme de calcul Azure ne peut pas allouer de nouvelle machine virtuelle pour prendre en charge les contraintes requises. Ces contraintes incluent généralement (mais pas toujours) les éléments suivants :

  • Taille de la machine virtuelle
  • Référence SKU de la machine virtuelle
  • Mise en réseau accélérée
  • Zone de disponibilité
  • Disque éphémère
  • Groupe de placement de proximité (PPG)

Solution : n’associez pas un groupe de placement de proximité au pool de nœuds

Si vous recevez un code d’erreur OverconstrainedAllocationRequest , essayez de créer un pool de nœuds qui n’est pas associé à un groupe de placement de proximité.

Cause 3 : Nombre insuffisant d’hôtes dédiés ou de domaines d’erreur

Vous essayez de déployer un pool de nœuds dans un groupe hôte dédié qui a une capacité limitée ou qui ne répond pas à la contrainte de domaine d’erreur.

Solution : Vérifiez que vous disposez de suffisamment d’hôtes dédiés pour vos nœuds/vmSS AKS

Conformément à la planification de la capacité ADH sur AKS, vous êtes responsable de la planification de suffisamment d’hôtes dédiés pour couvrir autant de domaines d’erreur que requis par vos vmSS AKS. Par exemple, si AKS VMSS est créé avec FaultDomainCount=2, vous avez besoin d’au moins deux hôtes dédiés dans des domaines d’erreur différents (FaultDomain 0 et FaultDomain 1).

Plus d’informations

S’assurer que la capacité des utilisateurs est une priorité absolue pour Microsoft. La popularité croissante des services Azure met l’accent sur la nécessité d’effectuer un scale-up de notre infrastructure encore plus rapidement. Dans cette optique, nous accélérons nos extensions et améliorons notre processus d’allocation des ressources afin de répondre à la forte demande de nos clients. Nous ajoutons également une grande quantité d’infrastructure informatique chaque mois.

Nous avons identifié plusieurs méthodes pour améliorer la façon dont nous équilibreons la charge dans une situation d’utilisation élevée des ressources et comment déclencher le déploiement en temps voulu des ressources nécessaires. En outre, nous augmentons considérablement notre capacité et continuons à planifier une forte demande dans toutes les régions. Pour plus d’informations sur les améliorations apportées à la fourniture d’une chaîne d’approvisionnement cloud résiliente, consultez Amélioration de la fiabilité par le biais d’une chaîne d’approvisionnement cloud résiliente.

Références