控制器简介

Pod控制器是用于实现管理pod的中间层确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源。

控制器的分类

在这里插入图片描述

ReplicaSet控制器

ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收。

在新版本的Kubernetes中建议使用ReplicaSet来取代ReplicationController。ReplicaSet跟ReplicationController没有本质的不同,只是名字不一样,并且ReplicaSet支持集合式的selector

虽然ReplicaSet可以独立使用,但一般还是建议使用 Deployment 来自动管理ReplicaSet,这样就无需担心跟其他机制的不兼容问题(比如ReplicaSet不支持rolling-update但Deployment支持)。

代用户创建指定数量的pod副本数量,确保pod副本数量符合预期状态,并且支持滚动式自动扩容和缩容功能

ReplicaSet主要三个组件组成:

1)用户期望的pod副本数量
  (2)标签选择器,判断哪个pod归自己管理
  (3)当现存的pod数量不足,会根据pod资源模板进行新建

帮助用户管理无状态的pod资源,精确反应用户定义的目标数量,但是RelicaSet不是直接使用的控制器,而是使用Deployment

在这里插入图片描述

Deployment

它为Pod和Replica Set(下一代Replication Controller)提供声明式更新。

只需要在 Deployment 中描述想要的目标状态是什么,Deployment controller 就会帮您将 Pod 和ReplicaSet 的实际状态改变到您的目标状态。

也可以定义一个全新的 Deployment 来创建 ReplicaSet 或者删除已有的 Deployment 并创建一个新的来替换
在这里插入图片描述

典型的用例如下:

(1)使用Deployment来创建ReplicaSet。ReplicaSet在后台创建pod。
检查启动状态,看它是成功还是失败。
(2)然后,通过更新Deployment的PodTemplateSpec字段来声明Pod的新状态。
这会创建一个新的ReplicaSet,Deployment会按照控制的速率将pod从旧的
ReplicaSet移动到新的ReplicaSet中。
(3)如果当前状态不稳定,回滚到之前的Deployment revision。
每次回滚都会更新Deployment的revision。
(4)扩容Deployment以满足更高的负载。
(5)暂停Deployment来应用PodTemplateSpec的多个修复,然后恢复上线。
(6)根据Deployment 的状态判断上线是否hang住了。
(7)清除旧的不必要的 ReplicaSet。

DaemonSet控制器

它用于确保集群中的每一个节点只运行特定的pod副本,
通常用于实现系统级后台任务。比如ELK服务

特性:服务是无状态的 服务必须是守护进程

在这里插入图片描述

StatefulSet控制器

管理有状态应用

在这里插入图片描述

job控制器

只要完成就立即退出,不需要重启或重建。
在这里插入图片描述

Cronjob控制器

周期性任务控制,不需要持续后台运行
在这里插入图片描述

HPA控制器

在这里插入图片描述

实验理解

1.在这里插入图片描述2.用DaemonSet控制器就很容器实现

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

ReplicaSet测试

在这里插入图片描述在这里插入图片描述1.这里截图遗失了
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
这是网图,重点看注释

在这里插入图片描述2.在这里插入图片描述在这里插入图片描述3.在这里插入图片描述4.在这里插入图片描述5.测试pod的拉伸,直接将yaml文件中副本的个数修改就可

把副本数量修改至现在的3个,可以看到重新更改文件时,直接成功
在这里插入图片描述缩减时,也直接更改副本个数就可以。
在这里插入图片描述
6.测试更改某个pod的标签

在这里插入图片描述2)更改标签
在这里插入图片描述3) 之前是3个pod,由于改了标签,控制器又启了一个pod,控制自己维护的标签的pod始终是3个
在这里插入图片描述4)在这里插入图片描述5)在这里插入图片描述6)在这里插入图片描述
6.测试先更改标签,再恢复标签会怎么样

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

Deployment测试

1.删除之前的
在这里插入图片描述在这里插入图片描述1.在这里插入图片描述在这里插入图片描述在这里插入图片描述2.在这里插入图片描述3.在这里插入图片描述在这里插入图片描述
4.测试拉伸

在这里插入图片描述5.测试滚动更新,将myapp的版本改为v2即可
在这里插入图片描述在这里插入图片描述在这里插入图片描述6.测试回滚
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述查看回滚的状态
在这里插入图片描述
命令行
在这里插入图片描述

DaemonSet

在这里插入图片描述在这里插入图片描述在这里插入图片描述1.在这里插入图片描述在这里插入图片描述在这里插入图片描述
在ser1harbor仓库中拉取zabbix镜像,上传至harbor仓库
在这里插入图片描述1.在这里插入图片描述2.在这里插入图片描述3.在这里插入图片描述4.在这里插入图片描述在这里插入图片描述5.测试删除一个pod
在这里插入图片描述在这里插入图片描述

job控制器

1.在harbor仓库中拉取per镜像,上传至私有仓库
2.在这里插入图片描述
在这里插入图片描述3.计算的结果在日志中
在这里插入图片描述

Cronjob测试

在这里插入图片描述

在这里插入图片描述在这里插入图片描述-w 实时监控状态

Logo

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

更多推荐