Middle
Kubernetes-те DaemonSet-тің практикалық қолданылуы қандай?
sobes.tech AI
AI-дан жауап
DaemonSet кластердің барлық (немесе көрсетілген бөлімшелердің) түйіндерінде подтың іске қосылуын қамтамасыз етеді. Бұл жүйелік демондарды орналастыру үшін пайдалы, олар әр түйінде жұмыс істеуі керек.
Практикалық қолданылулары:
- Логтарды жинау: Әр түйінде логтарды жинау агентін іске қосу (мысалы, Fluentd, Logstash) логтарды орталық сақтау орнына жіберу үшін.
- Түйіндерді бақылау: Әр түйінде түйіннің күйі метрикаларын жинау үшін бақылау агентін орналастыру (мысалы, Prometheus Node Exporter, Datadog Agent).
- Кластерлік сақтау: Әр түйінде сақтау демондарын іске қосу (мысалы, Ceph, Glusterfs) таралған сақтау үшін.
- Қауіпсіздік агенттері: Әр түйінде қауіпсіздік немесе аудит агенттерін орналастыру.
Deployment-пен салыстырғанда айырмашылығы: DaemonSet әр түйінде подты құрады, ал Deployment кластер бойынша қажетті реплика санын қолдауға тырысады, оларды қол жетімді түйіндерге таратады.
Лог жинау агенті үшін DaemonSet манифестінің мысалы:
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 мекенжайының мысалы
- 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 автоматты түрде жаңа түйіндерге подты қосады және түйін кластерден шығарылған кезде оны жояды.