Sobes.tech
Middle

Na czym polega różnica między Deployment a DaemonSet w Kubernetes?

sobes.tech AI

Odpowiedź od AI

Deployment zarządza zestawem replik Podów, zapewniając wymaganą liczbę i automatyczne skalowanie. Jest odpowiedni dla większości aplikacji bezstanowych.

DaemonSet gwarantuje, że kopia Pod'a będzie uruchomiona na każdym węźle (lub na podzbiorze węzłów, zgodnie z selektorem) klastra. Używany jest do zadań w tle, takich jak zbieranie logów lub monitorowanie.

Oto kluczowe różnice:

Cecha Deployment DaemonSet
Cel Utrzymanie zadanej liczby replik Podów Uruchomienie jednego Pod'a na każdym węźle (lub podzbiorze)
Liczba Podów Kontrolowana przez parametr replicas Określana przez liczbę węzłów
Skalowanie Poziome, na żądanie Związane z dodawaniem/usuwaniem węzłów
Przykłady użycia Serwery internetowe, mikroserwisy Kolektory logów, agenci monitorowania, demony sieciowe
Aktualizacja Stopniowa (rolling update) lub zamieniająca się Automatyczna aktualizacja na węzłach w razie potrzeby

Przykład manifestu dla Deployment:

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

Przykład manifestu dla DaemonSet:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentbit-daemonset
spec:
  selector:
    matchLabels:
      name: fluentbit # Etykieta dla selektora Podów
  template:
    metadata:
      labels:
        name: fluentbit
    spec:
      containers:
      - name: fluentbit
        image: fluent/fluent-bit:1.8 # Obraz dla kolektora logów
        # Dodatkowe ustawienia dostępu do plików logów itp.
      tolerations:
      # Często konieczne do uruchomienia na węzłach master
      - key: node-role.kubernetes.io/master
        effect: NoSchedule