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