Middle
Aký je praktický význam DaemonSet v Kubernetes?
sobes.tech AI
Odpoveď od AI
DaemonSet zabezpečuje, že pod je spustený na všetkých (alebo na vybranom podmnožine) uzloch klastru. Je to užitočné pre nasadenie systémových démonov, ktoré musia bežať na každom uzle.
Praktické použitia:
- Zber logov: Spustenie agenta na zber logov (napríklad Fluentd, Logstash) na každom uzle na odosielanie logov do centralizovaného úložiska.
- Monitorovanie uzlov: Nasadenie monitorovacieho agenta (napríklad Prometheus Node Exporter, Datadog Agent) na každom uzle na zber metrík stavu uzla.
- Klastrové úložisko: Spustenie démona úložiska (napríklad Ceph, Glusterfs) na každom uzle na zabezpečenie distribuovaného úložiska.
- Bezpečnostní agenti: Nasadenie bezpečnostných alebo auditovacích agentov na každom uzle.
Rozdiel od Deployment: DaemonSet vytvára pod na každom uzle, zatiaľ čo Deployment sa snaží udržať požadovaný počet replík po celom klastre, rozdeľujúc ich medzi dostupné uzly.
Príklad manifestu DaemonSet pre agenta zberu logov:
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" # Prí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áva pod na nové uzly a odstraňuje ho pri odstránení uzla z klastru.