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以检索和获取资源的详细状态数据。

  • 相关阅读:
    第四章JAVA EE基础知识
    第二章代码审计环境搭建
    第三章代码审计辅助工具简介
    python json.dumps 中文需要注意的事项
    multiprocessing 使用实践
    Python中*args和**kwargs的使用实践
    python 继承学习记录
    关于vue-element-admin启动项目遇到的一些问题
    @RequestParam
    前端菜单点击切换样式,菜单控制iframe
  • 原文地址:https://www.cnblogs.com/gavin11/p/15215942.html
Copyright © 2011-2022 走看看