Skip to content

Cum să creezi Deployment-uri în Kubernetes — Replici și Strategii de Update

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să creezi Deployment. We cover key concepts, practical examples, and best practices.

Problema

Rulezi containere manual cu Pod-uri simple, dar ai nevoie de actualizări zero-downtime, scalare automată și capacitatea de a reveni la o versiune anterioară.

Soluția Pas cu Pas

1. Creează un Deployment cu 3 replici

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80
kubectl apply -f deployment.yaml

Output:

deployment.apps/nginx-deployment created

2. Verifică starea Deployment-ului

kubectl get deployments
kubectl get pods

Output:

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     3            3           30s

3. Scalează Deployment-ul

kubectl scale deployment nginx-deployment --replicas=5

4. Actualizează imaginea (rolling update)

kubectl set image deployment/nginx-deployment nginx=nginx:1.26

5. Verifică starea actualizării

kubectl rollout status deployment/nginx-deployment

Output:

deployment "nginx-deployment" successfully rolled out

6. Revino la o versiune anterioară

kubectl rollout undo deployment/nginx-deployment

7. Vezi istoricul revision-urilor

kubectl rollout history deployment/nginx-deployment

Strategii de Update

RollingUpdate (implicit): Actualizează Pod-urile treptat, menținând disponibilitatea.

Recreate: Șterge toate Pod-urile înainte de a crea altele noi (downtime).

spec:
  strategy:
    type: Recreate

Prevenție

  • Setează progressDeadlineSeconds pentru a detecta actualizări blocate.
  • Folosește minReadySeconds pentru a te asigura că Pod-urile noi sunt stabile.
  • Testează rollback-ul înainte de a face update-uri în producție.

Greșeli Comune

  1. Replici insuficiente — Un singur Pod nu asigură high availability.
  2. Selector mismatchselector.matchLabels trebuie să se potrivească cu label-urile din template.
  3. Imagine cu tag latest — Dificultate în a reveni la o versiune specifică.
  4. Progress deadline depășit — Deployment-ul eșuează dacă noile Pod-uri nu devin ready la timp.
  5. Fără resource limits — Pod-urile pot consuma toate resursele nodului.

Exercițiu

Creează un Deployment cu 4 replici, actualizează imaginea la o versiune nouă, monitorizează rollout-ul și apoi revino la versiunea anterioară.

FAQ

### Ce diferență este între Deployment și Pod?

Un Deployment gestionează Pod-uri replicabile cu actualizări și rollback. Un Pod este o unitate individuală care nu poate fi scalată sau actualizată automat.

Cum fac rolling update cu downtime zero?

Asigură-te că ai cel puțin 2 replici și că aplicația ta răspunde corect la readinessProbe. Kubernetes va înlocui Pod-urile treptat.

Pot reveni la o revizie specifică?

Da, cu kubectl rollout undo deployment/<nume> --to-revision=<număr>. Vezi lista cu kubectl rollout history.

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează seamless cu Kubernetes pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro