pause
pod 建立会启动pause容器。那么pod中其他的content共享pause容器的网络栈,那么意味着,pod 中的容器是互相可见,当然网络资源也是抢占的。
容器还可以起到共享文件的作用。挂载在pause下的资源。pod内的容器都能访问。
控制器
ReplicationController(RC) && ReplicationSet(RS) && Deployment
RC
用来确保容器应用的副本数维持在用户的期望数目。容器异常,创建新的,删除旧的。
RS
新版本Kubernets 官方抛弃RC使用RS ,因为RS支持集合式selector.
Delpoyment
RS不支持滚动更新(rolling-update),而Deployment支持.但是Deployment不负责Pod创建。
Deployment创建pod的过程:
Horizontal Pod Autoscaling
仅适用于Deployment 和DeplicaSet
- v1版本仅支持根据Pod的CPU利用率扩容
- v1alpha版本支持根据内存和用户自定义的metric扩缩容
statefulSet
为了解决有状态服务的问题
- 稳定的持久化存储,Pod 重新调度之后依然可以访问相同的持久化数据,基于PVC 实现
- 稳定的网络标志,调度之后PodName和HostName 不变,基于Headless Servcie 实现
- 有序部署,pod部署扩展顺序执行,下一个Pod的运行建立在之前的Pod都是Running和Ready状态。基于init containers实现
- 有序收缩
DaemonSet
保证部分或者全部Node上运行一个Pod副本。新Node加入集群,会为其新增一个Pod,删除DaemonSet会删除他创建的所有Pod.移除node会删除DaemonSet为其创建的Pod.
用法:
- 运行集群存储Daemon,每个Node上运行glusterd,ceph.
- 每个Node上运行日志收集Daemon,例如fluentd或者logsatsh
- 为每个Node运行监控Daemon,例如Prometheus Node Exporter.
Job
Cron Job
- 定时执行一次任务
- 周期给定时间点运行