Sobes.tech
Middle

Wat is het verschil tussen Deployment en DaemonSet in Kubernetes?

sobes.tech AI

Antwoord van AI

Deployment beheert een set van Pod-replicaties, zorgt voor het vereiste aantal en automatische schaalvergroting. Het is geschikt voor de meeste stateless applicaties.

DaemonSet garandeert dat een kopie van de Pod wordt uitgevoerd op elke knoop (of op een subset van knopen, afhankelijk van de selector) van de cluster. Gebruikt voor achtergrondtaken zoals logverzameling of monitoring.

Hier zijn de belangrijkste verschillen:

Kenmerk Deployment DaemonSet
Doel Het handhaven van een vastgesteld aantal Pod-replicaties Het uitvoeren van één Pod op elke knoop (of subset)
Aantal Pods Beheerd door de parameter replicas Bepaald door het aantal knopen
Schaalvergroting Horizontaal, op aanvraag Gerelateerd aan het toevoegen/verwijderen van knopen
Voorbeelden van gebruik Webservers, microservices Logverzamelaars, monitoring agents, netwerk-daemons
Update Gestaag (rolling update) of vervangend Wordt automatisch bijgewerkt op de knopen indien nodig

Voorbeeld manifest voor Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3 # Start 3 kopieën van Pod
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Voorbeeld manifest voor DaemonSet:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentbit-daemonset
spec:
  selector:
    matchLabels:
      name: fluentbit # Label voor de Pod-selector
  template:
    metadata:
      labels:
        name: fluentbit
    spec:
      containers:
      - name: fluentbit
        image: fluent/fluent-bit:1.8 # Afbeelding voor de logverzamelaar
        # Extra instellingen voor toegang tot logbestanden, etc.
      tolerations:
      # Vaak nodig om op master knopen te draaien
      - key: node-role.kubernetes.io/master
        effect: NoSchedule