Middle
Kubernetes'ta DaemonSet'in pratik kullanımı nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
DaemonSet, kümenin tüm (veya belirtilen alt kümedeki) düğümlerde bir pod’un çalışmasını sağlar. Bu, her düğümde çalışması gereken sistem demonlarının dağıtımı için faydalıdır.
Pratik uygulamalar:
- Log toplama: Her düğümde bir log toplama ajanı (örneğin, Fluentd, Logstash) çalıştırmak ve logları merkezi bir depolamaya göndermek.
- Düğüm izleme: Her düğümde bir izleme ajanı (örneğin, Prometheus Node Exporter, Datadog Agent) dağıtarak düğüm durumu metriklerini toplamak.
- Küme depolama: Her düğümde dağıtılmış depolamayı sağlamak için bir depolama demon’u (örneğin, Ceph, Glusterfs) çalıştırmak.
- Güvenlik ajanları: Her düğümde güvenlik veya denetim ajanları dağıtmak.
Deployment’tan farkı: DaemonSet, her düğümde bir pod oluşturur, oysa Deployment, tüm kümede belirli sayıda replikayı tutmaya çalışır ve bunları mevcut düğümler arasında dağıtır.
Bir log toplama ajanı için DaemonSet örneği:
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 adresi örneği
- 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, yeni düğümlerde otomatik olarak pod ekler ve düğüm cluster’dan kaldırıldığında pod’u siler.