zoukankan      html  css  js  c++  java
  • k8s中Operator的工作流程

    1、基本概念

    • CRD (Custom Resource Definition): 允许用户自定义 Kubernetes 资源,是一个类型;包括可指定的名称和模式,无需任何编程。Kubernetes API提供和处理自定义资源的存储
    • CR (Custom Resourse): CRD 的一个具体实例;
    • 自定义资源:扩展Kubernetes API或允许将自定义API引入kubernetes集群的对象
    • 自定义控制器:以新的方式处理内置的Kubernetes对象,如Deployment、Service等,或管理自定义资源,如同管理本机Kubernetes组件
    • Operator模式(适用于CRD和自定义控制器):Operator基于Kubernetes资源和控制器增加了允许Operator执行常见应用程序任务的配置。

    2、Operator的工作流程

    operator在后端执行一下操作以管理自定义资源

    a、CRD创建: CRD定义规范和元数据,基于该规范和元数据应创建自定义资源,当创建CRD的请求时,使用kubernetes内部模式类型(OpenAPI v3模式)验证元数据,然后创建自定义资源(CRD)对象

    b、自定义资源创建根据元数据和CRD规范验证对象,并相应地创建自定义对象创建

    c、Operator(自定义控制器)开始监控event以及status状态变更,并基于CRD管理自定义资源,它可以提供event或status状态在自定义资源上执行CRUD操作,因此每当变更自定义资源的状态时,都能触发相应的event

    3、自定义控制器的工作原理

    Reflector:负责通过List、Watch函数监控APIserver中指定类型的资源对象;收到APIServer的资源变动通知时,Reflector基于Listing API获取资源变动信息,并放置在由watchHandler函数定义的DeIta FIFO队列中

    Informer:基于ProcessLoop 从Delta FIFO队列中取出(POP)对象缓存至本地,同时调用控制器以便将对象传递给它

    Indexer: 索引器,负责索引哪些缓存在本地的资源对象。Indexer使用线程安全的数据存储来存储对象及其键。在Store中定义了一个名为MetaNamespaceKeyFunc的默认函数,该函数生成对象的键的格式是/<name>的组合。

    Resource Event Handlers:需要传递对象给自定义控制器时调用的回调函数,负责从Informer接收待处理资源对象的key,并存入Workqueue中

    Workqueue:用户在自定义控制器中自行实现消息队列,它从Resource Event Handlers接收和缓冲待处理的资源对象,并交由Process Item进行处理,从而将对象接收和处理的过程解耦

    Process Item:执行资源对象管理操作的业务代码,通常由一到多个函数组成,负责从Workqueue中取出对象并完成真正的处理过程,必要时,这些函数还会调用Indexer以检索和获取资源的详细状态数据。

  • 相关阅读:
    关于idea的目录, mybatis里mapper无法用resource获取 和 驼峰命令规则
    直接调用类方法 和 new再调用方法 的区别
    腾讯笔试题
    linux安装包
    centos 学习笔记一
    putty链接l虚拟机linux centos
    单链表的一般处理(C语言)
    华为2011机试题
    【转】函数返回类型为指针类型时的一些问题
    在 Windows Server 2012 上安装 dotNET Framework v3.5
  • 原文地址:https://www.cnblogs.com/gavin11/p/15215942.html
Copyright © 2011-2022 走看看