Sobes.tech
Middle

Jaký je rozdíl mezi Deployment a DaemonSet v Kubernetes?

sobes.tech AI

Odpověď od AI

Deployment spravuje sadu replik Podů, zajišťuje požadovaný počet a automatické škálování. Je vhodný pro většinu bezstavových aplikací.

DaemonSet zajišťuje, že kopie Podu poběží na každém uzlu (nebo na podmnožině uzlů, podle selektoru) clusteru. Používá se pro pozadí úkoly, jako je sběr logů nebo monitorování.

Zde jsou klíčové rozdíly:

Charakteristika Deployment DaemonSet
Cíl Udržovat stanovený počet replik Podů Spustit jeden Pod na každém uzlu (nebo podmnožině)
Počet Podů Řídí se parametrem replicas Určuje se počtem uzlů
Škálování Horizontální, na požádání Spojené s přidáváním/odstraňováním uzlů
Příklady použití Webové servery, mikroservisy Sběrače logů, monitorovací agenty, síťové démony
Aktualizace Postupná (rolling update) nebo nahrazení Automaticky se aktualizuje na uzlech podle potřeby

Příklad manifestu pro Deployment:

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

Příklad manifestu pro DaemonSet:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentbit-daemonset
spec:
  selector:
    matchLabels:
      name: fluentbit # Štítek pro selektor Podů
  template:
    metadata:
      labels:
        name: fluentbit
    spec:
      containers:
      - name: fluentbit
        image: fluent/fluent-bit:1.8 # Obrázek pro sběrače logů
        # Další nastavení pro přístup k souborům logů atd.
      tolerations:
      # Často nutné pro spuštění na master uzlech
      - key: node-role.kubernetes.io/master
        effect: NoSchedule