zoukankan      html  css  js  c++  java
  • k8s controller

     

    Controller是什么

    也就是「控制器」,控制Kubernetes的资源实体。怎么控制呢?通过监听资源变化事件。这个事件可能是用户发起的(他希望把资源从A状态更新到B状态),Controller就会获取这个事件并处理事件,即更新目标资源。Kubernetes默认有很多控制器,他们控制着Kubernetes默认资源,如Pod、Deployment、Service等,他们都包含在Controller Manager中。但如果你的资源是个CRD,因为没有对应的控制器,你就得为它自己写Controller了。

    controller  整体工作流程

     

    (1) 创建一个控制器

     

    • 为控制器创建 workqueue

    • 创建 informer, 为 informer 添加 callback 函数,创建 lister

     

    (2) 启动控制器

     

    • 启动 informer

    • 等待本地 cache sync 完成后, 启动 workers

     

    (3) 当收到变更事件后,执行 callback

     

    • 等待事件触发

    • 从事件中获取变更的 Object

    • 做一些必要的检查

    • 生成 object key,一般是 namespace/name 的形式

    • 将 key 放入 workqueue 中

     

    (4) worker loop

     

    • 等待从 workqueue 中获取到 item,一般为 object key

    • object key 通过 lister 从本地 cache 中获取到真正的 object 对象

    • 做一些检查

    • 执行真正的业务逻辑

    • 处理下一个 item

    在编写Controller之前需要了解client-go中的informer机制:

    informer

      

  • 相关阅读:
    第12章学习笔记
    尝试用华为Matepad平板在华为云openEuler做SM系列测试实验
    flex tree xml相关
    asp.net乱码问题
    ArcGIS Server for Flex 资源收集
    asp.net 读写excel
    Geoprocessor 使用
    上传控件
    html页面布局 水平居中 垂直居中
    ArcGIS Engine 代码收集贴
  • 原文地址:https://www.cnblogs.com/dream397/p/14769107.html
Copyright © 2011-2022 走看看