Sobes.tech
Middle

Qual è la differenza tra Deployment e DaemonSet in Kubernetes?

sobes.tech AI

Risposta dell'AI

Deployment gestisce un insieme di repliche di Pod, garantendo il numero richiesto e lo scaling automatico. È adatto per la maggior parte delle applicazioni stateless.

DaemonSet garantisce che una copia del Pod venga eseguita su ogni nodo (o su un sottoinsieme di nodi, secondo il selettore) del cluster. Viene utilizzato per attività in background, come la raccolta di log o il monitoraggio.

Ecco le differenze chiave:

Caratteristica Deployment DaemonSet
Obiettivo Mantenere un numero definito di repliche di Pod Eseguire un Pod su ogni nodo (o sottoinsieme)
Numero di Pod Controllato dal parametro replicas Determinato dal numero di nodi
Scalabilità Orizzontale, su richiesta Legato all'aggiunta/rimozione di nodi
Esempi di utilizzo Server web, microservizi Raccoglitori di log, agenti di monitoraggio, demoni di rete
Aggiornamento Graduale (rolling update) o sostitutivo Si aggiorna automaticamente sui nodi secondo necessità

Esempio di manifest per Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3 # Avvia 3 copie del Pod
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Esempio di manifest per DaemonSet:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentbit-daemonset
spec:
  selector:
    matchLabels:
      name: fluentbit # Etichetta per il selettore di Pod
  template:
    metadata:
      labels:
        name: fluentbit
    spec:
      containers:
      - name: fluentbit
        image: fluent/fluent-bit:1.8 # Immagine per il raccoglitore di log
        # Configurazioni aggiuntive per l'accesso ai file di log, ecc.
      tolerations:
      # Spesso necessario per eseguire sui nodi master
      - key: node-role.kubernetes.io/master
        effect: NoSchedule