这篇文章我们介绍下kubernetes的控制器。主要从以下几个方面来进行阐述:
1、控制器是什么? 2、控制器的控制模式有哪些? 3、控制器的状态有哪些?
下面分别介绍下。
一、控制器是什么?
在kubernetes中,控制器是一个组件,他不停的监控着整个kubernetes集群的状态,并且对监控的资源做动态的变更调整。
在kubernetes中,控制器有很多,例如:Deployment Controller(专门管理部署的),Job Controller(专门管理执行任务的),StatefulSet Controller(专门管理集群状态的)等等。
二、控制器的控制模式有哪些?
上面提过,控制器不仅仅是监控对应的状态信息,还需要做控制调整。因此控制器的控制模式主要分为两种,分别是:通过APIserver进行控制和直接控制。
先说说通过APIServer进行控制:
在kubernetes内部自带的控制器几乎都是通过APIServer进行交互来达到调整控制目标的目的。例如:假设我们需要运行3个pod,集群的job Controller监控到目前只有一个pod实例在运行,那么他就会通知对应的APIServer服务,此时其他的控制组件就会配合APIserver新创建2个pod以达到最终的目的。
再说说直接控制:
负责直接控制的控制器一般都是比较特殊的控制器,例如我们线下的集群节点与云节点进行打通,那么我们需要保证整个集群的节点数是一定的。那么此时就需要这种外部控制器通过apiserver读取目标的状态信息,然后调用外部的接口进行节点的新增和移除。
三、控制器的状态有哪些?
控制器的状态这个就比较简单了,主要有:目标状态和当前状态。
目标状态即我们理想的状态。
当前状态是指目前集群中正在运行的实时状态信息。
上面我们说过过控制器需要监控目标在集群中的状态,在kubernetes集群中,随时都可能出现任何突发情况,所以当前状态是不稳定的。当当前状态不满足目标状态的时候,就需要进行调整。
还没有评论,来说两句吧...