K8S有哪些控制器
前言:K8S的控制器是非常重要的存在,每种控制器都处理不同的任务,它主要用来控制Pod的状态和行为。一、为什么要有控制器K8S是容器资源管理和调度平台,容器跑在Pod里,Pod是K8S里最小的单元。所以,这些Pod作为一个个单元我们肯定需要去操作它的状态和生命周期。那么如何操作?这里就需要用到控制器了。这里一个比较通俗的公式:应用APP = 网络 + 载体 + 存储这里应用一般分为无状态应用、有状
前言:
K8S的控制器是非常重要的存在,每种控制器都处理不同的任务,它主要用来控制Pod的状态和行为。
源站:https://blog.csdn.net/weixin_47151643/article/details/109089409
一、为什么要有控制器
K8S是容器资源管理和调度平台,容器跑在Pod里,Pod是K8S里最小的单元。所以,这些Pod作为一个个单元我们肯定需要去操作它的状态和生命周期。那么如何操作?这里就需要用到控制器了。
这里一个比较通俗的公式:应用APP = 网络 + 载体 + 存储
这里应用一般分为无状态应用、有状态应用、守护型应用、批处理应用这四种。
无状态应用:应用实例不涉及事务交互,不产生持久化数据存储在本地,并且多个应用实例对于同一个请求响应的结果是完全一致的。举例:nginx或者tomcat
有状态应用:有状态服务可以说是需要数据存储功能的服务或者指多线程类型的服务、队列等。举例:mysql数据库、kafka、redis、zookeeper等。
守护型应用:类似守护进程一样,长期保持运行,监听持续的提供服务。举例:ceph、logstash、fluentd等。
批处理应用:工作任务型的服务,通常是一次性的。举例:运行一个批量改文件夹名字的脚本。
无状态服务的特点:
1)deployment 认为所有的pod都是一样的
2)不用考虑顺序的要求
3)不用考虑在哪个node节点上运行
4)可以随意扩容和缩容
有状态服务的特点:
1)实例之间有差别,每个实例都有自己的独特性,元数据不同,例如etcd,zookeeper
2)实例之间不对等的关系,以及依靠外部存储的应用。
原文链接:https://blog.csdn.net/weixin_47151643/article/details/109089409
这些类型的应用服务如果是安装在传统的物理机或者虚拟机上,那么我们一般会通过人肉方式或者自动化工具的方式去管理编排。但是这些服务一旦容器化了跑在了Pod里,那么就应该按照K8S的控制方式来管理了。那K8S靠什么具体的操作来做编排容器?答案就是这些控制器。
二、K8S有哪些控制器
既然应用的类型有上面说的这些无状态、有状态的,那么K8S肯定要实现一些控制器来专门处理对应类型的应用。总体来说,K8S有五种控制器,分别对应处理无状态应用、有状态应用、守护型应用和批处理应用。
Deployment
StatefulSet
DaemonSet
Job
CronJob
2.1:pod与控制器之间的关系
controllers:在集群上管理和运行容器的对象通过label-selector相关联
Pod通过控制器实现应用的运维,如伸缩,升级等
更多推荐
所有评论(0)