当前位置: 首页 > article >正文

DaemonSet 与 Deployment 的主要区别

DaemonSetDeployment 都是 Kubernetes 中常用的控制器(Controller),但它们的用途和行为有所不同。下面是它们的主要区别:

1. 目标用途:

  • DaemonSet: 用于在集群中的每个节点上运行一个 Pod。它确保每个节点上都部署有该 Pod,通常用于运行一些需要在每个节点上都存在的应用程序或服务(例如,日志收集器、监控代理、网络代理等)。
  • Deployment: 用于管理一组副本的 Pod,它确保指定数量的 Pod 副本在集群中运行。Deployment 通常用于无状态应用程序的部署(例如 Web 服务、API 服务器等),可以方便地进行滚动更新、回滚等操作。

2. Pod 分配方式:

  • DaemonSet: 在每个节点上都部署一个 Pod,确保每个节点都有该 Pod 的副本。如果你有新的节点加入集群,DaemonSet 会自动在新节点上启动 Pod。
  • Deployment: Pod 根据调度策略分配到不同节点,通常不会保证每个节点上都有 Pod。你可以指定副本数量,Deployment 会根据集群资源调度 Pods 到合适的节点。

3. 控制的 Pod 数量:

  • DaemonSet: 在每个节点上至少有一个 Pod,所以 Pod 的数量通常等于集群中的节点数。如果有 5 个节点,DaemonSet 会创建 5 个 Pod。
  • Deployment: 根据副本数来控制 Pod 数量,例如,设置副本数为 3,那么 Deployment 会确保集群中有 3 个相同的 Pod。

4. 更新策略:

  • DaemonSet: 更新策略可以配置为滚动更新,但是由于每个节点上都有 Pod,所以更新时可能会涉及到每个节点的 Pod 升级。对于每个节点的 Pod,DaemonSet 会逐个进行更新,确保不中断集群中正在运行的服务。
  • Deployment: 支持滚动更新,Deployment 会逐个替换 Pod 副本,直到所有副本更新完成,且不会影响集群中的服务可用性。

5. 删除行为:

  • DaemonSet: 删除时,DaemonSet 会删除所有节点上的 Pod,通常这些 Pod 是直接绑定到节点的,所以删除时要非常小心。
  • Deployment: 删除时,Deployment 会按照副本数删除 Pod,直到没有 Pod 副本为止。

6. 典型用例:

  • DaemonSet: 用于部署每个节点上都需要的服务或代理,例如日志收集器(Fluentd、Logstash)、监控代理(Prometheus Node Exporter)等。
  • Deployment: 用于部署应用程序或服务,需要控制副本数和负载均衡,常用于 Web 应用、API 服务等。

7. Pod 生命周期:

  • DaemonSet: 当节点被加入集群时,DaemonSet 会自动在新节点上启动 Pod;当节点被删除时,DaemonSet 会删除节点上的 Pod。
  • Deployment: Pod 根据副本数的配置进行管理,不会特别关注节点的数量变化。

简要总结

特性DaemonSetDeployment
目标用途在每个节点上运行一个 Pod管理无状态应用的多个 Pod副本
Pod 分配方式每个节点上一个 Pod根据副本数调度 Pod 到集群中的各节点
副本数量等于节点数根据设置的副本数(如 3 个副本)
更新策略支持滚动更新支持滚动更新和回滚
删除行为删除所有节点上的 Pod删除指定副本数的 Pod
典型用例节点上运行代理或服务(如日志收集)管理 Web 应用或其他服务的副本

根据你的需求选择合适的控制器。如果你需要在每个节点上都运行服务,DaemonSet 是更好的选择;如果你要管理多个副本的应用程序,Deployment 更为合适。


http://www.kler.cn/a/612309.html

相关文章:

  • VSCode 抽风之 两个conda环境同时在被激活
  • 数字图像处理 -- 霍夫曼编码(无损压缩)练习
  • 解决electron-builder vue 打包后element-ui字体图标不显示问题
  • Redis之缓存双写一致性理论分析
  • 数字孪生技术:重塑UI前端的未来
  • C++实现Nadaraya - Watson 核回归计算难题实录:从 O (n²) 到高效优化
  • MybatisPlus(SpringBoot版)学习第四讲:常用注解
  • 【MLP-BEV(10)】BEVPooling V1和BEVPooling V2的view_transformer,进行鱼眼图片实践
  • Android Token的原理和本地安全存储
  • 智能遥感新质生产力暨DeepSeek、Python、OpenCV驱动的空天地数据识别与计算及15个行业标杆案例
  • 代码随想录算法训练营第五十八天 | 拓扑排序精讲 dijkstra(朴素版)精讲
  • css 实现闪烁光标
  • 一套SaaS多租户医疗云his源码,基于云计算的医院信息管理系统(云HIS)
  • Ribbon负载均衡的深度解析与应用
  • 【数学建模】动态规划算法(Dynamic Programming,简称DP)详解与应用
  • 金融级密码管理器——生物特征密钥绑定方案
  • docker-compese 启动mysql8.0.36与phpmyadmin,并使用web连接数据库
  • SSRF服务器请求伪造攻击
  • 设计秒杀系统(高并发的分布式系统)
  • 【数据结构】顺序表-元素去重