5. K8s 的 RC&RS&Deployment 等控制器对象
POD概念基础为了方便一组容器的通信和共享, K8s 提出了 POD 的概念.同一个POD里面的容器共享网络和存储卷, 他们可以使用 localhost 相互访问主要实现是每个Pod都有一个 pause 容器, POD 启动的时候会首先启动 pause 容器.之后其他容器将会共享pause 容器的网络和卷那么两个容器的端口一定不能相同![](https://img-blog.csdnimg.cn/
K8s 的 RC&RS&Deployment
POD概念
为了方便一组容器的通信和共享, K8s 提出了 POD 的概念.
同一个POD里面的容器共享网络和存储卷, 他们可以使用 localhost 相互访问
主要实现是每个Pod都有一个 pause 容器, POD 启动的时候会首先启动 pause 容器.
之后其他容器将会共享pause 容器的网络和卷
那么两个容器的端口一定不能相同
控制器
控制器,主要是用对POD的控制(副本数,镜像等等)的定义,K8s 会尽量去满足这个定义
RC&RS&Deployment
- RC(Replication Controller) 标识一个容器应用保持用户期望的状态, 比如副本数量, 使用镜像等等, 集群会尽量去满足这个期望
- RS(Replica Set) 升级版本的RC, 没有本质区别, 添加了集合式 selector的支持. 新版本中已经抛弃 RC.
- Deployment 添加了滚动更新的支持, 创建后会自动创建一个RS,更新的时候会创建第二个RS, 不断用第二个RS里面的容器替换第一个的, 同时旧的RS不会被删除, 只是停用, 以便回滚的时候使.
Deployment 滚动更新方式, 通过操控RS操控POD
升级之前:
升级中: 建一个新的RS, 并且将旧的POD逐渐删除, 同时在新建的RS下面采取新版本的镜像建立新的POD
升级后: 所有的POD都在新的RS下面. 但是旧的RS不会被删除, 当要回滚的时候, 会删除新的RS下面的POD, 启用旧的RS.
HPA
HPA(Horizontal Pod Autoscaler) 适用于RS和DeployMent, 能够实现依据自定义的一些阀值自动扩容,
例如: 定义CPU阀值, 最大POD数目和最小POD数目, POD数目从最小开始添加一直到达到最大值或者到达CPU阀值
示例: POD的数目会从2 一直添加, 直到CPU>=80% 和 POD数目达到8.
StateFulSet
StateFulSet 有状态服务
有状态服务特点:
- 稳定持久化的存储: POD 重新调度后, 还能读到原来那一份持久化数据, 通常使用PVC来实现
- 稳定的网络标识: 当POD重新调度后, PodName 和HostName 不变, 即用原来的 host 还能访问到这个POD, 基于 headLess Service 实现.
- 有序的部署: 即多个POD之间, 有特定的启动顺序
- 有序收缩: 同样删除的时候也有特定的顺序
DeamSet
在指定的Node上面运行有仅且只有一个POD, 符合条件的 Node 增加是, 会自动添加一个POD, 同时对应的Node回收也会回收对应的POD.
Job & Cron Job
Job是负责批量处理任务, 既仅执行一次的任务. 他保证批处理一个或者多个POD成功结束.
当脚本异常退出会尝试再次执行, 直到成功, 或者超过指定的次数
Corn Job 是基于Job, 可以在指定时间点或者运行一次, 周期性的运行 (基于 cron 表达式)
更多推荐
所有评论(0)