DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。 当有新节点加入集群时, 会为他们新增一个DaemonSet的Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
daemonset的控制器会监听kuberntes的daemonset对象、pod对象、node对象,这些被监听的对象之变动,就会触发syncLoop循环让kubernetes集群朝着daemonset对象描述的状态进行演进
Daemonset典型的应用场景
在集群的每个节点上运行存储,比如:glusterd 或 ceph。
在每个节点上运行日志收集组件,比如:flunentd 、 logstash、filebeat等。
在每个节点上运行监控组件,比如:Prometheus、 Node Exporter 、collectd等。
DaemonSet使用案例:部署日志收集组件fluentd
把fluentd-2-5-1.tar.gz上传到ctdmaster1和ctdnode1和ctdnode2上,解压
[root@ctdmaster1 ds]# ctr -n=k8s.io images import fluentd_2_5_1.tar.gz
[root@ctdnode1 ~]# ctr -n=k8s.io images import fluentd_2_5_1.tar.gz
[root@ctdnode2 ~]# ctr -n=k8s.io images import fluentd_2_5_1.tar.gz
创建yaml资源配置文件
[root@ctdmaster1 ds]# vim daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
namespace: kube-system
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
name: fluentd
labels:
name: fluentd-elasticsearch
spec:
tolerations:
- key: node-role.kubernetes.io/master
# effect: NoSchedule - key: node-role.kubernetes.io/control-plane operator: Exists effect: NoSchedule - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule containers: - name: fluentd-elasticsearch image: xianchao/fluentd:v2.5.1 imagePullPolicy: IfNotPresent resources: limits: memory: 200Mi requests: cpu: '1' memory: 200Mi volumeMounts: - name: varlog mountPath: /var/log - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true terminationGracePeriodSeconds: 30 volumes: - name: varlog hostPath: path: /var/log - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers
保存退出,执行:
[root@ctdmaster1 ds]# kubectl apply -f daemonset.yaml
评论一下?