Sobes.tech
Middle

Kubernetes'ta DaemonSet'in pratik kullanımı nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

DaemonSet, kümenin tüm (veya belirtilen alt kümedeki) düğümlerde bir pod’un çalışmasını sağlar. Bu, her düğümde çalışması gereken sistem demonlarının dağıtımı için faydalıdır.

Pratik uygulamalar:

  • Log toplama: Her düğümde bir log toplama ajanı (örneğin, Fluentd, Logstash) çalıştırmak ve logları merkezi bir depolamaya göndermek.
  • Düğüm izleme: Her düğümde bir izleme ajanı (örneğin, Prometheus Node Exporter, Datadog Agent) dağıtarak düğüm durumu metriklerini toplamak.
  • Küme depolama: Her düğümde dağıtılmış depolamayı sağlamak için bir depolama demon’u (örneğin, Ceph, Glusterfs) çalıştırmak.
  • Güvenlik ajanları: Her düğümde güvenlik veya denetim ajanları dağıtmak.

Deployment’tan farkı: DaemonSet, her düğümde bir pod oluşturur, oysa Deployment, tüm kümede belirli sayıda replikayı tutmaya çalışır ve bunları mevcut düğümler arasında dağıtır.

Bir log toplama ajanı için DaemonSet örneği:

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" # Elasticsearch adresi örneği
        - 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, yeni düğümlerde otomatik olarak pod ekler ve düğüm cluster’dan kaldırıldığında pod’u siler.