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周期性执行任务。