Sobes.tech
Middle

Aký je rozdiel medzi Deployment a DaemonSet v Kubernetes?

sobes.tech AI

Odpoveď od AI

Deployment riadi sadou replík Podov, zabezpečujúc ich požadovaný počet a automatické škálovanie. Je vhodný pre väčšinu stateless aplikácií.

DaemonSet zabezpečuje, že kópia Podu bude spustená na každom uzle (alebo na podmnožine uzlov, určených selektorom) klastru. Používa sa na pozadie úloh, ako je zber logov alebo monitorovanie.

Tu sú kľúčové rozdiely:

Charakteristika Deployment DaemonSet
Cieľ Udržiavanie požadovaného počtu replík Podov Spustenie jedného Podu na každom uzle (alebo podmnožine)
Počet Podov Riadi sa parametrom replicas Určuje sa počtom uzlov
Škálovanie Horizontálne, na požiadanie Spája sa s pridávaním/odstraňovaním uzlov
Príklady použitia Webové servery, mikroslužby Zberače logov, agenti monitorovania, sieťové démony
Aktualizácia Postupná (rolling update) alebo nahradzujúca Automaticky sa aktualizuje na uzloch podľa potreby

Príklad manifestu pre Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3 # Spustiť 3 kópie Podu
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Príklad manifestu pre DaemonSet:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentbit-daemonset
spec:
  selector:
    matchLabels:
      name: fluentbit # Štítok pre selektor Podov
  template:
    metadata:
      labels:
        name: fluentbit
    spec:
      containers:
      - name: fluentbit
        image: fluent/fluent-bit:1.8 # Obraz pre zberač logov
        # Dodatočné nastavenia pre prístup k súborom logov a pod.
      tolerations:
      # Často potrebné pre spustenie na master uzloch
      - key: node-role.kubernetes.io/master
        effect: NoSchedule