DaemonSet控制器会在每个节点上运行单一的副本,他非常适合部署那些节点本身提供服务或者执行维护的 Pod
例如 :
- 存储相关,每个节点上运行glusterd, ceph
- 日志收集相关,每个节点上运行Fluentd, logstash
- 监控相关, Prometheus Node Exporter
新增node到集群,会自动增加一个DaemonSet Pod
举例
[root@master01]# cat daemonset-nginx.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: mydaemonset-nginx
spec:
selector:
matchLabels:
apps: nginx
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
template:
metadata:
labels:
apps: nginx
spec:
containers:
- name: mydaemonset-nginx-containers
image: nginx:1.18
imagePullPolicy: Always
ports:
- containerPort: 80
hostPort: 84
protocol: TCP
[root@master01 klaus]#
DaemonSet的更新方式
1)RollingUpdate -- 只有maxUnavailable可以设置,没有maxSurge
2) OnDelete --只有手动删除旧的DaemonSet Pod,才会更新新的Pod