Sobes.tech
Middle

Quelle est l'application pratique de DaemonSet dans Kubernetes?

sobes.tech IA

Réponse de l'IA

DaemonSet garantit qu’un pod est exécuté sur tous (ou sur un sous-ensemble spécifié) des nœuds du cluster. Cela est utile pour déployer des démons système qui doivent fonctionner sur chaque nœud.

Applications pratiques :

  • Collecte de logs : Exécuter un agent de collecte de logs (par exemple, Fluentd, Logstash) sur chaque nœud pour transmettre les logs à un stockage centralisé.
  • Surveillance des nœuds : Déployer un agent de surveillance (par exemple, Prometheus Node Exporter, Datadog Agent) sur chaque nœud pour collecter des métriques de l’état du nœud.
  • Stockage en cluster : Exécuter un démon de stockage (par exemple, Ceph, Glusterfs) sur chaque nœud pour assurer un stockage distribué.
  • Agents de sécurité : Déployer des agents de sécurité ou d’audit sur chaque nœud.

Différence avec Deployment : DaemonSet crée un pod sur chaque nœud, alors que Deployment tente de maintenir un nombre défini de réplicas dans tout le cluster, en les répartissant entre les nœuds disponibles.

Exemple de manifeste DaemonSet pour un agent de collecte de logs :

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
  labels:
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      containers:
      - name: fluentd-elasticsearch
        image: fluentd/fluentd-kubernetes-daemonset:v1.14-debian-elasticsearch7-1
        env:
        - name:  FLUENT_ELASTICSEARCH_HOST
          value: "elasticsearch.default.svc.cluster.local" # Exemple d’adresse Elasticsearch
        - name:  FLUENT_ELASTICSEARCH_PORT
          value: "9200"
        - name: FLUENT_ELASTICSEARCH_SCHEME
          value: "http"
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers

DaemonSet ajoute automatiquement un pod sur les nouveaux nœuds et le supprime lors de la suppression d’un nœud du cluster.