Accueil Actualités Erreur Kubernetes “short name mode is enforcing” : voici pourquoi vos Pods ne démarrent plus

Erreur Kubernetes “short name mode is enforcing” : voici pourquoi vos Pods ne démarrent plus

Temps de lecture: 12 minute(s)
Magicien du Cloud DoNow
Signé de Le Magicien du Cloud
25 novembre 2025

“short name mode is enforcing” : depuis Kubernetes 1.34, ce message d’erreur s’invite dans vos logs et vos Pods se figent en ErrImagePull ou ImageInspectError.

Ce n’est pas un bug : Kubernetes signe officiellement la fin des shortnames, ces images appelées sans registre explicite. Pour vous, c’est un déploiement qui casse. pour Kubernetes et CRI-O 1.34, c’est une façon d’assainir la supply chain des conteneurs et de clarifier la provenance des images.

Dans cet article, on explique ce que signifie vraiment l’erreur “short name mode is enforcing, pourquoi vos manifests historiques ne passent plus, et ce que K8s attend désormais quand il s’agit de nommer vos images. Place à la magie.


Découvrir nos services DevOps

Erreur Kubernetes short name mode is enforcing : voici pourquoi vos pods ne démarrent plus

Resumulus : les 3 points à retenir de l’article

  • Kubernetes 1.34 bloque désormais les shortnames : le runtime CRI-O 1.34 exige des images pleinement qualifiées.
  • Ce n’est pas un bug mais un durcissement de la supply chain : les noms incomplets sont jugés trop ambigus et risqués.
  • La solution : qualifier toutes les images et nettoyer charts, manifests et pipelines.

Short name mode is enforcing : Kubernetes signe la fin des shortnames

Dans l’écosystème container, un shortname est un nom d’image incomplet, c’est-à-dire, un nom qui ne précise pas dans quel registre aller chercher l’image.

Par exemple :

Dans les deux cas, impossible de savoir si l’image doit être tirée depuis Docker Hub, un registre privé ou autre chose.

À l’inverse, voici des exemples de noms pleinement qualifiés :

Ici, le registre est clairement défini. Aucun doute possible.

Parce que c’était pratique.
Et parce que ça a marché pendant presque dix ans.

Jamais personne ne s’est dit qu’écrire docker.io/library/nginx:1.18 éviterait un incident.

Et pourtant, c’est le cas aujourd’hui.

Pendant des années, les runtimes comme Docker, Podman ou CRI-O se reposaient sur un mécanisme appelé unqualified-search-registries.

Leur logique était simple : “Tu ne me dis pas où aller ? Très bien, je vais fouiller tous les registres qu’on m’a indiqués. Peut-être que je trouverai ce nginx:latest quelque part.”

Pratique, oui.
Mais aussi trop permissif : plusieurs registres pouvaient contenir le même nom, et le runtime n’avait aucun moyen de savoir lequel utiliser.

Courant 2025, la release Kubernetes 1.34 marque un tournant. Non pas dans Kubernetes lui-même, mais dans CRI-O 1.34, le runtime utilisé par certaines distributions (OpenShift, OKD 4.15+, Oracle OKE…).

À partir de la version 1.34, toutes les distributions basées sur CRI-O 1.34 appliquent par défaut un mode enforcing pour la résolution des noms d’images.

En d’autres mots :

  • Le runtime n’a plus le droit de deviner le registre où se trouve l’image.
  • Si vous déployez une image non qualifiée : il la considère ambiguë et retourne une erreur comme : « short name mode is enforcing, but image name nginx:latest returns ambiguous list » .
  • Et en cas d’ambiguïté, CRI-O renvoie une erreur immédiate.
  • Vos pods se bloquent en ImageInspectError ou ErrImagePull.

Aujourd’hui, seuls les noms complets sont acceptés.

Exemple d’erreur typique


Failed to pull image "nginx:1.14.2" :
short name is enforcing,
but image name nginx:1.14.2 returns ambiguous list

Cette erreur a été observée notamment sur des clusters Kubernetes 1.34.1 qui fonctionnent avec CRI-O 1.34. Si vous remplacez nginx:1.14.2 par docker.io/nginx:1.14.2, le Pod démarre immédiatement.

Si “short name mode is enforcing” apparaît, c’est simplement que vous utilisez encore des shortnames.
Ils peuvent se cacher dans :

  • vos manifests Kubernetes,
  • vos Helm charts,
  • vos templates Kustomize,
  • vos pipelines CI/CD,
  • vos initContainers,
  • ou des bouts de YAML qui datent d’une autre époque.

