Repository navigation
ReplicaSets
Un ReplicaSet (littéralement « ensemble de réplicas ») est un contrôleur dont le rôle est de garantir qu'un nombre précis de Pods identiques tourne à tout moment dans le cluster.
On lui décrit :
- le nombre de réplicas souhaité (
spec.replicas) - un sélecteur (
spec.selector) qui identifie les Pods qu'il gère, via leurs labels - un modèle de Pod (
spec.template) servant à créer les Pods manquants
Le ReplicaSet fonctionne en boucle : il observe en permanence les Pods correspondant à son sélecteur, puis les compare au nombre désiré.
- pas assez de Pods → il en crée de nouveaux à partir du
template - trop de Pods → il en supprime pour revenir au nombre voulu
C'est ce mécanisme qui assure la haute disponibilité : si un Pod tombe, il est automatiquement remplacé.
template ne met pas à jour les Pods existants. C'est le rôle du Deployment.
- Le sélecteur (
spec.selector.matchLabelsoumatchExpressions) doit correspondre aux labels duspec.template. - Le ReplicaSet adopte tout Pod existant dont les labels correspondent au sélecteur et qui n'a pas déjà de propriétaire. Il vaut donc mieux éviter de créer des Pods « orphelins » avec les mêmes labels.
- Les Pods créés portent une
ownerReferencevers le ReplicaSet : supprimer le ReplicaSet supprime ses Pods (par défaut).
Note
spec.selector est immuable après la création : pour le modifier, il faut recréer le ReplicaSet.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: web
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: app
image: nginx:1.27
ports:
- containerPort: 80En pratique, on ne crée presque jamais un ReplicaSet directement : on passe par un Deployment, qui se charge de créer et de gérer les ReplicaSets.
- Deployment : gère les mises à jour (rolling update), les rollbacks et l'historique des versions ; chaque version correspond à un ReplicaSet.
- ReplicaSet : garantit simplement le nombre de réplicas ; c'est lui qui crée réellement les Pods.
Le nombre de réplicas peut être ajusté :
-
manuellement, en modifiant
spec.replicasou viakubectl scale -
automatiquement, via un HorizontalPodAutoscaler (HPA) qui ajuste
replicasselon la charge (CPU, mémoire, métriques personnalisées…)
→ Le détail (manuel vs HPA, fonctionnement, VPA, Cluster Autoscaler) est sur La mise à l'échelle.
- Lister les ReplicaSets :
kubectl get replicasets(oukubectl get rs) - Obtenir les détails d'un ReplicaSet :
kubectl describe rs web - Lister les Pods gérés :
kubectl get pods -l app=web - Mettre à l'échelle :
kubectl scale rs web --replicas=5 - Supprimer un ReplicaSet et ses Pods :
kubectl delete rs web
Kubernetes (k8s)
- Accueil
- Vue d'ensemble
- Les containers
- L'orchestration
- L'architecture de k8s
- Les composants de k8s
- Noeud maître vs noeud esclave
- Les namespaces
- Les pods
- Les sondes et le cycle de vie
- Les ReplicaSets
- Les Deployments
- Les Jobs
- Les CronJobs
- Les DaemonSets
- Les StatefulSets
- Les ConfigMaps et Secrets
- Les volumes persistants (PV & PVC)
- Les Services
- Les Ingress
- Le Gateway API
- La mise à l'échelle
- Le RBAC
- Helm
- kubectl