
Kubernetes 1.33 : Nouveautés Réseau, Sécurité et Expérience Admin
Introduction
Kubernetes 1.33 doit sortir le Mercredi 23 avril 2025
Kubernetes continue son évolution rapide avec la sortie de la version 1.33.
Cette nouvelle itération apporte son lot de fonctionnalités graduées vers la stabilité (GA), de nouvelles capacités en bêta et alpha, ainsi que des améliorations de performance et de sécurité notables.
Voici les points les plus importants:
-
Kubernetes 1.33 stabilise les Sidecars, le proxy nftables et l'API ServiceCIDR.
-
L'API v1 Endpoints est dépréciée, les fournisseurs cloud intégrés sont retirés.
-
Sécurité et performances renforcées incluses.
Explorons les autres points forts de cette version.
Kubernetes 1.33 : Points les plus structurants
-
Dépréciation Officielle de l'API v1 Endpoints:
- Impact: Très élevé. Bien que l'API ne soit pas supprimée immédiatement, c'est un signal fort pour migrer impérativement vers l'API EndpointSlice. Toutes les nouvelles fonctionnalités et optimisations réseau se concentreront sur EndpointSlice. Les utilisateurs et les outils doivent planifier cette transition.
- (Introduit dans v1.33.0-alpha.3)
-
Suppression Finale des Flags Cloud Provider In-Tree (
--cloud-provider
,--cloud-config
):- Impact: Très élevé pour ceux qui n'ont pas encore migré. Cela marque la fin de l'intégration directe des fournisseurs de cloud dans les composants principaux comme
kube-apiserver
. Il est obligatoire d'utiliser les fournisseurs de cloud externes (out-of-tree). - (Introduit dans v1.33.0-alpha.3)
- Impact: Très élevé pour ceux qui n'ont pas encore migré. Cela marque la fin de l'intégration directe des fournisseurs de cloud dans les composants principaux comme
-
Gestion des CIDR de Service via l'API (
MultiCIDRServiceAllocator
GA):- Impact: Élevé pour les administrateurs et les distributions Kubernetes. La configuration des plages d'IP pour les services passe des flags de ligne de commande à un objet API (
ServiceCIDR
). Cela offre plus de flexibilité (multi-CIDR) mais nécessite une nouvelle façon de gérer et de valider ces plages (potentiellement viaValidatingAdmissionPolicy
). - (Introduit dans v1.33.0-alpha.1)
- Impact: Élevé pour les administrateurs et les distributions Kubernetes. La configuration des plages d'IP pour les services passe des flags de ligne de commande à un objet API (
-
Conteneurs Sidecar (
SidecarContainers
) en GA:- Impact: Élevé pour les développeurs d'applications. Cette fonctionnalité change la sémantique des conteneurs
init
avecrestartPolicy: Always
. Elle stabilise la manière native de gérer les sidecars, simplifiant les déploiements qui en dépendent fortement. - (Introduit dans v1.33.0-alpha.1)
- Impact: Élevé pour les développeurs d'applications. Cette fonctionnalité change la sémantique des conteneurs
-
Mode
nftables
pour Kube-proxy en GA:- Impact: Élevé pour les performances et l'administration réseau. Offre une alternative stable et potentiellement plus performante au mode
iptables
par défaut. Les administrateurs peuvent désormais l'adopter en production en toute confiance. - (Introduit dans v1.33.0-alpha.2)
- Impact: Élevé pour les performances et l'administration réseau. Offre une alternative stable et potentiellement plus performante au mode
-
Liaison des Tokens de Service Account au Nœud (
ServiceAccountTokenNodeBinding
) en GA et Verrouillée:- Impact: Élevé (Sécurité). Cette fonctionnalité de sécurité, qui empêche l'utilisation abusive de tokens de service account volés sur d'autres nœuds, est désormais toujours activée et non désactivable. Cela renforce la sécurité par défaut.
- (Introduit dans v1.33.0-alpha.1)
-
Changement de Comportement du CPU Manager (Static Policy & CFS Quota):
- Impact: Potentiellement élevé pour les workloads sensibles aux performances CPU. Le fait de ne plus appliquer de quota CFS aux conteneurs avec des CPUs exclusifs (policy
static
) change un comportement établi de longue date. Bien que probablement plus correct, cela pourrait causer des régressions pour certains. Une feature gate (DisableCPUQuotaWithExclusiveCPUs
) permet de revenir à l'ancien comportement si nécessaire. - (Introduit dans v1.33.0-alpha.2)
- Impact: Potentiellement élevé pour les workloads sensibles aux performances CPU. Le fait de ne plus appliquer de quota CFS aux conteneurs avec des CPUs exclusifs (policy
-
Validation et Avertissements pour les IP/CIDR Non Standards:
- Impact: Moyen à élevé (Compatibilité future). L'API server émettra des avertissements pour les formats non canoniques (ex:
192.168.000.1
). C'est un précurseur d'une application plus stricte dans les futures versions, incitant les utilisateurs à nettoyer leurs configurations et manifests. - (Introduit dans v1.33.0-beta.0)
- Impact: Moyen à élevé (Compatibilité future). L'API server émettra des avertissements pour les formats non canoniques (ex:
Ces points représentent les changements les plus structurants, nécessitant une attention particulière lors de la planification de la mise à niveau vers Kubernetes 1.33, que ce soit en termes d'action requise, de changement de comportement fondamental ou de stabilisation majeure d'une fonctionnalité clé.
Kuberenetes 1.33 : Détail complet des changements
Graduations vers la Stabilité (GA)
Plusieurs fonctionnalités importantes atteignent la disponibilité générale (GA) dans la v1.33, signifiant qu'elles sont considérées comme stables et prêtes pour la production :
- Sidecar Containers (
SidecarContainers
): La gestion native des conteneurs sidecar est désormais stable. Cette fonctionnalité simplifie la gestion du cycle de vie des conteneurs auxiliaires qui doivent démarrer avant les conteneurs principaux d'un pod et rester actifs pendant toute la durée de vie du pod. (Initialement dans v1.33.0-alpha.1, confirmé GA) - Montages Récursifs en Lecture Seule (
RecursiveReadOnlyMounts
): La possibilité de monter des volumes en lecture seule de manière récursive est maintenant GA, améliorant la sécurité en empêchant les écritures accidentelles dans les sous-répertoires des volumes montés. (v1.33.0-alpha.3) - Politique de Récupération des PV (
HonorPVReclaimPolicy
): Le respect de la politique de récupération (Retain
,Delete
,Recycle
) définie sur un PersistentVolume (PV) lors de la suppression de la PersistentVolumeClaim (PVC) associée est maintenant stable. (v1.33.0-alpha.3) - Source de Données pour Volumes (
AnyVolumeDataSource
): La capacité d'utiliser n'importe quelle ressource API comme source de données pour provisionner un volume via une PVC est désormais GA, offrant plus de flexibilité pour la création de volumes pré-remplis. (v1.33.0-alpha.3) - Validation des CRD avec Ratcheting (
CRDValidationRatcheting
): Cette fonctionnalité, qui permet des mises à jour d'objets personnalisés même si l'objet existant n'est pas valide selon les nouvelles règles de validation (tant que la mise à jour ne rend pas l'objet plus invalide), est désormais stable. (v1.33.0-alpha.3) - Limite de Backoff par Index pour les Jobs (
JobBackoffLimitPerIndex
): La configuration fine du nombre de tentatives par index pour les Jobs indexés est maintenant stable. (v1.33.0-alpha.3) - Mode nftables pour Kube-proxy: Le backend
nftables
pourkube-proxy
passe en GA. Bien queiptables
reste le mode par défaut,nftables
offre une alternative potentiellement plus performante et flexible. (v1.33.0-alpha.2) - Liaison des Tokens de Service Account au Nœud (
ServiceAccountTokenNodeBinding
): Cette fonctionnalité de sécurité, qui lie les tokens de service account éphémères au nœud qui les demande, est désormais GA et activée par défaut. (v1.33.0-alpha.1) - Migration CSI pour Portworx (
CSIMigrationPortworx
): La migration automatique des volumes in-tree Portworx vers le driver CSI correspondant est stable. Assurez-vous que le driver CSI Portworx est installé avant la mise à niveau. (v1.33.0-alpha.1) - Flag
--subresource
pour Kubectl: La possibilité de cibler des sous-ressources (commestatus
ouscale
) viakubectl patch
,edit
, etc., est maintenant stable. (v1.33.0-alpha.3) - Cache de Watch basé sur B-tree (
BtreeWatchCache
): Cette optimisation interne du cache de l'API server est désormais GA. (v1.33.0-alpha.2) - Allocation Multi-CIDR pour les Services (
MultiCIDRServiceAllocator
): Permet de définir plusieurs plages CIDR pour les Services ClusterIP, améliorant la flexibilité de l'adressage IP. (v1.33.0-alpha.1)
Fonctionnalités Promues en Bêta
Des fonctionnalités prometteuses passent en bêta, se rapprochant de la stabilité :
- Validation Assouplie des Domaines de Recherche DNS (
RelaxedDNSSearchValidation
): Autorise désormais les domaines de recherche DNS contenant un simple point (.
) ou un underscore (_
), activé par défaut. (v1.33.0-alpha.3) - Autorisation Fine du Kubelet (
KubeletFineGrainedAuthz
): Permet un contrôle d'accès plus granulaire pour les endpoints de l'API du Kubelet, activé par défaut. (v1.33.0-alpha.1) - Mode Local pour le Kubelet du Control Plane (kubeadm) (
ControlPlaneKubeletLocalMode
): Kubeadm configure désormais par défaut le kubelet des nœuds master pour communiquer directement avec l'API server local, améliorant la résilience. (v1.33.0-alpha.2, v1.33.0-alpha.1) - Attente de Tous les Composants du Control Plane (kubeadm) (
WaitForAllControlPlaneComponents
): Kubeadm vérifie la santé des composants du control plane en utilisant les adresses et ports configurés dans leurs manifestes statiques. (v1.33.0-alpha.1) - Désactivation de l'Écriture Double pour l'Allocateur de Service CIDR (
DisableAllocatorDualWrite
): Désactivé par défaut, ce flag prépare la suppression de l'ancienne méthode d'écriture du CIDR de service via les arguments de l'API server. (v1.33.0-alpha.1)
Nouvelles Fonctionnalités Alpha et Améliorations Clés
La version 1.33 introduit également de nouvelles capacités expérimentales et des améliorations significatives :
- API Server & Core:
- Suivi de Génération Observée pour les Pods (
PodObservedGenerationTracking
): Le Kubelet remplitstatus.observedGeneration
pour indiquer la dernièremetadata.generation
du Pod qu'il a prise en compte (Alpha). (v1.33.0-beta.0) - Validation et Canonicalisation des IP/CIDR: Des avertissements sont émis pour les formats IP/CIDR non standards (ex: zéros non significatifs), et les composants écrivent désormais ces valeurs sous forme canonique. (v1.33.0-beta.0, v1.33.0-alpha.3, v1.33.0-alpha.1)
- Encodage JSON en Streaming pour les Listes (
StreamingJSONListEncoding
): Réduit drastiquement l'utilisation mémoire de l'API server lors du renvoi de grandes listes en JSON (Alpha, activé par défaut). (v1.33.0-alpha.3) - Namespace Ordonné (
OrderedNamespaceDeletion
): Nouvelle feature gate (Alpha, désactivée par défaut) qui supprime d'abord les pods lors de la suppression d'un namespace pour renforcer la sécurité. (v1.33.0-beta.0, v1.33.0-alpha.3) - Métriques et Observabilité: Introduction d'une métrique de "digest" pour comparer le contenu d'etcd et du cache (
apiserver_storage_digest
), ajout d'annotations de latence d'authentification/autorisation aux logs d'audit, et ajout d'endpoints/statusz
pourkube-scheduler
etkube-controller-manager
. (v1.33.0-beta.0, v1.33.0-alpha.3, v1.33.0-alpha.2)
- Suivi de Génération Observée pour les Pods (
- Node & Kubelet:
- Mise à l'échelle Verticale In-Place (
InPlacePodVerticalScaling
): Améliorations continues, notamment la gestion des sidecars et des politiques de redimensionnement mémoire. (v1.33.0-beta.0, v1.33.0-alpha.3, v1.33.0-alpha.2) - CPU Manager Static Policy: Possibilité de désactiver le quota CFS pour les conteneurs avec des CPUs exclusifs via la feature gate
DisableCPUQuotaWithExclusiveCPUs
(Alpha, activé par défaut). (v1.33.0-alpha.2)
- Mise à l'échelle Verticale In-Place (
- Scheduling:
- Exposition de NodeInfo: Le
NodeInfo
complet est exposé aux plugins de Score pour des décisions plus fines. (v1.33.0-beta.0) - Améliorations de Performance: Calculs de ressources de pods mis en cache et amélioration pour les contraintes de topologie requises. (v1.33.0-alpha.1)
- Exposition de NodeInfo: Le
- Réseau (Kube-proxy):
- Améliorations
nftables
: Outre la GA, des améliorations de logging pour le débuggage. (v1.33.0-alpha.1) - Observabilité: Endpoints
/flagz
,/statusz
, et métriques/health checks enrichis avec l'information de famille IP. Métriques pour le suivi de la réconciliation conntrack. (v1.33.0-alpha.2, v1.33.0-alpha.1) - Correction de Bugs: Résolution d'une fuite mémoire potentielle et d'une consommation CPU excessive avec les services UDP et IP externes/LB. (v1.33.0-alpha.3, v1.33.0-alpha.2)
- Améliorations
- Stockage:
- Suivi de Progression: Le changement de permissions/propriétaire des volumes indique désormais sa progression. (v1.33.0-alpha.3)
- Tests E2E: Ajout de tests pour les snapshots de groupes de volumes. (v1.33.0-alpha.1)
- Sécurité:
- Restriction d'Audience pour les Nœuds: Configuration dynamique de l'audience/nom de compte de service demandée par le kubelet (Alpha). (v1.33.0-beta.0)
- UID Utilisateur depuis Certificat: Possibilité d'extraire l'UID utilisateur depuis un OID spécifique dans le sujet d'un certificat client (Bêta). (v1.33.0-alpha.1)
- Allocation Dynamique de Ressources (DRA):
- Critères Priorisés: Support d'une liste ordonnée de critères de sélection pour satisfaire une demande de ressource. (v1.33.0-beta.0)
- Limite de Pods Augmentée: Un
ResourceClaim
peut maintenant être réservé pour 256 pods (contre 32). (v1.33.0-alpha.1)
- CLI (kubectl):
- Fichier
kuberc
: Support alpha pour personnaliser le comportement de kubectl via un fichierkuberc
distinct dukubeconfig
. (v1.33.0-alpha.2) kubectl autoscale
: Utilise désormais l'APIautoscaling/v2
par défaut. (v1.33.0-alpha.1)
- Fichier
- Kubeadm: Nombreuses améliorations sur les pré-vérifications, la gestion des feature gates (ControlPlaneKubeletLocalMode, WaitForAllControlPlaneComponents), les messages d'erreur, et la gestion des mises à niveau. (Multiples PRs)
Dépréciations et Suppressions Notables
- L'API v1 Endpoints est officiellement dépréciée. Il est fortement recommandé d'utiliser l'API EndpointSlice à la place. L'API Endpoints ne sera pas supprimée mais n'est plus la méthode privilégiée. (v1.33.0-alpha.3)
- Les feature gates
AppArmor
,AppArmorFields
,JobPodFailurePolicy
,PDBUnhealthyPodEvictionPolicy
,KubeProxyDrainingTerminatingNodes
etServiceAccountTokenNodeBinding
ont été supprimées car elles étaient déjà GA et activées par défaut. - Les feature gates
StorageNamespaceIndex
etSeparateCacheWatchRPC
sont dépréciées et désactivées/non activables. (v1.33.0-alpha.2) - Les flags CLI
--cloud-provider
et--cloud-config
de l'API Server sont supprimés, ainsi que les feature gates associées (DisableCloudProviders
,DisableKubeletCloudCredentialProviders
). (v1.33.0-alpha.3)
Conclusion
Kubernetes 1.33 continue de renforcer la plateforme en stabilisant des fonctionnalités clés (Sidecars, RRO Mounts, nftables proxy, Multi-CIDR Services) tout en introduisant des améliorations significatives en termes de performance, de sécurité et d'opérabilité. Les avancées dans le scheduling, l'allocation dynamique de ressources et la gestion in-place des pods ouvrent de nouvelles perspectives. Comme toujours, il est recommandé de consulter les notes de version complètes ([lien vers les notes officielles si disponible]) avant de mettre à niveau et de tester attentivement les nouvelles fonctionnalités, en particulier celles en Alpha et Bêta.
Découvrez les derniers articles d'alter way