4. K8S 控制器
Kubernetes 控制器
控制器类型
ReplicaSet(RS):代用户创建指定数量的pod副本数量,确保pod副本数量符合预期状态,并且支持滚动式自动扩容和缩容功能。
ReplicaSet主要的三个组件:
用户期望的Pod数量
标签选择器,判断哪个Pod归自己管理
当现存的Pod数量不足时,会根据Pod资源模板进行新建
注意:RS帮助用户管理无状态的Pod资源,精确反应用户定义的目标数量,但是RelicaSet因为不可以滚动更新和回滚,所以使用Deployment。
Deployment:工作在ReplicaSet之上,用与管理无状态应用,目前来说最好的控制器。支持滚动更新和回滚功能,还能提供声明式配置。
DaemonSet:用于确保集群中的每一个节点只运行特定的pod副本,通常用于实现系统级后台任务。比如ELK服务
- 特性:
- 服务是无状态的
- 服务必须是守护进程
- 特性:
Job:只要完成就立即退出,不需要重启或重建
Cronjob:周期性任务控制退出,不需要支持后台运行
StatefulSet:管理有状态应用
ReplicaSet 控制器
在k8s早期版本仅有ReplicationController(RC)一种Pod控制器,后来陆陆续续引入了更多的控制器,其中就包括ReolicaSet(RS)用于取代RC,RC与RS功能基本上相同,但是强烈要求使用RS,目前RC早已经被废弃。
| |
==注意:==
- RS控制器是基于标签控制POD资源的
- 缺少了POD副本会自己补全
- 多出的POD副本会自己删除
- 在更新Pod模板及升级应用时们需要手动删除老的版本
- ReplicaSet确保任何时间都有指定数量的Pod副本在运行。然而Deployment是一个更高级的概念,它管理RepliceSet,并向Pod提供声明式的更新以及许多其他有的功能。因此,建议使用Deployment而不是直接使用RepliceSet,除非你需要自定义更新业务流程或根本不与要更新。
Deployment 控制器
Deployment是一个可以拥有ReplicaSet并使用声明方式在服务器端完成对Pods滚动更新的对象。尽管ReplicaSet可以独立使用,目前它们的主要用途是提供给Deployment作为编排Pod创建、删除和更新的一种机制。当使用Deployment时,你不必关心如何管理它所创建的ReplicaSet,Dempolyment拥有并管理其ReplicaSet。因此,建议在需要ReplicaSet时使用Deployment。
只需要在Deployment中描述想要的目标状态是什么,Deployment controller就会将Pod和ReplicaSet的实际状态改变到您的目标状态。也可以定义一个全新的Deployment来创建ReplicaSet或者删除已有的Deployment并创建一个新的来替换。
| |