Sobes.tech
Middle

Quelle est la différence entre Deployment et DaemonSet dans Kubernetes?

sobes.tech IA

Réponse de l'IA

Deployment gère un ensemble de réplicas de Pods, assurant leur nombre requis et la mise à l’échelle automatique. Il convient à la plupart des applications sans état.

DaemonSet garantit qu’une copie du Pod sera lancée sur chaque nœud (ou sur un sous-ensemble de nœuds, selon le sélecteur) du cluster. Utilisé pour des tâches en arrière-plan, telles que la collecte de logs ou la surveillance.

Voici les différences clés :

Caractéristique Deployment DaemonSet
Objectif Maintenir un nombre défini de réplicas de Pods Lancer un Pod sur chaque nœud (ou sous-ensemble)
Nombre de Pods Contrôlé par le paramètre replicas Déterminé par le nombre de nœuds
Mise à l’échelle Horizontale, sur demande Liée à l’ajout/suppression de nœuds
Exemples d’utilisation Serveurs web, microservices Collecteurs de logs, agents de surveillance, démons réseau
Mise à jour Progressive (mise à jour continue) ou remplacement Se met à jour automatiquement sur les nœuds selon les besoins

Exemple de manifeste pour Deployment :

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

Exemple de manifeste pour DaemonSet :

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentbit-daemonset
spec:
  selector:
    matchLabels:
      name: fluentbit # Étiquette pour le sélecteur de Pods
  template:
    metadata:
      labels:
        name: fluentbit
    spec:
      containers:
      - name: fluentbit
        image: fluent/fluent-bit:1.8 # Image pour le collecteur de logs
        # Configurations supplémentaires pour accéder aux fichiers de logs, etc.
      tolerations:
      # Souvent nécessaire pour exécuter sur les nœuds master
      - key: node-role.kubernetes.io/master
        effect: NoSchedule