429 Trop d’erreurs de requêtes
Cet article explique comment résoudre les défaillances provoquées par des erreurs « 429 Trop de requêtes » sur vos clusters Microsoft Azure Kubernetes Service (AKS) (ou clusters qui utilisent une autre implémentation Kubernetes sur Azure).
Symptômes
Vous recevez des erreurs qui ressemblent au texte suivant :
Le service a retourné une erreur.
Status=429
Code="OperationNotAllowed »
Message="Le serveur a rejeté la demande, car trop de demandes ont été reçues pour cet abonnement. »
Details=[{
« code » :"TooManyRequests »,
« message » :"{
\"operationGroup\ » :\"HighCostGetVMScaleSet30Min\ »,
\"startTime\ » :\"2020-09-20T07:13:55.2177346+00:00\ »,
\"endTime\ » :\"2020-09-20T07:28:55.2177346+00:00\ »,
\"allowedRequestCount\ » :1800,
\"measuredRequestCount\ » :2208
}",
« target » :"HighCostGetVMScaleSet30Min »
}]InnerError={"internalErrorCode » :"TooManyRequestsReceived"}"}
Cause : Des volumes d’appels excessifs entraînent la limitation d’Azure dans votre abonnement
Un cluster Kubernetes sur Azure (avec ou sans AKS) qui effectue un scale-up ou un scale-down fréquent, ou utilise le générateur de mise à l’échelle automatique du cluster, peut entraîner un grand volume d’appels HTTP. Ce volume d’appels peut entraîner un échec, car il dépasse le quota attribué pour votre abonnement Azure.
Pour plus d’informations sur ces erreurs, consultez Limitation des requêtes Azure Resource Manager et résolution des erreurs de limitation des API. Pour plus d’informations sur l’analyse et l’identification de la cause de ces erreurs et obtenir des recommandations pour les résoudre, consultez Analyser et identifier les erreurs à l’aide d’AKS Diagnostiquer et résoudre les problèmes.
Solution 1 : Effectuer une mise à niveau vers une version ultérieure de Kubernetes
Exécutez Kubernetes 1.18.x ou version ultérieure. Ces versions contiennent de nombreuses améliorations décrites dans les erreurs de limitation AKS/429 et prennent en charge les grands clusters sans limitation. Toutefois, si vous voyez toujours la limitation (en raison de la charge réelle ou du nombre de clients dans l’abonnement), vous pouvez essayer les solutions suivantes.
Solution 2 : Augmenter l’intervalle d’analyse de l’autoscaler
Si vous trouvez que la limitation des rapports de diagnostic « Limitation de mise à l’échelle automatique du cluster a été détectée » provoquée par le générateur de mise à l’échelle automatique du cluster, vous pouvez essayer d’augmenter l’intervalle d’analyse de mise à l’échelle automatique du cluster pour réduire le nombre d’appels aux groupes de machines virtuelles identiques (VMSS) à partir de l’autoscaler de cluster.
Solution 3 : Reconfigurer les applications tierces pour effectuer moins d’appels
Lorsque vous filtrez par les agents utilisateur dans le diagnostic « Afficher le taux de demandes et les détails de limitation », si vous trouvez des applications tierces (telles que des applications de surveillance) qui effectuent un nombre excessif de requêtes GET, modifiez les paramètres de ces applications pour réduire la fréquence des appels GET. En outre, assurez-vous que les clients d’application utilisent une interruption exponentielle lors de l’appel d’API Azure.
Solution 4 : Fractionner vos clusters en différents abonnements ou régions
S’il existe de nombreux clusters et pools de nœuds qui utilisent des groupes de machines virtuelles identiques, essayez de fractionner les clusters en différents abonnements ou régions (dans le même abonnement). La plupart des limites d’API Azure sont des limites partagées au niveau de l’abonnement-région. Par exemple, tous les clusters et clients au sein d’une sous-région et de la région USA Est partagent une limite pour l’API GET des groupes de machines virtuelles identiques. Par conséquent, vous pouvez déplacer ou mettre à l’échelle de nouveaux clusters AKS dans une nouvelle région et être débloqué sur la limitation des API Azure. Cette technique permet de s’attendre à ce que les clusters aient une activité élevée (par exemple, si vous disposez d’un autoscaler de cluster actif). Cela vous aide également si vous avez de nombreux clients (tels que Rancher, Terraform, etc.). Étant donné que tous les clusters sont différents dans leur élasticité et le nombre de clients interrogeant les API Azure, il n’existe aucune directive générique sur le nombre de clusters que vous pouvez exécuter par niveau région d’abonnement. Pour obtenir des conseils spécifiques, vous pouvez créer un ticket de support.
Analyser et identifier les erreurs à l’aide d’AKS Diagnostiquer et résoudre les problèmes
Pour un cluster AKS, vous pouvez utiliser AKS Diagnostiquer et résoudre les problèmes pour analyser et identifier la cause de ces erreurs et obtenir des recommandations pour les résoudre. Accédez à votre cluster dans le Portail Azure, puis sélectionnez Diagnostiquer et résoudre les problèmes dans le volet de navigation gauche pour ouvrir AKS Diagnostiquer et résoudre les problèmes. Recherchez et ouvrez la limitation des demandes de ressources Azure, où vous pouvez obtenir un rapport avec une série de diagnostics. Ces diagnostics peuvent indiquer si le cluster a connu une limitation du taux de requêtes (429 réponses) d’Azure Resource Manager (ARM) ou de fournisseur de ressources (RP) et où provient la limitation. Par exemple :
La limitation du taux de requête a été détectée pour votre cluster : ce diagnostic fournit des recommandations générales si la limitation a été détectée dans le cluster AKS actuel.
La limitation de mise à l’échelle automatique du cluster a été détectée : ce diagnostic s’affiche si la limitation a été détectée et provient de l’autoscaler du cluster.
Pour réduire le volume de requêtes de l’autoscaler de cluster, utilisez les méthodes suivantes :
- Augmentez l’intervalle d’analyse du générateur de mise à l’échelle automatique pour réduire le nombre d’appels de l’autoscaler de cluster vers les groupes de machines virtuelles identiques. Cette méthode peut avoir un impact négatif sur la latence nécessaire au scale-up, car le générateur de mise à l’échelle automatique du cluster attend plus longtemps avant d’appeler le fournisseur de ressources de calcul Azure (CRP) pour une nouvelle machine virtuelle.
- Vérifiez que le cluster se trouve sur une version minimale de Kubernetes 1.18. Kubernetes version 1.18 et versions ultérieures gèrent mieux l’interruption du taux de requêtes lorsque 429 réponses de limitation sont reçues. Nous vous recommandons vivement de rester dans les versions de Kubernetes prises en charge pour recevoir des correctifs de sécurité.
Limitation - Azure Resource Manager : ce diagnostic indique le nombre de requêtes limitées dans l’intervalle de temps spécifié dans le cluster AKS.
Taux de requête - Azure Resource Manager : ce diagnostic affiche le nombre total de requêtes dans l’intervalle de temps spécifié dans le cluster AKS.
Afficher le taux de requêtes et les détails de limitation : ce diagnostic comporte plusieurs diagrammes pour déterminer les détails de limitation, notamment les demandes limitées et le nombre total de requêtes. Vous pouvez également filtrer les résultats à l’aide des dimensions suivantes :
- Hôte : hôte où les réponses HTTP status 429 ont été détectées. Les limitations d’Azure Resource Manager proviennent
management.azure.com
; tout autre élément est un fournisseur de ressources de couche inférieure. - Agent utilisateur : demandes avec un agent utilisateur spécifié qui ont été limités.
- Opération : opérations où des réponses HTTP status 429 ont été détectées.
- Adresse IP du client : adresse IP du client qui a envoyé les demandes limitées.
- Hôte : hôte où les réponses HTTP status 429 ont été détectées. Les limitations d’Azure Resource Manager proviennent
La limitation des requêtes peut être due à une combinaison de n’importe quel cluster dans cet abonnement, et non seulement au taux de requête de ce cluster.
Exemple 1 : Limitation du scaler automatique du cluster
Cet exemple concerne l’analyse de la limitation provoquée par le générateur de mise à l’échelle automatique du cluster.
Si vous constatez que la limitation de mise à l’échelle automatique du cluster a été détectée dans AKS Diagnostiquer et résoudre les problèmes>connus, la disponibilité et la limitation des demandes de ressources Azure de performances>, cela indique que les demandes émises par le mise à l’échelle automatique du cluster ont été limitées.
Vous pouvez trouver le nombre de requêtes limitées et lorsque les requêtes sont limitées dans le diagnostic Limitation - Azure Resource Manager .
Vous pouvez trouver le nombre de toutes les requêtes ARM au cours de la même période.
Vous pouvez vérifier le diagnostic du taux de demandes d’affichage et des détails de limitation pour trouver les détails de la limitation. Sélectionnez 429s par agent utilisateur dans la liste déroulante Sélectionner un filtre , et vous pouvez voir que les demandes de mise à l’échelle automatique sont limitées de 15:00 à 16:00.
Vous pouvez également trouver le nombre total de demandes limitées pour le générateur de mise à l’échelle automatique du cluster et d’autres agents utilisateur.
Vous pouvez également filtrer les limitations par opérations. L’opération de suppression de machine virtuelle VMSS est limitée dans ce cas.
Vous trouverez le nombre de requêtes limitées et toutes les requêtes regroupées par opérations.
Vous pouvez ensuite suivre les suggestions de l’action recommandée pour réduire les limitations.
Exemple 2 : Limitation du fournisseur de cloud
Cet exemple concerne les limitations provoquées par le fournisseur de cloud. Il se produit souvent lors de l’exploitation de ressources dans des clusters plus volumineux, par exemple, l’approvisionnement d’un équilibreur de charge Azure dans un cluster qui a plus de 500 nœuds.
Si vous trouvez une limitation dans votre cluster, vous pouvez voir les détails de la limitation dans le diagnostic du taux de demande d’affichage et des détails de limitation. Sélectionnez 429s par agent utilisateur dans la liste déroulante Sélectionner un filtre , et vous pouvez voir que les demandes de fournisseur de cloud ont été limitées de 03:00 à 06:00.
Vous pouvez également filtrer par opérations pour savoir que l’opération limitée est « Network/loadBalancers/read ».
Vous pouvez utiliser l’équilibreur de charge basé sur l’adresse IP du nœud AKS en préversion pour réduire cette limitation.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.