DaemonSet控制器
在所有节点或指定的节点上运行单一Pod资源副本。当集群中节点发生变化时自动进行增加或者回收。通常其应用场景如下:
- 运行集群存储的守护进程如在每个节点上运行glusterd或ceph
- 在每个节点上运行日志收集守护进程如fluentd或logstash。
- 在每个节点运行监控系统的代理守护进程。
只有必须将Pod对象运行于固定的几个节点,并且需要先于其他Pod启动时才有必要使用DaemonSet控制器,否则应该使用Deployment控制器。
创建DaemonSet资源对象
创建方式和deployment控制器基本相同。不过DaemonSet没有replicas字段,它是以节点数量控制Pod资源数量。下面是一个示例:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: filebeat-ds
labels:
app: filebeat
spec:
selector:
matchLabels:
app: filebeat
template:
metadata:
labels:
app: filebeat
name: filebeat
spec:
containers:
- name: filebeat
image: ikubernetes/filebeat:5.6.5-alpine
env:
- name: REDIS_HOST
value: db.ilinux.io:6379
- name: LOG_LEVEL
value: info
其创建方式和其他资源并无太大区别。如需要控制其运行的节点位置可以使用nodeSelector
字段。
更新DaemonSet控制器对象
支持RollingUpdate和OnDelete两种方式,第一种即滚动更新,其工作逻辑和deployment控制器的滚动更新基本相同。第二种为删除时更新。区别在于第一个是先创建再删除,第二个是先删除再创建。具体工作逻辑和更新Deployment时类似。但其不支持maxSurge参数。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!