Sobes.tech
Middle

Ποια είναι η διαφορά μεταξύ Deployment και DaemonSet στο Kubernetes;

sobes.tech AI

Απάντηση από AI

Το Deployment διαχειρίζεται ένα σύνολο αντιγράφων Pods, διασφαλίζοντας τον απαιτούμενο αριθμό και την αυτόματη κλιμάκωση. Είναι κατάλληλο για τις περισσότερες εφαρμογές χωρίς κατάσταση.

Το DaemonSet διασφαλίζει ότι ένα αντίγραφο του Pod θα τρέχει σε κάθε κόμβο (ή σε ένα υποσύνολο κόμβων, ανάλογα με τον επιλεκτή) του κλάστερ. Χρησιμοποιείται για εργασίες φόντου, όπως η συλλογή logs ή η παρακολούθηση.

Ακολουθούν οι βασικές διαφορές:

Χαρακτηριστικό Deployment DaemonSet
Στόχος Διατήρηση ενός καθορισμένου αριθμού αντιγράφων Pod Εκτέλεση ενός Pod σε κάθε κόμβο (ή υποσύνολο)
Αριθμός Pods Ελέγχεται από την παράμετρο replicas Ορίζεται από τον αριθμό των κόμβων
Κλιμάκωση Οριζόντια, κατόπιν ζήτησης Συνδέεται με την προσθήκη/αφαίρεση κόμβων
Παραδείγματα χρήσης Web servers, microservices Συλλέκτες logs, agents παρακολούθησης, δαίμονες δικτύου
Ενημέρωση Βαθμιαία (rolling update) ή αντικατάσταση Αυτόματα ενημερώνεται στους κόμβους όπως απαιτείται

Παράδειγμα manifest για Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3 # Εκκίνηση 3 αντιγράφων Pod
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Παράδειγμα manifest για DaemonSet:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentbit-daemonset
spec:
  selector:
    matchLabels:
      name: fluentbit # Ετικέτα για τον επιλεκτή Pods
  template:
    metadata:
      labels:
        name: fluentbit
    spec:
      containers:
      - name: fluentbit
        image: fluent/fluent-bit:1.8 # Εικόνα για τον συλλέκτη logs
        # Πρόσθετες ρυθμίσεις για πρόσβαση σε αρχεία logs, κ.λπ.
      tolerations:
      # Συχνά απαιτείται για εκτέλεση σε κόμβους master
      - key: node-role.kubernetes.io/master
        effect: NoSchedule