DaemonSet是一种面向特定应用场景的Pod控制器,尽管它也可以管理Pod的多个副本,但它主要用于保证一个Node上只运行一个Pod的场景,如下图所示:

DaemonSet可以确保一个Node上最多只运行一个Pod副本,进一步说,DaemonSet可以选择特定类型的Node来部署Pod。此处,当选定类型的Node加入集群时,该Node会自动运行一个新的Pod副本,并且当该Node被删除时,相应的Pod也会被删除,而不会在其他Node上重建。
应用场景
DaemonSet可以确保每个工作节点上最多运行一个应用副本,这个应用副本类似于Linux操作系统中的daemon进程,这也正是DaemonSet名称的由来。
DaemonSet通常用于管理那些执行系统级的应用,比如:
- 每个工作节点运行一个存储服务,供该工作节点上其他应用使用;
- 每个工作节点运行一个日志收集服务,用于收集该节点上的运行日志;
- 每个工作节点运行一个监控指标收集服务,用于提供该节点的监控信息;
配置格式
我们先看一个简单的DaemonSet配置:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-daemonset
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.19.0初步看,这份配置跟Deployment基本类似,唯一一个显著的差异是DaemonSet不需要指定副本数,因为它的副本数取决于工作节点数。
DaemonSet配置中spec.selector和spec.template作用我们已在介绍Deployment时介绍过,在此不再赘述。
最后编辑: kuteng 文档更新时间: 2021-09-18 14:58 作者:kuteng