Middle
Jaké je praktické využití DaemonSet v Kubernetes?
sobes.tech AI
Odpověď od AI
DaemonSet zajišťuje, že na všech (nebo na určené podmnožině) uzlech clusteru běží pod. To je užitečné pro nasazení systémových démonů, kteří musí běžet na každém uzlu.
Praktické použití:
- Sběr logů: Spuštění agenta pro sběr logů (například Fluentd, Logstash) na každém uzlu pro přenos logů do centralizovaného úložiště.
- Monitorování uzlů: Nasazení monitorovacího agenta (například Prometheus Node Exporter, Datadog Agent) na každý uzel pro sběr metrik o stavu uzlu.
- Clusterové úložiště: Spuštění démona úložiště (například Ceph, Glusterfs) na každý uzel pro zajištění distribuovaného úložiště.
- Bezpečnostní agenti: Nasazení bezpečnostních nebo auditovacích agentů na každý uzel.
Rozdíl od Deployment: DaemonSet vytvoří na každém uzlu pod, zatímco Deployment se snaží udržovat pevně stanovený počet replik v celém clusteru a rozděluje je mezi dostupné uzly.
Příklad manifestu DaemonSet pro agenta sběru logů:
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" # Příklad adresy 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 automaticky pridá pod na každý nový uzol a odstráni ho, keď je uzol odstránený zo clusteru.