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 表达式)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