kubernetes(k8s) 学习 (四) 控制器详解
文章目录
控制器简介
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 实时监控状态
上一篇: 神奇的RAC宏
下一篇: javascript 学习总结 第一天