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 :
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.
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.