首先什麼是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運行自己的系統組件,下面目睹下。
好了本次的DaemonSet的實踐討論到此結束,本文參考了Kubernetes中文社區和Cloud Man博文。