Ce face Obiectul ReplicaSet
Un ReplicaSet are o singură sarcină: să existe mereu exact replicas Pod-uri care se potrivesc selectorului lui. Dacă un Pod dispare, creează altul; dacă sunt prea multe, șterge din ele. Nu știe însă să actualizeze Pod-urile la o versiune nouă.
De aceea, în practică nu creezi ReplicaSet-uri direct, ci un Deployment. La fiecare schimbare a șablonului (de exemplu o imagine nouă), Deployment-ul creează un ReplicaSet nou și îl crește treptat, în timp ce îl micșorează pe cel vechi. ReplicaSet-urile vechi rămân cu 0 replici (implicit ultimele 10, după revisionHistoryLimit), ca kubectl rollout undo să poată reveni la ele. Numele lor are la final pod-template-hash.
Parametri
| Parametru | Descriere |
|---|---|
spec.replicas |
Numărul dorit de Pod-uri. |
spec.selector |
Etichetele după care ReplicaSet-ul își recunoaște Pod-urile. |
spec.template |
Șablonul Pod-urilor create. |
kubectl get rs |
Listează ReplicaSet-urile (rs este forma scurtă). |
metadata.ownerReferences |
Arată Deployment-ul care deține ReplicaSet-ul. |
Exemple
Exemplul 1: ReplicaSet-urile unui Deployment după două lansări
Cel nou are 3 replici; cele vechi sunt păstrate cu 0, pentru revenire.
kubectl get rs -n magazin -l app=magazin-api
Ieșire în terminal
NAME DESIRED CURRENT READY AGE
magazin-api-5b8c9d7f4a 0 0 0 9d
magazin-api-6f4d8b9c7e 0 0 0 4d
magazin-api-7d9f8c6b5d 3 3 3 2h
Exemplul 2: Un ReplicaSet se reface singur
Ștergem un Pod; ReplicaSet-ul observă că are doar 2 din 3 și creează imediat altul.
kubectl delete pod magazin-api-7d9f8c6b5d-x2k8p -n magazin
kubectl get pods -n magazin -l app=magazin-api
Ieșire în terminal
pod "magazin-api-7d9f8c6b5d-x2k8p" deleted
NAME READY STATUS RESTARTS AGE
magazin-api-7d9f8c6b5d-4hq9z 1/1 Running 0 2h
magazin-api-7d9f8c6b5d-9wmtc 0/1 ContainerCreating 0 2s
magazin-api-7d9f8c6b5d-r7nfd 1/1 Running 0 2h
Greșeli frecvente
- Scalarea directă a ReplicaSet-ului unui Deployment (
kubectl scale rs ...): Deployment-ul îl readuce imediat la numărul lui de replici. Scalează Deployment-ul. - Ștergerea manuală a ReplicaSet-urilor vechi „pentru curățenie”: pierzi istoricul folosit de
kubectl rollout undo. Dacă vrei mai puține, seteazărevisionHistoryLimitîn Deployment.
Comenzi înrudite
Obiectul ResourceQuota: Limitează totalul de CPU, memorie, Pod-uri sau alte obiecte pe care le poate consuma un namespace.Gateway API: HTTPRoute: Regulile de rutare HTTP din Gateway API: după domeniu, cale sau antete, cerere trimisă către unul sau mai multe Service-uri.