一.Pod与controllers的关系
- controllers:在集群上管理和运行容器的对象
- 通过label-selector相关联
- Pod通过控制器实现应用的运维,如伸缩,升级等
二.Deployment
- 部署无状态应用
- 管理Pod和ReplicaSet
- 具有上线部署、副本设定、滚动升级、回滚等功能
- 提供声明式更新,例如只更新一个新的Image
应用场景:Web服务,微服务
三.StatefulSet
- 部署有状态应用
- 每个节点都有固定身份ID
- 集群的规模比较固定
- 如果磁盘损坏,集群内的某个节点无法运行
应用场景:mysql集群,MongoDB集群,Zookeeper集群
四.DaemonSet
- 在每一个Node上运行一个Pod
- 新加入的Node也同样会自动运行一个Pod
应用场景:zabbix agent,saltstack agent
五.Job
- 普通任务(Job)
一次性执行
官方案例:https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
应用场景:离线数据处理
- 定时任务(CronJob)
像Linux的Crontab一样
官方案例:https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/
应用场景:通知,备份