Sobes.tech
Middle

Qual é a aplicação prática do DaemonSet no Kubernetes?

sobes.tech IA

Resposta da IA

DaemonSet garante que um pod seja executado em todos (ou em um subconjunto especificado) dos nós do cluster. Isso é útil para implantar demônios do sistema que devem funcionar em cada nó.

Aplicações práticas:

  • Coleta de logs: Executar um agente de coleta de logs (por exemplo, Fluentd, Logstash) em cada nó para enviar logs para um armazenamento centralizado.
  • Monitoramento de nós: Implantar um agente de monitoramento (por exemplo, Prometheus Node Exporter, Datadog Agent) em cada nó para coletar métricas do estado do nó.
  • Armazenamento em cluster: Executar um demonio de armazenamento (por exemplo, Ceph, Glusterfs) em cada nó para garantir armazenamento distribuído.
  • Agentes de segurança: Implantar agentes de segurança ou auditoria em cada nó.

Diferença do Deployment: DaemonSet cria um pod em cada nó, enquanto Deployment tenta manter um número definido de réplicas em todo o cluster, distribuindo-os entre os nós disponíveis.

Exemplo de manifesto DaemonSet para um agente de coleta 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" # Exemplo de endereço 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 automaticamente adiciona um pod em novos nós e o remove ao excluir um nó do cluster.