Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Mettre à niveau le contrôleur NGINX Ingress

Dernière mise à jour :Sep 29, 2026

Après la mise à niveau d'un cluster, mettez à niveau NGINX Ingress pour rester compatible avec les API de cluster obsolètes. Les anciennes versions présentent des risques en matière de sécurité et de stabilité, et ne disposent pas des fonctionnalités actuelles ; il est donc recommandé de passer rapidement à la dernière version. La mise à niveau s'effectue par étapes ; surveillez l'état de santé du module complémentaire et des services tout au long du processus pour éviter toute interruption du trafic.

Important

Le projet open source Ingress-NGINX ne sera plus maintenu après mars 2026. Par conséquent, Container Service for Kubernetes interrompra également la maintenance du module complémentaire NGINX Ingress controller. Soyez conscient des risques associés. Consultez [[Annonce produit] Arrêt de la maintenance du composant NGINX Ingress Controller](t3212739.xdita#).

Processus de mise à niveau

Le contrôleur NGINX Ingress est un composant critique du plan de données qui doit rester stable.

Des personnalisations lourdes et des écarts de version importants peuvent introduire des incompatibilités de configuration qui n'apparaissent pas immédiatement après une mise à niveau, rendant risquée une mise à niveau directe vers la dernière version en une seule étape.

La mise à niveau s'effectue par phases, ce qui vous permet de vérifier les services à chaque étape et de revenir en arrière en cas de problème.

image

Partie 1 : Vérification préalable

Une vérification préalable s'exécute automatiquement avant la mise à niveau pour s'assurer que le composant répond aux exigences. Cette vérification échoue si les paramètres sont incompatibles ou si le composant n'est pas sain. Résolvez ces problèmes avant de poursuivre.

Partie 2 : Phase de vérification

Lors de la phase de vérification, un nouveau Pod exécute la version cible afin de valider son fonctionnement et les règles Ingress. Le trafic est ensuite partiellement acheminé vers celui-ci. Surveillez le trafic via les journaux de conteneur, Simple Log Service ou Managed Service for Prometheus.

Une fois que le Pod de vérification a été mis à l'échelle avec succès, la mise à niveau est suspendue. Confirmez que le composant et les services sont sains, puis poursuivez manuellement. Pour revenir en arrière, supprimez le nouveau Pod afin d'interrompre la mise à niveau.

Cette phase modifie spec.minReadySeconds et spec.strategy dans le Deployment.

Partie 3 : Phase de déploiement

La phase de déploiement effectue une mise à jour progressive complète pour remplacer toutes les anciennes instances. La mise à niveau est suspendue une fois tous les Pods mis à jour, afin que vous puissiez confirmer l'état final. Revenez à la version précédente pour tous les Pods si des problèmes surviennent.

Partie 4 : Retour arrière (facultatif)

Lors d'une suspension pendant la phase de vérification ou de déploiement, effectuez un retour arrière pour restaurer le composant dans son état antérieur à la mise à niveau si vous découvrez des problèmes.

Avant de commencer

  • La maintenance de NGINX Ingress controller v1.2 et versions antérieures est terminée. Consultez [[Annonce produit] Arrêt de la maintenance de NGINX Ingress Controller v1.2 et versions antérieures](t2767923.xdita#). Les versions obsolètes ne bénéficient pas des nouvelles fonctionnalités, des correctifs de bogues ni d'une assistance rapide, et restent exposées à des vulnérabilités non corrigées. Mettez à niveau le composant sans délai.

  • Configurez la surveillance pour détecter les problèmes de trafic avec Simple Log Service ou Managed Service for Prometheus. Consultez Collecter et analyser les journaux d'accès NGINX Ingress et Se connecter et configurer Managed Service for Prometheus.

  • Vérifiez que le composant est sain, que tous les Pods sont prêts (Ready) et qu'aucun journal d'erreur n'apparaît.

  • Si vous utilisez des règles de mise à l'échelle automatique telles que HPA, supprimez-les avant la mise à niveau et restaurez-les une fois celle-ci terminée.

  • Vérifiez que le service de type LoadBalancer pour le contrôleur NGINX Ingress (nommé nginx-ingress-lb par défaut) fonctionne normalement et ne présente aucun événement anormal.

  • Ne modifiez pas le composant ni les règles Ingress pendant la mise à niveau.

  • Si votre version du contrôleur NGINX Ingress est antérieure à la v0.44, consultez les modifications de la logique de correspondance des chemins avant la mise à niveau.

  • La mise à niveau utilise un déploiement canari : un Pod de nouvelle version est créé en premier, puis une mise à jour progressive démarre après que vous avez vérifié le trafic. Assurez-vous que le cluster dispose de suffisamment de nœuds planifiables pour les Pods NGINX Ingress.

Procédure

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Components and Add-ons .

  3. Sur la page Add-ons, localisez le contrôleur NGINX Ingress et cliquez sur Upgrade dans le coin inférieur droit.

  4. Dans la boîte de dialogue de mise à niveau, cliquez sur Start et confirmez pour démarrer la mise à niveau.

    Remarque

    Vous pouvez quitter cette page pendant la mise à niveau. Pour y revenir, cliquez sur Progress sur la page Add-ons.

  5. La mise à niveau commence par une vérification préalable, puis passe automatiquement à la phase suivante.

    Si la vérification préalable échoue, cliquez sur View Details sous Precheck pour ouvrir la page Check Report, dépannez les éléments ayant échoué et consultez les Détails de la vérification préalable. Après avoir résolu les problèmes, cliquez sur Retry pour redémarrer la mise à niveau.

  6. Après la phase de vérification, la mise à niveau est suspendue. Vérifiez l'état du composant et des services en utilisant les détails de la phase de vérification.

  7. Une fois la vérification normale, cliquez sur Continue pour démarrer la phase de déploiement. La mise à niveau est à nouveau suspendue une fois la mise à jour progressive terminée. Effectuez une dernière vérification ; cliquez sur Rollback si des problèmes surviennent. Une fois le retour arrière terminé, recommencez depuis la page Add-ons.

  8. Après avoir confirmé que le composant et les services sont sains, cliquez sur Continue pour terminer la mise à niveau.

    Remarque

    Terminez l'intégralité de la mise à niveau dans un délai d'une semaine.

Vérification préalable

Éléments de vérification préalable

Élément de vérification

Description

Dépannage

Existence du Deployment

Le Deployment du composant (kube-system/nginx-ingress-controller) existe.

-

État de santé du Deployment

Tous les Pods du Deployment sont prêts (Ready) et stables (pas de mise à jour en cours).

-

Journaux d'erreur des Pods

Vérifie les 200 dernières entrées de journal des Pods pour détecter les journaux Error ou Fatal.

Ces journaux peuvent indiquer des erreurs récentes dues à des configurations incorrectes. Résolvez-les avant de redémarrer la mise à niveau. Consultez Résoudre les problèmes NGINX Ingress.

État de santé du service LoadBalancer

Vérifie si le service LoadBalancer NGINX Ingress (kube-system/nginx-ingress-lb) existe, puis s'assure qu'il ne présente aucun événement d'erreur.

Un service manquant est également traité comme un événement Warning.

Si le service est manquant, suivez la section « Supprimer manuellement le service nginx-ingress-lb dans le namespace kube-system lorsque le contrôleur NGINX Ingress est installé » dans Notes d'utilisation et opérations à haut risque.

Si le service existe mais présente des événements anormaux, résolvez-les en utilisant les détails des événements dans Événements de service et dépannage. Cette vérification est ignorée pour les services autres que LoadBalancer.

HPA

Le Deployment n'est pas géré par HPA. Un HPA actif peut perturber la mise à niveau.

Supprimez le HPA pendant la mise à niveau et réactivez-le une fois celle-ci terminée.

Modèle de Deployment

Le modèle de Deployment contient uniquement des modifications compatibles.

Les modifications personnalisées du Deployment NGINX Ingress peuvent ne pas survivre à la mise à niveau.

  • Ces champs sont conservés et ajoutés en tant que paramètres personnalisés au nouveau modèle :

    • Nombre de réplicas (replicas)

    • Libellés des Pods (template.metadata.labels)

    • Sélecteur de nœud (template.spec.nodeSelector)

    • Tolérations (template.spec.tolerations)

    • Limites de ressources du conteneur du contrôleur (template.spec.containers[0].resources)

  • Ces champs n'affectent pas la vérification préalable mais sont supprimés après la mise à niveau :

    • redeploy-timestamp dans les annotations des Pods (template.metadata.annotations).

    • kubectl.kubernetes.io/restartedAt dans les annotations des Pods.

    • scheduler.alpha.kubernetes.io/critical-pod dans les annotations des Pods.

    • imagePullPolicy de l'image.

    • template.spec.containers.securityContext.procMount est supprimé s'il est défini sur Default.

    • Configurations liées au Webhook, telles que les paramètres d'exécution, les volumes montés et les ports.

Ces modifications de modèle n'échouent pas à la vérification. Des modifications de modèle non autorisées ou des versions obsolètes qui ne répondent pas aux exigences de mise à niveau échoueront à la vérification et réduiront les chances de réussite de la mise à niveau. Les causes courantes d'échec incluent :

  • Un volume personnalisé est monté via un plug-in tel que EDAS. Désactivez temporairement les fonctionnalités EDAS concernées pendant la mise à niveau et restaurez-les une fois celle-ci terminée.

  • podAntiAffinity diffère du modèle standard, probablement parce que le modèle du composant est passé de required à preferred. Alignez manuellement podAntiAffinity avec le modèle standard au préalable.

  • Vous avez utilisé nodeAffinity pour des nœuds dédiés. Passez à nodeSelector.

Si la vérification du modèle de Deployment échoue, restaurez manuellement le modèle. Consultez Que faire si la vérification du modèle de Deployment échoue ?.

Configuration Ingress

Les ressources Ingress utilisent uniquement des fonctionnalités compatibles.

Des fonctionnalités Ingress incompatibles peuvent interrompre le transfert du trafic après la mise à niveau et provoquer des pannes de service. Consultez la section Compatibilité de la mise à niveau ci-dessous pour identifier et corriger les problèmes.

Configuration du composant

Vérifie que le ConfigMap du composant (kube-system/nginx-configuration) ne contient aucune configuration incompatible.

Des paramètres ConfigMap incompatibles peuvent interrompre le transfert du trafic après la mise à niveau et provoquer des pannes de service. Consultez la section Compatibilité de la mise à niveau ci-dessous pour identifier et corriger les problèmes.

Compatibilité de la mise à niveau

Les nouvelles versions de NGINX Ingress peuvent ajouter des fonctionnalités, améliorer celles existantes ou corriger des problèmes de sécurité, mais des changements d'architecture interne ou de dépendances peuvent rompre la compatibilité avec les versions antérieures. Pour l'historique des modifications, consultez NGINX Ingress Controller.

Modifications de la configuration de sécurité par défaut

Versions concernées : Versions antérieures à v1.12.6-release.1.

À partir de la v1.12.6-release.1, ingress-nginx a renforcé les paramètres de sécurité par défaut, notamment :

  • Le niveau par défaut de annotations-risk-level est abaissé de Critical à High. Cette modification rend indisponibles les ressources Ingress existantes avec des annotations de niveau Critical, telles que les annotations liées à snippet.

  • allow-cross-namespace-resources passe de true à false. Cette configuration désactive par défaut le référencement inter-namespace de ressources telles que ConfigMap et Secrets.

  • strict-validate-path-type passe de false à true. Cette configuration active la validation stricte des chemins par défaut. Cela signifie que pour les chemins de type Exact et Prefix, seuls les chemins commençant par / et contenant uniquement des lettres, des chiffres, -, _, . et des / supplémentaires sont autorisés.

Si vous utilisez des fonctionnalités bloquées par ces paramètres de sécurité, activez-les manuellement dans le ConfigMap kube-system/nginx-configuration après avoir évalué les risques de sécurité.

La validation native NGINX est désactivée par défaut

Versions concernées : Versions antérieures à v1.11.5-aliyun.1.

Pour corriger la CVE-2025-1974, le contrôleur NGINX Ingress désactive la validation native NGINX (la logique nginx -t) par défaut à partir de la v1.11.5-aliyun.1. Le webhook de validation reste activé mais ne valide pas les règles basées sur des snippets ; seules les annotations non-snippet sont validées par défaut. Pour les règles snippet, vérifiez les journaux d'erreur d'exécution NGINX. Consultez l'Annonce de vulnérabilité CVE-2023-1097, CVE-2023-1098, CVE-2023-1974, CVE-2023-24513, CVE-2023-24514.

Si vous utilisez des annotations snippet, vérifiez les journaux des Pods NGINX Ingress pour les entrées liées aux erreurs chaque fois que vous modifiez les règles Ingress correspondantes :

kubectl logs -f <Nginx-ingress-pod-name> -n kube-system |grep Error

Pour réactiver la validation native NGINX, ajoutez enable-nginx-native-validation: "true" au ConfigMap kube-system/nginx-configuration après avoir pleinement évalué les risques.

Les annotations Snippet sont désactivées par défaut

Versions concernées : Versions antérieures à v1.9.3-aliyun.1.

Pour des raisons de sécurité, le contrôleur NGINX Ingress désactive toutes les annotations snippet par défaut à partir de la v1.9.3-aliyun.1, notamment :

  • nginx.ingress.kubernetes.io/configuration-snippet

  • nginx.ingress.kubernetes.io/server-snippet

  • nginx.ingress.kubernetes.io/stream-snippet

  • nginx.ingress.kubernetes.io/auth-snippet

  • nginx.ingress.kubernetes.io/modsecurity-snippet

En raison des risques de sécurité et de stabilité, privilégiez d'autres annotations ou options de configuration.

Pour utiliser des annotations snippet, ajoutez allow-snippet-annotations: "true" au ConfigMap kube-system/nginx-configuration après avoir pleinement évalué les risques.

Les anciennes versions de TLS ne sont pas prises en charge

Versions concernées : Versions antérieures à v1.7.0-aliyun.1.

En raison de problèmes de sécurité dans TLS 1.1 et versions antérieures, les nouvelles versions de NGINX Ingress ne prennent plus en charge TLS v1.1 et TLS v1.0 par défaut. Avant la mise à niveau, vérifiez que vos services ne reposent pas sur TLS v1.1 ou une version antérieure et retirez-les de votre configuration. Les modifications du ConfigMap prennent effet immédiatement.

Par exemple, si le ConfigMap (kube-system/nginx-configuration) du contrôleur NGINX Ingress est configuré comme suit :

ssl-protocols: SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3

Après avoir confirmé que vos services ne sont pas affectés, supprimez cette ligne pour utiliser les valeurs par défaut, ou retirez SSLv3, SSLv2, TLSv1 et TLSv1.1 et modifiez la ligne comme suit :

ssl-protocols: TLSv1.2 TLSv1.3

Pour appliquer d'anciennes méthodes de chiffrement TLS, consultez Quelles versions SSL/TLS sont prises en charge par les Ingresses ?.

Utilisation incompatible de nginx.ingress.kubernetes.io/rewrite-target

Versions concernées : Versions antérieures à 0.22.0.

  • La version 0.22.0 a modifié l'utilisation de l'annotation nginx.ingress.kubernetes.io/rewrite-target . Dans les versions 0.22.0 et ultérieures, vous devez spécifier explicitement les groupes de capture lorsque vous utilisez rewrite-target.

  • Le comportement de rewrite-target avant la version 0.22.0 est incompatible avec les versions actuelles. Avant la mise à niveau, utilisez l'annotation configuration-snippet au lieu de rewrite-target.

Par exemple, dans les versions antérieures à 0.22.0, la règle est :

Développer pour voir l'exemple de code YAML complet

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - path: /something/
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port:
              number: 80
      - path: /something123/
        pathType: Prefix
        backend:
          service:
            name: http-svc-1
            port:
              number: 80

Modifiez-la comme suit :

Développer pour voir l'exemple de code YAML complet

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    # Use the rewrite directive, where /something is the path in the path field (without the trailing slash).
    # If the Ingress contains multiple paths, multiple rewrite directives are needed.
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite "(?i)/something(/|$)(.*)" /$2 break;
      rewrite "(?i)/something123(/|$)(.*)" /$2 break;
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - path: /something/ # Keep the path consistent with the old Ingress resource.
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port:
              number: 80
      - path: /something123/ # Keep the path consistent with the old Ingress resource.
        pathType: Prefix
        backend:
          service:
            name: http-svc-1
            port:
              number: 80

Une fois que vous avez mis à jour la configuration vers ce format, procédez à la mise à niveau. Une fois la mise à niveau terminée, mettez à jour l'Ingress vers la nouvelle syntaxe.

YAML

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    # Reference the matched content.
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      # Use a capture group.
      - path: /something(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port:
              number: 80
      # Use a capture group.
      - path: /something123(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: http-svc-1
            port:
              number: 80

Les directives natives NGINX root et alias ne sont plus prises en charge

Versions concernées : Versions antérieures à v1.2.1-aliyun.1.

En raison de problèmes de sécurité avec les directives root et alias, les nouvelles versions de NGINX Ingress (NGINX Ingress Controller) ne prennent plus en charge les directives root et alias. Avant la mise à niveau, vérifiez que votre Ingress n'utilise pas de directives natives NGINX root ou alias configurées via des snippets.

Modifications de la logique de correspondance des chemins

La logique de correspondance des chemins peut différer selon les versions de NGINX Ingress et provoquer des problèmes d'accès aux services.

  • Dans les anciennes versions (avant la v0.44), la correspondance de préfixe était plus permissive. Par exemple, /aaa/bbb pouvait correspondre à /aaa/bbbbb.

  • Après la mise à niveau, la correspondance de préfixe est plus stricte et ne correspond qu'au chemin de requête exact. Les chemins précédemment correspondants tels que /aaa/bbbbb peuvent renvoyer une erreur 404.

Exemple de modifications de la logique de correspondance des chemins

  apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    labels:
      ingress-controller: nginx
    name: test
    namespace: default
  spec:
    ingressClassName: nginx
    rules:
    - host: www.example.com
      http:
        paths:
        - backend:
            service:
              name: api-resources-svc
              port:
                number: 8080
          path: /api/resource

La ressource Ingress d'exemple se comporte différemment selon les versions :

  • Comportement dans les anciennes versions

    Dans une ancienne version de NGINX Ingress (telle que v0.22.0.5-552e0db-aliyun), la configuration NGINX est :

    Location /api/resource   ## No trailing "/"

    Dans cette configuration, le chemin /api/resource permet l'accès via http://www.example.com/api/resource dans les anciennes versions de NGINX.

    Remarque

    Le chemin d'accès réel est resources, et non resource.

  • Comportement dans les nouvelles versions

    Après la mise à niveau de NGINX Ingress vers une version plus récente (telle que v1.2.1-aliyun.1+), la configuration NGINX devient :

    Location /api/resource/  # A trailing "/" is added.
    {
    }
    ...
    Location = /api/resource  # A Location for an exact match is added.
    {
    }

    L'accès à http://www.example.com/api/resources renvoie une erreur 404.

Versions concernées

Versions du contrôleur NGINX Ingress antérieures à la v0.44. Pour l'historique des modifications, consultez NGINX Ingress Controller. Pour les informations relatives à la PR, consultez kubernetes/ingress-nginx #6443.

Gzip est désactivé par défaut

Les fonctionnalités activées par défaut varient selon les versions. Par exemple, dans les versions du contrôleur NGINX Ingress antérieures à la v0.40, gzip est activé par défaut, tandis que dans les versions ultérieures, il est désactivé par défaut. Après la mise à jour du composant, gzip est désactivé, ce qui peut augmenter le trafic pour l'Classic Load Balancer (CLB) associé. Si l'instance CLB utilise un mode de facturation au paiement à l'utilisation, cela peut entraîner une augmentation des coûts.

Solution

Modifiez le ConfigMap nginx-configuration dans le namespace kube-system pour activer la compression gzip.

data:
  use-gzip: true

Phase de vérification

Vérifier l'état du composant et des services

Outre vos propres outils de surveillance, ACK fournit les journaux Simple Log Service, les tableaux de bord Managed Service for Prometheus et les journaux natifs des conteneurs pour surveiller NGINX Ingress. Pour les activer, consultez Collecter et analyser les journaux d'accès NGINX Ingress et Se connecter et configurer Managed Service for Prometheus.

Simple log service

Consultez les journaux collectés par Simple Log Service dans la console ACK.

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Operations > Log Center.

  3. Cliquez sur l'onglet Application Logs, sélectionnez nginx-ingress dans la liste déroulante Logstore, puis cliquez sur Select Logstore.

    Remarque

    Si nginx-ingress est absent de votre Logstore, vérifiez que la collecte de journaux est configurée pour le composant. Consultez Collecter et analyser les journaux d'accès NGINX Ingress.

Les journaux affichent les données d'accès aux applications. Filtrez par Pod (tel que le Pod de nouvelle version) pour comparer le taux de réussite des requêtes et le nombre de requêtes avec les anciens Pods. Effectuez un retour arrière si les données divergent significativement.

Remarque

Par défaut, les journaux d'accès ne sont pas enregistrés pour les requêtes qui renvoient une erreur 404 car aucune règle Ingress ne correspond.

Tableau de bord Prometheus

Utilisez les tableaux de bord de Managed Service for Prometheus pour observer l'état global des requêtes.

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Operations > Prometheus Monitoring.

  3. Cliquez sur l'onglet Network Monitoring, puis cliquez sur Ingresses.

    Remarque

    Si Ingresses n'est pas disponible, vérifiez que la collecte de métriques Prometheus est configurée pour le composant. Consultez Se connecter et configurer Managed Service for Prometheus.

Le tableau de bord affiche les métriques opérationnelles d'Ingress. Sélectionnez un Pod spécifique pour comparer le taux de réussite des requêtes et le nombre de requêtes avec les anciens Pods. Effectuez un retour arrière si les données divergent significativement.

Remarque

Les métriques ne sont pas enregistrées par défaut pour les règles Ingress sans Host (qui prend par défaut la valeur "*").

Journaux des Pods

Utilisez kubectl pour accéder aux journaux des Pods depuis la ligne de commande et vérifier la présence d'erreurs.

  • Consultez les journaux d'erreur NGINX dans le Pod, y compris les niveaux warn, error et crit :

    kubectl logs -n kube-system <PodName> | grep -e warn -e error -e crit
  • Consultez les journaux d'erreur du contrôleur dans le Pod :

    kubectl logs -n kube-system <PodName> | grep "^[EF]"

FAQ

Puis-je mettre à niveau le contrôleur NGINX Ingress vers une version spécifique ? Puis-je revenir à une version précédente après une mise à niveau réussie ?

Le contrôleur NGINX Ingress ne prend pas en charge la mise à niveau vers une version spécifique. Les mises à niveau s'effectuent par étapes vers la dernière version. Vous ne pouvez pas revenir en arrière après une mise à niveau réussie.

Que faire si un Pod ne parvient pas à être créé pendant la phase de vérification ou de déploiement ?

Cause

Solution

Le Pod de nouvelle version échoue lors du démarrage, par exemple en raison d'un échec de chargement de la configuration, et entre dans une boucle de plantage.

Utilisez les méthodes des journaux des Pods pour consulter les journaux d'erreur, puis consultez Résoudre les problèmes NGINX Ingress pour résoudre le problème.

Cela se produit fréquemment lorsque NGINX Ingress s'exécute sur des nœuds dédiés. Un nouveau Pod peut échouer à être planifié en raison des limites de ressources et des sélecteurs de nœuds.

Ajoutez temporairement des nœuds, ou réduisez NGINX Ingress pendant les heures creuses avant la mise à niveau afin que les Pods puissent être planifiés pendant celle-ci.

Que faire si la vérification du modèle de Deployment échoue ?

Si le modèle de Deployment échoue à la vérification préalable, cliquez sur le lien à côté de Cause of Error pour ouvrir la page des différences de composants et afficher les champs ayant échoué.

  1. Sur la page NGINX Ingress Controller Upgrade, sous Precheck, cliquez sur View Details.

  2. Sur la page Check Report, dans la section Cluster Component Check Results, cliquez pour afficher les résultats de la vérification. Ensuite, sur la page Check Result, cliquez sur Deployment Template, puis enfin sur le lien à côté de Cause of Error.

  3. Accédez à la page Component Differences pour afficher les champs ayant échoué à la vérification.

    La page des différences de composants compare le modèle standard pour cette version (à gauche) avec le modèle actuel du cluster (à droite), en mettant en évidence les différences compatibles et incompatibles. Elle indique également si le composant du cluster a réussi la vérification des différences et répertorie les chemins de champs incompatibles.

  4. Modifiez le champ différent.

    Choisissez Workloads > Deployments, trouvez le composant NGINX Ingress controller, et choisissez More > View YAML. Sur la page Edit YAML, changez --v=3 en --v=2 dans le champ args.

  5. Après avoir modifié le champ, actualisez la page des différences de composants. Lorsque la page affiche The component can pass the difference check, la vérification du modèle de Deployment réussira.

    Remarque

    La modification du Deployment du cluster redémarre les Pods NGINX Ingress. Effectuez cette opération pendant les heures creuses.

Références