淺談 DaemonSet,及相對 ReplicaSet 的差異

話說 ReplicaSet 是實現服務 AutoScale or Loadbalance 的方式, 但是如需在 K8s node 叢集環境下確保特定 pod 在每個 node 上皆能夠實現相同服務, DaemonSet 反而是最佳選擇。 典型的應用服務包括:

  • 叢集儲存,比如 glusterd、ceph

  • 日誌收集,比如 fluentd、logstash

  • 系统監控,比如 Prometheus Node Exporter、collectd、New Relic agent、Ganglia gmond

  • 系统程序,比如 kube-proxy、kube-dns

DaemonSet 特性

  • DaemonSet 會確保每個 node 上運行同一個 pod 服務~ 除非透過 nodeSelector。

  • 例如系統常駐性監控服務,是非常適合透過 DaemonSet 實現副本需求。

  • DaemonSet 如同 ReplicaSet 皆透過 Reconciliation Loops 可以確保目前 Status 是否符合預期 Spec。

  • 當 K8s 新增 node 時,DaemonSet 會於 new node 上新增 pod 副本。

非 DaemonSet 特性

如果需要為了服務大量客戶流量,需要建立大量 pod 副本, 並且無需考量與 node 耦合性問題, 透過 ReplicaSet 進行 service scale 是正確的選擇。

參考書籍\文章出處: Kubernetes 建置與執行 書中 P.105~114 內容 https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/

Last updated