Rien de dramatique : il faut juste faire un peu de ménage, qualifier les noms d’image, et surtout, s’accorder sur une politique de nommage standard pour éviter que cela ne se reproduise.

Une règle simple, et une bonne habitude pour la suite.

Pourquoi Kubernetes veut en finir avec les shortnames ?

Si Kubernetes se met soudain à refuser vos images, ce n’est pas un caprice technique. C’est une décision mûrie, presque politique, qui touche à un sujet devenu central : la sécurité de la supply chain. Aujourd’hui, une simple image contrefaite peut compromettre tout un cluster.

Voici les principales raisons derrière ce changement :

Tapez “nginx” dans n’importe quel registre : vous trouverez une multitude d’images portant ce nom.
Certaines officielles, d’autres modifiées, et d’autres franchement douteuses.
Pendant des années, le runtime devait deviner laquelle vous vouliez.

Avec le mode enforcing, Kubernetes rappelle une règle simple : c’est à vous de préciser la source, pas au runtime de l’inventer.

Restons sur l’exemple nginx. Publier une image “nginx” piégée sur un registre public, c’est possible en 30 secondes. Si le runtime n’a pas de précisions sur quelle image choisir, il y a de fortes chances qu’il tombe sur une des ces images malveillantes. C’est un scénario d’attaque très courant.

Chaque requête envoyée à un registre non prévu peut embarquer vos identifiants.
C’est le risque d’exposer des secrets sans le vouloir.

Les environnements orientés sécurité ont déjà tourné la page des shortnames depuis longtemps : Podman, Buildah, OKE, OpenShift… Kubernetes ne fait que rejoindre un mouvement déjà largement amorcé dans l’industrie.

Les standards actuels, provenance, traçabilité, signatures OCI, attestations, exigent une chaîne claire et vérifiable. On ne peut pas sécuriser ce qu’on ne peut pas identifier.
Un nom complet, c’est la base de cette traçabilité.

À partir de quelle version Kubernetes les short names ne fonctionnent plus ?

Version Impact
Kubernetes 1.34 (2025) Les distributions basées sur CRI-O 1.34 basculent en mode enforcing.
Les shortnames sont désormais refusés par défaut.
Kubernetes 1.34.1 Les retours terrain confirment : toutes les images non qualifiées déclenchent des ErrImagePull ou ImageInspectError.
Clusters containerd Ils acceptent encore les shortnames… mais l’écosystème a déjà acté leur disparition. Ça ne devrait plus durer.

Guide Internal Developer Platform

Kubernetes 1.34 breaking changes : l’impact sur vos Pods, vos CI/CD et vos charts Helm

L’erreur “short name mode is enforcing” n’est que la partie visible du changement.

Derrière, Kubernetes 1.34 et CRI-O 1.34 réorganisent le comportement du cluster : la manière dont les images sont référencées, vérifiées, tirées et résolues.

Et ce changement va au-delà de la simple question : “pourquoi mon Pod ne démarre plus ?”

Il touche à tout : de la manière de versionner vos images jusqu’à la structure de vos Helm charts, vos pipelines CI/CD ou vos environnements de test.

Avant Kubernetes 1.34, écrire nginx:latest ou alpine:3 passait pour un détail. Avec CRI-O 1.34, ce détail devient une question d’architecture :

  • comment nomme-t-on nos images ?
  • quel registre fait autorité ?
  • comment garder une cohérence entre dev, staging et prod ?
  • quels shortnames dorment encore dans les charts ou les pipelines ?


En forçant les images pleinement qualifiées, Kubernetes impose maintenant une discipline de nommage que beaucoup d’équipes n’avaient jamais vraiment formalisée. Ce changement oblige les équipes à revoir leurs habitudes, mais surtout à collaborer davantage : Dev, Ops, SRE et SecOps… Tout le monde doit désormais parler le même langage d’image.

Beaucoup de pipelines reposent encore sur :

  • des scripts shell anciens,
  • des fragments YAML copiés depuis des charts extérieurs,
  • des outils internes qui insèrent des images sans registre,
  • des repositories mal ou peu documentés.


Avec Kubernetes 1.34, un simple shortname oublié suffit à :

  • interrompre un déploiement,
  • casser un rollout,
  • bloquer un initContainer,
  • ou rendre une étape de test inexécutable.

