什么是pod
- pod就是一个资源管理对象,其中由一个或多个docker容器组成。每个pod有一个根容器pause,其余容器共享该容器的网络栈。
- 一个节点的所有容器都放在pod中封装
- pod是k8s集群最小调度单位
pod控制器类型
- RC(ReplicationController) 可以保证容器应用副本数始终保持在用户自定义的副本数,少则创建,多则回收
- RS(ReplicaSet)和RC没有本质区别,支持集合式selector
- Deployment 部署组件,可以实现滚动更新。搭配RS使用
- HPA(Horizontal Pod Autoscaling) 仅适用于Deployment和RS,可以自动扩缩容
- StatefullSet 为了解决有状态服务的问题(deployment和RS为无状态服务设计)其应用场景包括:
- 稳定的持久化存储:Pod重新调度后还是能访问到相同的持久化数据
- 稳定的网络标志:Pod重新调度后其PodName和HostName不变
- 有序部署,有序扩展,有序收缩,有序删除。可以按照预定顺序启动容器
- DaemonSet 确保全部节点上运行一个pod副本。新加入的添加,移除的回收。典型用法:
- 运行集群存储daemon
- 在每个节点运行日志收集daemon
- 监控daemon,例如Prometheus
- job:负责批处理任务,既仅执行一次的任务,保证批处理任务的一个或多个pod成功结束
- Cron Job 管理基于时间的Job
- 给定时间运行一次
- 周期性在给定时间运行