K8S--五种控制器类型解析(Deployment 、StatefulSet 、DaemonSet 、Job 、CronJob)

  • Deployment:‌主要用于部署无状态服务。‌它是一个声明式更新策略,‌可以确保在任何给定时间运行特定数量的Pod,‌并且当Pod模板更改时,‌Deployment控制器会更新运行中的Pod副本以匹配最新配置。‌Deployment能够自动化地执行滚动更新,‌即逐步替换旧版本的Pod以新版本,‌从而避免了服务中断。‌此外,‌Deployment还提供了回滚机制,‌如果更新出现问题,‌可以轻松地回滚到之前的版本。‌

  • Job:‌用于执行批处理任务,‌它确保某一批任务执行成功完成,‌无论这些任务是否成功完成。‌Job非常适合运行一次性的任务或者批处理作业,‌比如数据分析和处理任务。‌Job可以创建多个Pod来执行任务,‌并且当所有Pod成功完成时,‌Job也会自动完成。‌

  • StatefulSet:‌用于部署有状态应用。‌与Deployment不同,‌StatefulSet为每个Pod分配一个唯一的网络标识符,‌并且保证了Pod的顺序启动。‌StatefulSet非常适合需要稳定持久存储的应用,‌比如数据库集群等。‌由于StatefulSet保证了Pod的唯一性和稳定性,‌因此它非常适合需要保持网络标识不变的应用场景。‌

  • DaemonSet控制器:在每一个Node上运行一个Pod,新加入的Node也同样会自动运行一个Pod,应用场景:监控,分布式存储,日志收集等

综上所述

  • Deployment适合部署无状态服务,‌提供滚动更新和回滚机制。‌
  • Job适合执行批处理任务,‌确保任务成功完成,一次性执行任务,执行完任务容器关闭。。‌
  • StatefulSet适合部署有状态应用,‌保证Pod的唯一性和稳定性。‌
  • DaemonSet一次部署,所有的node节点都会部署,包括新加入的node节点,同样会被部署。适用于集群、日志、监控。
  • CronJob周期性执行任务。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 21:54:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 21:54:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 21:54:03       45 阅读
  4. Python语言-面向对象

    2024-07-22 21:54:03       55 阅读

热门阅读

  1. 优化ifelse语句

    2024-07-22 21:54:03       16 阅读
  2. redis常用指令

    2024-07-22 21:54:03       15 阅读
  3. 多站点环境下Memcached的配置与管理

    2024-07-22 21:54:03       18 阅读
  4. Vue3 深入组件

    2024-07-22 21:54:03       16 阅读
  5. Leetcode热题100 Day4

    2024-07-22 21:54:03       15 阅读
  6. Python每日学习

    2024-07-22 21:54:03       15 阅读
  7. web前端 React 框架面试200题(七)

    2024-07-22 21:54:03       15 阅读
  8. 鸡兔同笼求解器

    2024-07-22 21:54:03       17 阅读