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.