1.控制器的类型

Pod的分类
自主式Pod: Pod退出后不会被创建
控制器管理的Pod: 在控制器的生命周期里,始终要维持Pod的副本数目。
控制器的类型
<1> Replication Controller和ReplicaSet

ReplicaSet 是下一代的 Replication Controller,官方推荐使用ReplicaSet。
ReplicaSet 和 Replication Controller 的唯一区别是选择器的支持,ReplicaSet 支持 新的基于集合的选择器需求。
ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行。
虽然 ReplicaSets 可以独立使用,但今天它主要被Deployments 用作协调 Pod 创建、 删除和更新的机制。

<2> Deployment

Deployment 为 Pod 和 ReplicaSet 提供了一个申明式的定义方法。
典型的应用场景:用来创建Pod和ReplicaSet、滚动更新和回滚、扩容和缩容、暂停与恢复

<3> DaemonSet

DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点 加入集群时, 也会为他们新增一个 Pod 。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
DaemonSet 的典型用法:
在每个节点上运行集群存储 DaemonSet,例如 glusterd、ceph。
在每个节点上运行日志收集 DaemonSet,例如 fluentd、logstash。
在每个节点上运行监控 DaemonSet,例如 Prometheus Node Exporter、 zabbix agent等。
一个简单的用法是在所有的节点上都启动一个 DaemonSet,将被作为每种 类型的 daemon 使用。
一个稍微复杂的用法是单独对每种 daemon 类型使用多个 DaemonSet,但 具有不同的标志, 并且对不同硬件类型具有不同的内存、CPU 要求。

<4> StatefulSet

StatefulSet 是用来管理有状态应用的工作负载 API 对象。实例之间有不对等 关系,以及实例对外部数据有依赖关系的应用,称为“有状态应用”
StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提 供*序号和唯一性保证*。
StatefulSets 对于需要满足以下一个或多个需求的应用程序很有价值:
稳定的、唯一的网络标识符。
稳定的、持久的存储。 
有序的、优雅的部署和缩放。
有序的、自动的滚动更新

<5> Job

执行批处理任务,仅执行一次任务,保证任务的一个或多个Pod成功结束。

<6> CronJob

Cron Job 创建基于时间调度的 Jobs。
一个 CronJob 对象就像 crontab (cron table) 文件中的一行,它用 Cron 格式 进行编写,并周期性地在给定的调度时间执行 Job。

<7> HPA全称为Horizontal Pod Autoscaler

根据资源利用率自动调整service中Pod数量,实现Pod水平自动缩放。

2.几种控制器的使用

(1) ReplicaSet控制器
在这里插入图片描述

vim rs.yml

在这里插入图片描述
在这里插入图片描述
修改一下rs.yml文件,更改副本数。

vim rs.yml

在这里插入图片描述
在这里插入图片描述
上面我们是设置的拉伸,缩减也是一样的。

vim rs.yml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再次修改rs.yml文件,更改镜像。

vim rs.yml

在这里插入图片描述
在这里插入图片描述

vim rs.yml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从以上可以看到,replicaset控制器,他可以直接调节副本数replicas,但不可以直接控制镜像的更改。当更改镜像后,他只有对新产生的副本生效,对已经产生的副本不起作用。

(2)deployment控制器
在这里插入图片描述
在这里插入图片描述

\vi deployment.yml   ##将deployment的例子复制进去,并且转义一下
vim deployment.yml  ##再次打开这个文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
能看到deployment控制器包含rs控制器。

vim deployment.yml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
能看到deployment控制器,能够直接控制镜像的更改,当然可以直接控制副本数。当控制镜像的更改时,他是直接生成一个新的rs控制器,使用这个新的rs控制器。而旧的rs控制器并不会被删除,留着回滚用。

版本回退:

vim deployment.yml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当有控制器存在时,每当删除一个Pod,他就会新生成一个pod,想要彻底删除pod,只有删除控制器。
在这里插入图片描述
我们也可以使用- - - 分隔符来创建俩个控制器。

vim deployment.yml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)DaemonSet控制器
在这里插入图片描述
在这里插入图片描述

\vi daemonset.yml   ##将模板粘贴到文件中,并转义
vim daemonset.yml  ##然后再打开

在这里插入图片描述
这里我们使用的镜像是zabbix监控,这个监控是一个节点运行一个。
因为节点需要下载zabbix镜像,所以我们需要把这个镜像上传至私有仓库中,每个节点从仓库中下取,这样下载会快很多。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)job控制器
在这里插入图片描述

vim job.yml

在这里插入图片描述
这里需要使用到perl镜像,方法还是一样的,server2上将这个镜像下载下来并上传至私有仓库中。这个最后运行结果使用kubectl logs example-job查看,可以看到小数点后有2000位的pai的值。
这里我就不演示了。

(5)CronJob控制器
这是基于时间调度的控制器。
在这里插入图片描述
在这里插入图片描述

Logo

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

更多推荐