注明:当前文档内容来源于51cto课堂‘宽哥’杜宽学习课程。
一、什么是DeamonSet
DaemonSet(守护进程集,缩写为ds)和守护进程类似,它在符合匹配条件的节点上均部署一个Pod。当有新节点加入集群时,也会为它们新增一个Pod,当节点从集群中移除时,这些Pod也会被回收,删除DaemonSet将会删除它创建的所有Pod
例:
1.运行集群存储daemon(守护进程),例如在每个节点上运行Glusterd、Ceph等;
2.在每个节点上运行日志收集Daemon,例如Fluentd、Logstash;
3.在每个节点运行监控daemon,比如Prometheus NodeExporter、Collectd、Datadog代理、NewRelic代理或Ganglia gmond
二、创建一个基础DeamonSet
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: nginx
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:1.15.12
imagePullPolicy: IfNotPresent
name: nginx
必须字段:和其他所有Kubernetes 配置一样,DaemonSet需要apiVersion、kind和metadata字段,同时也需要一个.spec 配置段。
Pod模板:.spec唯一需要的字段是.spec.template。.spec.template是一个Pod模板,他与Pod具有相同的配置方式,但它不具有apiVersion和Kind字段
Pod Selector: .spec.selector 字段表示Pod Selector,它与其他资源的.spec.selector的作用相同。.spec.selector表示一个对象,它由如下两个字段组成
指定节点部署Pod:如果指定.spec.template.spec.nodeSelector,DaemonSet Controller将在与Node Selector(节点选择器)匹配的 节点上创建pod,比如部署在磁盘类型为ssd的节点上(需要提前给节点定义标签Label)
nodeSelector:
disktype: ssd