通过该控制器的名称我们可以看出他的用法daemon,就是用来部署守护进程的,daemonSet用于在每个kubernetes节点中将守护进程的副本作为后台进程运行,说白了就是每个节点部署一个pod副本,当节点加入到kubennetes集群中,pod会被调度到该节点上运行,当节点从集群只能够被移除后,该节点上的pod也会被移除,当然我们删除daemonSet,所有和这些对象相关的pods都会被删除。
集群存储守护程序,glusterd ceph要部署在每个节点上提供持久性存储
节点监控守护进程,prometheus监控集群,可以在每个节点上运行一个node-exporter进程来收集监控节点的信息
日志收集守护程序,节点网络插件,特别是关于daemonSet运行的pod的调度问题,正常情况下,pod运行在那个节点上有kubernetes的调度器策略来决定,然而有daemonSet控制器创建的pod实际上提前已经确定了在那个节点上了,pod创建时指定.spec.nodeName
DaemonSet并不关心一个节点的unshedulable字段,这个我们会在后面的调度章节
DaemonSet可以创建pod,即使调度器还没启动
[root@master1 ~]# cat nginx-ds.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-ds
namespace: default
spec:
selector:
matchLabels:
k8s-app: nginx
template:
metadata:
labels:
k8s-app: nginx
spec:
containers: