首先什么是DaemonSet?


有些时候可能有些节点运行多个同类业务的Pod,有些节点上又没有这类Pod运行;而后台支撑型服务的核心关注点在K8s集群中的节点(物理机或虚拟机),要保证每个节点上都有一个此类Pod运行。节点可能是所有集群节点也可能是通过nodeSelector选定的一些特定节点。

 

那这时候就需要到了DaemonSet,DaemonSet是保证在每个Node上都运行一个容器副本,常用来部署一些集群的日志、监控或者其他系统管理应用。

 

简单来说就是DaemonSet就是让一个应用在所有的k8s集群节点上都运行一个副本。典型的应用包括:


  • 日志收集,比如Fluentd,Logstash等

  • 系统监控,比如Prometheus Node Exporter,Collectd,New Relic agent,Ganglia gmond等

  • 系统程序,比如Kube-proxy, Kube-dns, Glusterd, Ceph等


实际上Kubernetes自己本身就在用DaemonSet运行自己的系统组件,下面目睹下。

深入玩转K8S之最懂实际应用场景的调度神器DaemonSet_第1张图片


好了本次的DaemonSet的实践讨论到此结束,本文参考了Kubernetes中文社区和Cloud Man博文。