Kubernetes 之 DaemonSet 基本原理

Kubernetes 之 DaemonSet 基本原理

DaemonSet 定义

DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。它最经常被使用在收集集群日志的用途上。

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:
      labels:
        name: fluentd-elasticsearch
    spec:
      tolerations:
      # 这些容忍度设置是为了让该守护进程集在控制平面节点上运行
      # 如果你不希望自己的控制平面节点运行 Pod,可以删除它们
      - 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: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: varlog
          mountPath: /var/log
      # 可能需要设置较高的优先级类以确保 DaemonSet Pod 可以抢占正在运行的 Pod
      # priorityClassName: important
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
复制代码
root@k8s-master1:~# kubectl get ds -n kube-system
NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
fluentd-elasticsearch   3         3         3       3            3           <none>                   112s
kube-proxy              3         3         3       3            3           kubernetes.io/os=linux   18d

root@k8s-master1:~# kubectl get pods -n kube-system -owide -l name=fluentd-elasticsearch
NAME                          READY   STATUS    RESTARTS   AGE    IP               NODE          NOMINATED NODE   READINESS GATES
fluentd-elasticsearch-6fmkb   1/1     Running   0          3m8s   10.244.194.122   k8s-worker1   <none>           <none>
fluentd-elasticsearch-pd4ps   1/1     Running   0          3m8s   10.244.159.156   k8s-master1   <none>           <none>
fluentd-elasticsearch-tkkvq   1/1     Running   0          3m8s   10.244.126.2     k8s-worker2   <none>           <none>
相关推荐
是一个Bug17 分钟前
Docker 与 Kubernetes:从“集装箱”到“远洋舰队”
docker·容器·kubernetes
java_cj20 分钟前
阅读 k8s 源码的准备工作
云原生·容器·kubernetes
开发者联盟league1 小时前
使用Jenkins整合Sonarqube/Gitlab/Harbor/Kubernetes实现CICD
kubernetes·gitlab·jenkins
蜀道山老天师1 小时前
OpenClaw 从零部署 + 飞书机器人完整接入(实操篇)
运维·docker·容器·飞书
robinLi09131 小时前
docker mac 下载不同系统架构镜像
macos·docker·容器
鹤落晴春15 小时前
【K8s】Pod调度、configMaps
云原生·容器·kubernetes
张忠琳15 小时前
【runc 1.4.2】(Part 2)runc 1.4.2 超深度分析 — CLI层:main.go、命令文件、runner、信号处理、TTY
云原生·kubernetes·runc
极客先躯16 小时前
高级java每日一道面试题-2026年02月02日-实战篇[Docker]-如何实现容器的持久化存储?
docker·容器·面试宝典·持久化·存储·韵味·java高级面试题
极客先躯17 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷
某林21219 小时前
Isaac Sim 5.1.0 无头服务器部署与 RTX 显存段错误排障全记录
运维·服务器·docker·容器·isaac