Middle
Care este diferența dintre Deployment și DaemonSet în Kubernetes?
sobes.tech AI
Răspuns de la AI
Deployment gestionează un set de replici ale Pod-urilor, asigurând numărul necesar și scalarea automată. Se potrivește pentru majoritatea aplicațiilor stateless.
DaemonSet garantează că o copie a Pod-ului va fi rulată pe fiecare nod (sau pe un subset de noduri, în funcție de selector) din cluster. Este utilizat pentru sarcini de fundal, cum ar fi colectarea de loguri sau monitorizare.
Iată diferențele cheie:
| Caracteristică | Deployment | DaemonSet |
|---|---|---|
| Scop | Menținerea unui număr definit de replici de Pod-uri | Rularea unui Pod pe fiecare nod (sau subset) |
| Număr de Pod-uri | Controlat de parametrul replicas |
Determinat de numărul de noduri |
| Scalare | Orizontal, la cerere | Legat de adăugarea/eliminarea nodurilor |
| Exemple de utilizare | Servere web, microservicii | Colectori de loguri, agenți de monitorizare, demonii de rețea |
| Actualizare | Gradual (actualizare în rulare) sau înlocuire | Se actualizează automat pe noduri după necesitate |
Exemplu de manifest pentru Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # Pornește 3 copii ale Pod-ului
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Exemplu de manifest pentru DaemonSet:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentbit-daemonset
spec:
selector:
matchLabels:
name: fluentbit # Etichetă pentru selectorul Pod-urilor
template:
metadata:
labels:
name: fluentbit
spec:
containers:
- name: fluentbit
image: fluent/fluent-bit:1.8 # Imagine pentru colectorul de loguri
# Configurări suplimentare pentru accesul la fișierele de log, etc.
tolerations:
# Adesea necesar pentru rularea pe nodurile master
- key: node-role.kubernetes.io/master
effect: NoSchedule