Les Helm charts (en particulier les vieux charts) concentrent une grande partie des shortnames historiques.

Avec Kubernetes 1.34 :

  • les valeurs par défaut autrefois anodines deviennent bloquantes,
  • des upgrades échouent sans explication apparente,
  • des charts tiers doivent être patchés ou forkés,
  • des projets dormants sont audités.

Comment CRI-O décide si une image est “ambiguë” ?

CRI-O 1.34 vérifie si un nom d’image peut correspondre à plusieurs registres potentiels. Si c’est le cas, il s’arrête.
Le fichier de configuration containers-registries.conf prévoit trois modes de résolution des noms

Mode Description
enforcing (par défaut dans CRIO 1.34) Si un seul registre est déclaré dans unqualified-search-registries, il est utilisé.
En présence de plusieurs registres, le moteur renvoie une erreur lorsqu’un nom abrégé est ambigu.
permissive Pareil qu’enforcing, mais au lieu d’afficher une erreur, il tente de chercher l’image sur tous les registres listés.
disabled Réplique le comportement « classique » : le moteur parcourt la liste des registres sans poser de questions.

Container registry : les bonnes pratiques à adopter (dès maintenant)

Avec Kubernetes 1.34 et CRI-O 1.34, le cadre devient plus strict : les images doivent être explicites, qualifiées, et traçables. Rien de compliqué, mais un peu de méthode.

Voici les bonnes pratiques à mettre en place pour éviter l’erreur “short name mode is enforcing” et, plus largement, renforcer votre chaîne d’approvisionnement container.

C’est la règle numéro un, celle qui résout 100 % des erreurs liées au mode enforcing.

Voici quelques exemples de noms pleinement qualifiés :
✔️ docker.io/library/nginx:1.18
✔️ registry.example.com/app/backend:2.5.1
✔️ quay.io/organisation/service:1.0.7

Pour rappel, un nom d’image complet est un nom qui :

  • supprime toute ambiguïté
  • clarifie la provenance
  • renforce la sécurité
  • évite les ErrImagePull
  • améliore la reproductibilité des environnements

Les shortnames se cachent partout : dans un values.yaml, un vieux deployment.yaml, un job CI oublié, une image d’initContainer copiée il y a cinq ans.

Attention surtout aux Helm charts de la communauté : beaucoup de charts publics, très populaires, continuent d’utiliser des shortnames. Avec Kubernetes 1.34, cela ne passe plus du tout.

Pour éviter les surprises, nous vous conseillons de faire un audit complet de :

  • vos Helm charts (internes et externes)
  • vos manifests Kubernetes
  • vos kustomizations
  • vos scripts CI/CD
  • vos CRONJobs
  • vos jobs d’intégration
  • vos images par défaut dans les dépendances

Ce n’est pas forcément long, mais c’est essentiel. Beaucoup d’équipes découvrent à cette occasion des comportements qu’elles n’avaient jamais identifiés.

L’erreur “short name mode is enforcing” est souvent le symptôme d’une configuration floue côté registry. Pour éviter les ambiguïté :

  • évitez d’avoir plusieurs registres dans unqualified-search-registries
  • harmonisez vos conventions (namespace, arborescence, versionnement, rétention)
  • documentez ce qui fait autorité.

Un registry bien structuré réduit mécaniquement les sources d’erreur, et clarifie les responsabilités entre équipes.

unqualified-search-registries, c’est la liste des registres que CRI-O va consulter lorsqu’une image n’est pas pleinement qualifiée. Autrement dit : si votre manifeste contient nginx:latest au lieu d’un nom complet, CRI-O regarde dans cette liste pour décider où aller chercher l’image.

L’un des pièges les plus fréquents est d’avoir plusieurs registres publics dans cette liste, par exemple :

unqualified-search-registries = ["docker.io", "quay.io"]

Dans ce cas, CRI-O voit plusieurs sources possibles pour une même image (nginx, redis, alpine…), ce qui crée immédiatement une ambiguïté. En mode enforcing, cette ambigüité suffit pour qu’il renvoie l’erreur « short name mode is enforcing ».

C’est pourquoi la configuration la plus sûre, aujourd’hui, est la plus minimaliste :

unqualified-search-registries = []

Ou, si un registre interne doit être utilisé comme référence :

unqualified-search-registries = ["<registry-interne>"]

Plus cette liste est courte, plus le comportement de CRI-O est prévisible, et moins vous risquez de vous heurter à l’erreur.

