Cum să creezi Deployment-uri în Kubernetes — Replici și Strategii de Update
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ă
progressDeadlineSecondspentru a detecta actualizări blocate. - Folosește
minReadySecondspentru a te asigura că Pod-urile noi sunt stabile. - Testează rollback-ul înainte de a face update-uri în producție.
Greșeli Comune
- Replici insuficiente — Un singur Pod nu asigură high availability.
- Selector mismatch —
selector.matchLabelstrebuie să se potrivească cu label-urile din template. - Imagine cu tag
latest— Dificultate în a reveni la o versiune specifică. - Progress deadline depășit — Deployment-ul eșuează dacă noile Pod-uri nu devin ready la timp.
- 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
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