1、 DaemonSet特点
在每个node上运行一个Pod,新加入的node也同
2、适用场景
集群存储守护程序,如glusterd、ceph要部署在每个节点上提供持久性存储
节点监视守护进程,如prometheus监控集群,可以在每个节点上运行一个node-exporter进程来收集监控节点的信息
日志收集守护程序,如fluentd或logstash,在每个节点运行容器
3、DaemonSet Pods调度特性
默认情况下,Pod被分配到具体哪一台Node节点运行是由Scheduler (它通过监听ApiServer,查询还未分配的Node的Pod,根据调度策略为这些Pod进行调度)。但是DaemonSet对象创建的Pod却拥有一些特殊的特性
Node的unchedulable属性会被DaemonSet Controller忽略
即使Scheduler还未启动,DaemonSet Controller也能够创建并运行Pod
4、 实例演示
在每个node节点上安装采集工具
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: ds-test
labels:
app: filebeat
spec:
selector:
matchLabels:
app: filebeat
template:
matadata:
labels:
app: filebeat
spec:
containers:
- name: logs
image: nginx:1.14
ports:
- containerPort: 80
volumeMounts:
- name: varlog
mountPath: /tmp/log
volumes:
- name: varlog
hostPath:
path: /var/log