ALB Ingress Controller gère et achemine le trafic externe vers les services au sein d'un cluster Kubernetes. Lorsque vous exposez un service via ALB Ingress, le contrôleur surveille les modifications apportées aux ressources Endpoint associées, synchronise l'état des nœuds backend avec le groupe de serveurs backend et applique ces changements à l'instance ALB. La synchronisation peut échouer en raison d'erreurs de configuration ou de limites de quota.
Avant de dépanner, mettez à jour ALB Ingress Controller vers la dernière version. Consultez Mettre à jour ALB Ingress Controller pour obtenir les instructions. L'utilisation d'une version plus ancienne peut provoquer des problèmes déjà résolus.
Fonctionnement
Lorsque vous accédez à un service via ALB Ingress, ALB Ingress Controller surveille les modifications apportées à diverses ressources et les synchronise avec l'instance ALB associée. Le schéma suivant illustre les relations logiques entre les ressources et le processus de synchronisation.
Étape 1 : Vérifier les événements Ingress
Les événements Ingress indiquent les actions du contrôleur et les points d'échec. Examinez d'abord les événements afin d'identifier l'erreur spécifique avant de rechercher une solution.
Via la console : Accédez à Network > Ingresses. Sélectionnez le namespace, cliquez sur le nom de l'Ingress, puis cliquez sur l'onglet Events.
Via kubectl :
kubectl describe ingress <ingress-name> -n <namespace>
Résultat attendu :
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedBuildModel 2m28s (x10 over 6m43s) ingress listener is not exist in alb, port: 443, protocol: HTTPS
Normal Sync 19s (x32 over 11d) ingress Scheduled for sync
Normal SuccessfullyReconciled 4s (x20 over 11d) ingress Successfully reconciled
La colonne Description (console) ou le champ Message (kubectl) affiche les détails de l'événement.
Scheduled for sync: Le contrôleur a commencé à traiter l'événement.Successfully reconciled: La réconciliation s'est terminée sans erreur.Événements
Warning: Le contrôleur a rencontré un problème. Consultez Étape 2 pour les solutions.
Si aucun événement n'apparaît ou si seuls des événements Normal sont visibles alors que les modifications ne sont pas appliquées, passez à Étape 3.
Étape 2 : Résoudre les événements anormaux
Repérez le message d'erreur identifié à l'étape 1 dans le tableau ci-dessous et appliquez la solution correspondante.
| Message d'erreur | Cause | Solution |
|---|---|---|
| listener does not exist in alb, port: 80, protocol: HTTP | À partir de la version V2.11.0 d'ALB Ingress Controller, les écouteurs sont uniquement associés à un Ingress et ne sont plus créés automatiquement. Cette erreur indique que l'écouteur n'existe pas dans la ressource AlbConfig. |
Créez l'écouteur requis pour la ressource Ingress dans AlbConfig. |
| listener not found for (80/HTTP), with ingresses 1 | À partir de la version V2.11.0 d'ALB Ingress Controller, cette erreur survient lorsqu'un écouteur est supprimé d'une ressource AlbConfig toujours associée à un Ingress. Le message d'erreur inclut l'écouteur manquant et le nombre d'Ingress associés. |
Supprimez tous les Ingress associés à l'écouteur avant de retirer ce dernier de la ressource AlbConfig. Si l'écouteur a été supprimé par erreur, rajoutez-le. |
| no certificate found for host | TLS est activé avec la découverte automatique des certificats, mais aucun certificat correspondant au domaine n'a été trouvé dans Certificate Management Service. |
- Configurer la découverte automatique des certificats : Créez un certificat dans la console Certificate Management Service. Le contrôleur associe automatiquement le certificat au domaine configuré pour TLS dans ALB Ingress. - Spécifiez directement un certificat : Configurer un certificat à l'aide d'AlbConfig. |
| The param Rules.1.RuleConditions.2.PathConfig.Values.1 is illegal | La règle de transfert contient une valeur de chemin non valide. |
- Si l'Ingress utilise l'annotation - Sinon, vérifiez le champ |
| The param ServerGroupName is illegal | Le format du nom du groupe de serveurs backend ALB est invalide. | Vérifiez le nom du groupe de serveurs. Le nom est généré au format namespace+ServiceName+port. Il doit comporter entre 2 et 128 caractères, commencer par une lettre et contenir uniquement des chiffres, ., _ et -. |
| The specified resource sgp-vz2fb219vv792flx3u is in use | Le groupe de serveurs backend ALB géré par ACK est référencé par une autre instance ALB. | Connectez-vous à la console ALB. Accédez à ALB > Server Groups, repérez le groupe de serveurs backend et dissociez l'instance ALB. |
| Message: Invalid parameter. Check the parameter input. | L'ID du certificat dans la ressource AlbConfig est incorrectement configuré — il s'agit probablement d'un ID numérique au lieu d'un ID de ressource. |
Utilisez l'ID de ressource spécifié par CertIdentifier, et non l'ID numérique. |
| Message: Failed to create SSL Certificate with name default-https-secret-1-b585e6 ({namespace}-{name}-{identity}). Error: The certificate has expired. | Le certificat Secret a expiré. Le nom du certificat dans le message d'erreur suit le format {namespace}-{name}-{identity} : {namespace} correspond au namespace où se trouve le Secret (par exemple, default), {name} est le nom de la ressource Secret (par exemple, https-secret-1), et {identity} est le hachage du contenu du Secret (par exemple, b585e6). |
1. Mettez à jour le certificat expiré dans le champ 2. Vous pouvez également supprimer la configuration Pour plus de détails, consultez Configurer des certificats pour la communication chiffrée via HTTPS. |
|
failed to createSSLCertificateWithName: XXX ErrorCode: NameRepeat Message: The name is already used. Please enter another name. |
L'Ingress utilise un certificat Secret. Après l'expiration du certificat, le téléchargement d'un nouveau certificat via une ressource AlbConfig a réutilisé le nom du certificat expiré, entraînant une duplication du nom du certificat SSL. |
|
| invalid server group Cookie: |
- Valeur de cookie vide : La persistance de session est configurée pour réécrire un cookie ( - Version du contrôleur non prise en charge : Les versions d'ALB Ingress Controller antérieures à la version V2.15.0-aliyun.1 ne prennent pas en charge les cookies personnalisés pour la persistance de session des groupes de serveurs. |
- Valeur de cookie vide : Définissez une valeur de cookie non vide. Par exemple : Pour plus de détails sur les annotations, consultez Utiliser des annotations pour implémenter la persistance de session. - Version non prise en charge : Mettre à jour ALB Ingress Controller. |
| The quota of alb_quota_server_added_num is exceeded for resource eni-xxxx, usage 202/200 | Le quota alb_quota_server_added_num est atteint. Ce quota limite le nombre de fois qu'une adresse IP de serveur backend peut être ajoutée aux groupes de serveurs backend ALB. |
Accédez à Quota Center pour augmenter le quota du groupe de serveurs. |
Étape 3 : Diagnostiquer les échecs silencieux
Si les modifications ne sont pas appliquées mais qu'aucun événement Warning n'apparaît, la liaison entre IngressClass et AlbConfig est probablement mal configurée. Lorsque IngressClass pointe vers une ressource AlbConfig incorrecte, le contrôleur ne traite pas les événements de modification pour cet Ingress.
Procédure de diagnostic :
Vérifiez que
spec.parametersdans la ressourceIngressClassréférence le nom correct de la ressourceAlbConfig.Vérifiez si les événements de réconciliation pour la ressource
AlbConfigsont bien déclenchés.
Pour plus de détails sur la liaison entre IngressClass et AlbConfig, consultez Utiliser IngressClass pour associer AlbConfig à un Ingress.