k8s从入门到放弃之DaemonSet控制器

k8s从入门到放弃之DaemonSet控制器

Kubernetes中的DaemonSet(简称Ds)控制器是一种工作负载资源,用于在集群中的每个节点(或者满足特定条件的节点)上运行一个Pod副本。这种控制器确保了所有符合条件的节点都会运行该Pod的一个副本,这对于需要在每个节点上运行的系统级服务特别有用,比如网络插件的守护进程、日志收集器等。

DS控制器特性

  • 节点覆盖:默认情况下,DaemonSet会调度Pod到所有可用的节点上。你可以通过节点选择器或亲和性规则来限制哪些节点应该运行DaemonSet的Pod。
  • 自动扩展和收缩:当你向集群中添加新节点时,如果它们符合DaemonSet的条件,则DaemonSet控制器会自动在这些节点上创建Pod。同样地,如果节点被移除,相应的Pod也会被垃圾回收机制自动删除。
  • 更新策略:DaemonSet支持多种更新策略,包括"OnDelete"和"RollingUpdate"。使用"RollingUpdate",可以实现无缝的滚动更新,而不会中断服务。

主要使用场景

  • 监控和日志收集:例如Prometheus node-exporter或Fluentd,这些工具通常需要在每个节点上运行以收集数据。
  • 存储和网络:某些网络插件或存储驱动程序可能需要在每个节点上运行自己的代理或守护进程。
  • 系统管理和服务发现:在某些情况下,你可能需要在每个节点上运行一些辅助服务或工具,以便进行系统管理和增强服务发现功能。

资源文档查询:kubectl explain ds

DaemonSet控制器案例

复制代码
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: ds-filebeat
spec:
  selector:
    matchLabels:
      app: file
  template:
    metadata:
      labels:
        app: file
    spec:
      tolerations:
      - key: "node-role.kubernetes.io/control-plane"
        operator: Exists
        effect: NoSchedule
      containers:
      - name: filebeat
        image: elastic/filebeat:7.8.1
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          protocol: TCP
          containerPort: 5044

查看pod状态

复制代码
[root@master ~]# kubectl get pod -o wide
NAME                READY   STATUS    RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
ds-filebeat-g7l76   1/1     Running   0          2m58s   172.16.166.144   node1    <none>           <none>
ds-filebeat-g8vgf   1/1     Running   0          2m57s   172.16.104.54    node2    <none>           <none>
ds-filebeat-l64lm   1/1     Running   0          2m56s   172.16.219.94    master   <none>           <none>
相关推荐
广州灵眸科技有限公司1 小时前
瑞芯微(EASY EAI)RV1126B 星闪使用
运维·人工智能·科技·docker·容器
努力努力再努力wz1 小时前
【Docker入门系列】:从 Namespace 到 CGroup:一文理解容器资源控制、cgroup v2 与 Memory Controller 实战
运维·docker·容器
玉&心1 小时前
通过helm在k8s上面一键部署前端和后端代码
云原生·容器·kubernetes·helm
11路没有终点2 小时前
Docker 化测试环境:一致性交付
运维·docker·容器
生活爱好者!3 小时前
NAS能批量做短视频?docker部署MoneyPrinterTurbo
运维·docker·容器
容器魔方3 小时前
议程一览 | 华为云亮相 KubeCon + CloudNativeCon China 2026
人工智能·云原生·容器·开源·华为云·云计算
瀛川4 小时前
Agent 换了 Pod,身份怎么办?拆解 Substrate 的 Actor Identity
人工智能·云原生
yanwumuxi4 小时前
Milvus使用和改进
云原生·eureka·milvus
拦路雨g5 小时前
docker_data.vhdx大文件瘦身
运维·docker·容器
分布式存储与RustFS5 小时前
RustFS 1.0.0-rc.5 发布:GA 前的最后一次大版本打磨
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准