DaemonSet确保在所有(或部分)Node节点上运行Pod的副本。随着新的Node被添加到群集中的同时,会将Pod添加到新Node中。随着节点从群集中删除,垃圾收集器也将会删除这些Pod。DaemonSet的一些典型场景和用法:

    • 集群存储:在每个Node节点上,运行集群存储守护程序,例如glusterdceph
    • 日志收集:在每个Node节点上,运行日志收集守护程序,例如fluentdlogstash
    • 节点监控:在每个Node节点上,运行节点监控守护程序,例如Prometheus Node Exporter,collectd,Dynatrace OneAgent,Datadog agent,New Relic agent,Ganglia gmond或者Instana agent
    1. apiVersion: apps/v1
    2. kind: DaemonSet
    3. metadata:
    4. name: fluentd-elasticsearch
    5. namespace: kube-system
    6. labels:
    7. k8s-app: fluentd-logging
    8. spec:
    9. selector:
    10. matchLabels:
    11. name: fluentd-elasticsearch
    12. template:
    13. metadata:
    14. labels:
    15. name: fluentd-elasticsearch
    16. spec:
    17. tolerations:
    18. - key: node-role.kubernetes.io/master
    19. effect: NoSchedule
    20. containers:
    21. - name: fluentd-elasticsearch
    22. image: k8s.gcr.io/fluentd-elasticsearch:1.20
    23. resources:
    24. limits:
    25. memory: 200Mi
    26. requests:
    27. cpu: 100m
    28. memory: 200Mi
    29. volumeMounts:
    30. - name: varlog
    31. mountPath: /var/log
    32. - name: varlibdockercontainers
    33. mountPath: /var/lib/docker/containers
    34. readOnly: true
    35. terminationGracePeriodSeconds: 30
    36. volumes:
    37. - name: varlog
    38. hostPath:
    39. path: /var/log
    40. - name: varlibdockercontainers
    41. hostPath:
    42. path: /var/lib/docker/containers