Sobes.tech
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 ავტომატურად დამატებს პოდს ახალ ნეტვებზე და წაშლის მას ნეტვიდან კლასტერში წაშლისას.