DaemonSet是什么?
DaemonSet 是一個確保全部或者某些節點上必須運行一個 Pod的工作負載資源(守護進程),當有node(節點)加入集群時, 也會為他們新增一個 Pod。
下面是常用的使用案例:
可以用來部署以下進程的pod
- 集群守護進程,如
Kured、node-problem-detector
- 日志收集守護進程,如
fluentd、logstash
- 監控守護進程,如
promethues node-exporter
通過創建DaemonSet 可以確保 守護進程pod 被調度到每個可用節點上運行。
DaemonSet
是由控制器(controller manager
)管理的 Kubernetes 工作資源對象。我們通過聲明一個想要的daemonset狀態,表明每個節點上都需要有一個特定的 Pod。
協調控制回路會比較期望狀態和當前觀察到的狀態。
如果觀察到的節點沒有匹配的 Pod,DaemonSet controller
將自動創建一個。
在這個過程包括現有節點和所有新創建的節點。不過DaemonSet 控制器創建的 Pod
會被Kubernetes
調度器忽略,即DaemonSet Pods
由 DaemonSet
控制器創建和調度。這樣帶來的兩個微妙的問題:
Pod
行為的不一致性:正常