千家信息网

Kubernetes 资源对象之DaemonSet

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,DaemonSet是在Kubernetes1.2 版本新增的一种资源对象DaemonSet能够让所有(或者一些特定)的Node节点仅运行一份Pod。当节点加入到kubernetes集群中,Pod会被(
千家信息网最后更新 2026年11月01日Kubernetes 资源对象之DaemonSet

DaemonSet是在Kubernetes1.2 版本新增的一种资源对象

DaemonSet能够让所有(或者一些特定)的Node节点仅运行一份Pod。当节点加入到kubernetes集群中,Pod会被(DaemonSet)调度到该节点上运行,当节点从kubernetes集群中被移除,被(DaemonSet)调度的Pod会被移除,如果删除DaemonSet,所有跟这个DaemonSet相关的pods都会被删除。

在使用kubernetes来运行应用时,很多时候我们需要在一个区域(zone)或者所有Node上运行同一个守护进程(pod),例如如下场景:

  • 每个Node上运行一个分布式存储的守护进程,例如glusterd,ceph
  • 运行日志采集器在每个Node上,例如fluentd,logstash
  • 运行监控的采集端在每个Node,例如prometheus node exporter,collectd等

DaemonSet的Pod调度策略与RC很类似,除了使用系统内置的调度算法在每个Node上进行调度,也可以在Pod定义中使用NodeSelector或NodeAffinity来指定满足条件的Node范围进行调度

DaemonSet 资源文件格式

apiVersion: extensions/v1beta1kind: DaemonSet  metadata:

1.下面例子定义为在每个Node上都启动一个filebeat容器,其中挂载了宿主机目录"/var/log/messages"

$ vi k8s-log-filebeat.yamlapiVersion: v1kind: ConfigMap # 定义一个config文件内容metadata:  name: k8s-logs-filebeat-config  namespace: kube-systemdata:  # 填写filebeat读取日志相关信息  filebeat.yml: |-    filebeat.prospectors:      - type: log        paths:          - /messages        fields:          app: k8s          type: module        fields_under_root: true    output.logstash:      # specified logstash port (by default 5044)      hosts: ['10.0.0.100:5044']---apiVersion: apps/v1kind: DaemonSet  # DaemonSet 对象,保证在每个node节点运行一个副本metadata:  name: k8s-logs  namespace: kube-systemspec:  selector:    matchLabels:      project: k8s      app: filebeat  template:    metadata:      labels:        project: k8s        app: filebeat    spec:      containers:      - name: filebeat        image: docker.elastic.co/beats/filebeat:6.8.1        args: [          "-c", "/etc/filebeat.yml",          "-e",        ]        resources:          requests:            cpu: 100m            memory: 100Mi          limits:            cpu: 500m            memory: 500Mi        securityContext:          runAsUser: 0        # 进行实际挂载操作        volumeMounts:        # 将configmap里的配置挂载到 /etc/filebeat.yml 文件中        - name: filebeat-config          mountPath: /etc/filebeat.yml          subPath: filebeat.yml        # 将宿主机  /var/log/messages 路径挂载到 /messages中        - name: k8s-logs          mountPath: /messages      # 定义卷      volumes:      - name: k8s-logs        hostPath:          path: /var/log/messages          type: File      - name: filebeat-config        configMap:          name: k8s-logs-filebeat-config

2.使用kubectl create 命令创建该DeamonSet

$ kubectl create -f  k8s-log-filebeat.yamlconfigmap/k8s-logs-filebeat-config createddaemonset.apps/k8s-logs created

3.查看创建好的DeamonSet和Pod,可以看到在每个Node上都创建了一个Pod

$ kubectl get ds -n kube-system | grep "k8s-logs"NAME            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGEk8s-logs                  2         2         0       2            0                                   2m15s$ kubectl get pods -n kube-system -o wide | grep "k8s-logs"  k8s-logs-gw4bs                         0/1     Running   0          87s             k8s-node01                k8s-logs-p6r6t                         0/1     Running   0          87s             k8s-node02                

在kubernetes 1.6以后的版本中,DaemonSet也能执行滚动升级了,即在更新一个DaemonSet模板的时候,旧的Pod副本会被自动删除,同时新的Pod副本会被自动创建,此时DaemonSet的更新策略(updateStrategy)为RollingUpdate,如下:

apiVersion: apps/v1kind: DaemonSet metadata:  name: k8s-logs  namespace: kube-systemspec:  updateStrategy:    type: RollingUpdate

updateStrategy 的另外一个值是OnDelete,即只有当手工删除了DaemonSet创建的Pod副本,新的Pod副本才会被创建出来,如果不设置updateStrategy的值,则在kubernetes 1.6之后的版本中会被默认设置为RollingUpdate(滚动升级)。

运行 调度 副本 节点 文件 版本 对象 资源 宿主 宿主机 日志 时候 策略 进程 集群 升级 更新 例子 信息 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技靠谱吗 广州淘业互联网络科技 广州百单互联网科技有限公司 互联网科技与金融科技 百单互联网科技有限公司 宁波青枫互联网科技有限公司 智腾互联网科技有限公司 深圳市优智互联网科技有限公司 国大互联网教育科技有限公司工作 深圳艾果互联网通讯科技 佛山市拉法互联网科技有限公司 工业互联网山东科技大学 互联网方面的科技前沿 上海科技产业互联网平台 杭州披云加互联网科技有限公司 互联网科技快讯热点 互联网公司属于科技吗 福仕德教育科技互联网 互联网科技大会大佬 长沙易易互联网科技有限公司 互联网金融监管科技数据 未来的互联网科技 兼蜜互联网科技 互联网科技网站 湖南洣水互联网科技有限公司扣款 欧洲十大科技互联网公司 互联网科技大赛获奖感言 滨湖区互联网智能科技产品有哪些 山东有哪些互联网科技公司 互联网硬科技公司
0