kubernetes(k8s)—控制器
1.控制器的类型Pod的分类自主式Pod: Pod退出后不会被创建控制器管理的Pod: 在控制器的生命周期里,始终要维持Pod的副本数目。控制器的类型<1> Replication Controller和ReplicaSetReplicaSet 是下一代的 Replication Controller,官方推荐使用ReplicaSet。ReplicaSet 和 Replication
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控制器
这是基于时间调度的控制器。
更多推荐
所有评论(0)