veilletech.fr
27 août Feed du jour
#04 DEVOPS Article

Kubernetes 1.37 : les dépréciations à noter

Les nouveautés attendront. La file des dépréciations, non.

Kubernetes v1.37 « Garhwal » sort avec 67 améliorations (16 stables, 23 bêta, 27 alpha), mais l'essentiel est dans les dépréciations : kube-dns, le mode ipvs de kube-proxy, et l'interdiction désormais stricte pour les pods statiques de référencer des Secrets ou ConfigMaps.

3 min de lecturevidéo 1:18
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Ce qui disparaît, et quand
  3. Ce qui mord tout de suite
  4. Du côté des nouveautés
  5. À retenir

Ce qui se passe

Kubernetes v1.37, nom de code Garhwal, est sorti le 26 août 2026 : 67 améliorations, dont 16 passent en stable, 23 en bêta et 27 entrent en alpha. Un cycle dense, mais dont la partie la plus utile à lire est le calendrier des retraits.

Ce qui disparaît, et quand

kube-dns est déprécié. CoreDNS est le module DNS par défaut depuis la v1.13, et kube-dns n'a pas suivi : ni EndpointSlices, ni services double pile. Le sous-projet est déjà retiré, node-local-dns a été sorti dans son propre dépôt où il continue d'être maintenu avec CoreDNS. Plus aucun paquet ne sera construit après la v1.40.

Le mode ipvs de kube-proxy entre dans un calendrier de retrait en trois temps. La raison est dite sans détour dans le titre du KEP-3866 : l'API ipvs du noyau ne suffit pas à implémenter les Services, donc ce mode s'appuie de toute façon sur iptables en dessous.

Version État de ipvs
v1.37 Avertissement de dépréciation au démarrage
v1.40 Désactivé par défaut, encore activable par feature gate
v1.43 Support retiré

Pour savoir dans quel mode tourne votre cluster :

Terminal
kubectl -n kube-system get configmap kube-proxy \
  -o jsonpath='{.data.config\.conf}' | grep 'mode:'

Ce qui mord tout de suite

Les pods statiques ne peuvent plus référencer un Secret ou une ConfigMap. Ils n'étaient pas censés lire des ressources de l'API — ils ne passent pas par le serveur d'API — mais un bogue laissait fonctionner configMapRef et secretRef. Le bogue est corrigé, ces références sont strictement interdites, et le feature gate PreventStaticPodAPIReferences, qui permettait de s'y soustraire, a été supprimé.

cgroup v1 poursuit son extinction. Depuis la v1.35, failCgroupV1 vaut true par défaut : le kubelet refuse de démarrer sur un nœud qui en dépend, sauf dérogation explicite.

YAML
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
failCgroupV1: false  # dérogation temporaire

À traiter comme un sursis, pas comme une solution : la QoS mémoire et le redimensionnement à chaud des volumes en mémoire ne fonctionnent que sur cgroup v2, et le support de v1 est destiné à disparaître.

Enfin, kubectl run --filename / -f part en dépréciation : le pod généré est de toute façon construit uniquement à partir des arguments de la ligne de commande.

Du côté des nouveautés

L'HorizontalPodAutoscaler sait descendre à zéro pod : la fonctionnalité passe en bêta et est activée par défaut. Avec spec.minReplicas: 0, un consommateur de file, un traitement par lots ou une charge GPU peut tomber à zéro réplique quand il est inactif, puis remonter à la demande. Cela ne marche que sur les métriques objets ou externes — CPU et mémoire dépendent de pods actifs, donc de pods existants. Tant que la charge est tenue à zéro, une condition ScaledToZero est enregistrée.

KYAML passe en stable, et kubectl get -o kyaml avec lui : un sous-ensemble de YAML moins ambigu, dont chaque fichier reste du YAML valide. Rien à changer dans vos manifestes existants.

À noter aussi : maxUnavailable pour les StatefulSets est réactivé par défaut, après un bogue observé en v1.36 qui pouvait laisser un pod bloqué en CrashLoopBackOff.

Source : Kubernetes, Kubernetes v1.37: Garhwal