Oui, il est possible de désactiver cette protection : short_name_mode = « disabled »

Mais ce n’est pas recommandé. Cela revient à rétablir les comportements d’avant… et les mêmes risques. Ce contournement ne doit servir qu’en transition, le temps de qualifier proprement vos images. Il ne constitue pas une stratégie durable.

Voilà : vous savez maintenant pourquoi le message “short name mode is enforcing” apparaît, et ce qui se cache derrière ces Kubernetes 1.34 breaking changes.

C’est une évolution logique : CRI-O 1.34 ne veut plus deviner, et Kubernetes met fin à une pratique, disons-le, risquée. Kubernetes est devenu un standard, et comme tout standard, il impose peu à peu des pratiques plus sûres et plus explicites.

La solution est simple : utiliser des images pleinement qualifiées, clarifier votre registry, et mettre à jour charts et pipelines. Une fois ces points traités, l’erreur disparaît, et votre cluster retrouve un comportement prévisible.

Et si vous avez besoin d’un coup de main pour remettre de l’ordre dans vos images, vos charts ou vos pipelines, on a toujours un magicien DevOps prêt à intervenir pour vous aider.

Méfait accompli.

Magicien du Cloud DoNow
Signé de Le Magicien du Cloud
25 novembre 2025

FAQ erreur « short name mode is enforcing« 

C’est une erreur renvoyée par CRI-O 1.34 lorsque vous utilisez une image non qualifiée (ex. nginx:latest).
Le runtime considère ce nom comme ambigu et refuse de tirer l’image.

Car plusieurs distributions Kubernetes (OpenShift, OKD, OKE…) utilisent CRI-O 1.34, dont le mode enforcing est désormais activé par défaut.
C’est une mesure pour renforcer la sécurité de la supply chain.

Un nom d’image incomplet, sans registre explicitement indiqué.
Exemple : nginx:1.18 est un shortname,
docker.io/library/nginx:1.18 ne l’est pas.

Parce qu’ils sont :

  • ambigus (le même nom existe sur plusieurs registres),
  • dangereux (usurpation d’image, typosquatting),
  • sources de fuites de credentials (interrogation de registres non voulus),
  • incompatibles avec les standards modernes de traçabilité (provenance, signatures, SBOM…).

Oui.
Dès Kubernetes 1.34 + CRI-O 1.34, toute image non qualifiée risque de casser :

  • vos Pods,
  • vos initContainers,
  • vos CRONJobs,
  • vos tests CI/CD.

Ils se trouvent souvent dans :

  • vos Helm charts internes,
  • vos charts de la communauté (attention : beaucoup utilisent encore des shortnames !),
  • vos manifests Kubernetes,
  • vos pipelines CI/CD,
  • vos templates Kustomize,
  • vos images par défaut dans des dépendances.
  • Un audit manuel ou un script de détection est recommandé.

Toujours utiliser des images pleinement qualifiées, par exemple :

docker.io/library/nginx:1.18
registry.example.com/backend/api:2.5.1

C’est une configuration du runtime CRI-O, qui liste les registres à utiliser quand une image n’est pas qualifiée.

Exemples : unqualified-search-registries = [« docker.io », « quay.io »]

Avec plusieurs registres, CRI-O considère le shortname comme ambigu → erreur.

Non.
unqualified-search-registries est propre à CRI-O.
Containerd supporte encore les shortnames, mais l’écosystème tend à les abandonner.

Oui, mais ce n’est pas recommandé : short_name_mode = disabled

Cela réactive l’ancien comportement, et les risques qui vont avec.

Oui : toutes, sans exception.

  • images d’applications

  • images d’initContainers

  • images de Jobs/CronJobs

  • images de tests

  • images par défaut dans Helm charts

  • images dans les dépendances

Oui : toutes, sans exception.

  • images d’applications

  • images d’initContainers

  • images de Jobs/CronJobs

  • images de tests

  • images par défaut dans Helm charts

  • images dans les dépendances

Très probablement.
ImageInspectError apparaît lorsque CRI-O ne peut pas résoudre une image,  ce qui arrive en cas de shortname ambigu.

Oui : c’est exactement le symptôme attendu lorsqu’un shortname est refusé par CRI-O 1.34.

Oui : plusieurs équipes automatisent le remplacement des shortnames via :

  • scripts internes,
  • outils GitOps,
  • pipelines CI/CD,
  • vérifications pré-commit.