本文最后更新于 426 天前,其中的信息可能已经过时,如有错误请发送邮件到 wuxianglongblog@163.com
有 - 无状态控制器
Pod 与 controllers 的关系
- controllers:在集群上管理和运行容器的对象
- 通过 label-selector 相关联
- Pod 通过控制器实现应用的运维,如伸缩,滚动升级等
一、Deployment
部署无状态应用
应用场景:Web 服务、微服务
- 管理 Pod 和 ReplicaSet
- 具有上线部署、副本设定、滚动升级、回滚等功能
- 提供声明式更新,例如只更新一个新的 Image
二、DaemonSet
-
在每一个 Node 上运行一个 Pod
-
新加入的 Node 也同样会自动运行一个 Pod
-
应用场景:Agent
官方文档:https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
三、Job
-
Job 分为普通任务(Job)和定时任务(CronJob)
-
一次性执行
-
-
应用场景:离线数据处理,视频解码等业务
官方文档: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/
五、有状态控制器
官方文档:https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
1.StatefulSet
- 部署有状态应用
- 解决 Pod 独立生命周期,保持 Pod 启动顺序和唯一性
- 稳定,唯一的网络标识符,持久存储
- 有序,优雅的部署和扩展、删除和终止
- 有序,滚动更新
- 应用场景:数据库
StatefulSet 与 Deployment 区别:有身份的!
身份三要素:
-
域名
-
主机名
-
存储(PVC)
2.Headless
无头 Service