zoukankan      html  css  js  c++  java
  • 使用kubebuilder开发自定义controller

    目录

    • 声明式API
    • CRD开发
      • CRD定义
      • 自动代码生成
        • generator.sh
        • kubeuilder
      • controller开发
        • CREAT
        • DELETE
        • GET
        • UPDATE

    声明式API

    参考资料

    • 声明式API概念是什么?
    • 声明式API / 命令式API 各自的优缺点?
      • 声明式:关注最终的期望状态
        • mysql/mongoDB:不关心你怎么去连接,只要最终的数据。
        • “声明式 API”允许有多个 API 写端,以 PATCH 的方式对 API 对象进行修改,而无需关心本地原始 YAML 文件的内容。
      • 命令式:给出一个个命令,指导如何step by step达到期望状态
    • k8s总体架构

    CRD开发-自动代码生成

    前言:这两个东西是为了更好的帮助用户专注业务,开发控制器本身而自动生成代码的模块。一个很重要的问题:

    实现 CRD 扩展主要做两件事:

    1. 编写 CRD 并将其部署到 K8s 集群里。
      这一步的作用就是让 K8s 知道有这个资源及其结构属性,在用户提交该自定义资源的定义时(通常是 YAML 文件定义),K8s 能够成功校验该资源并创建出对应的 Go struct 进行持久化,同时触发控制器的调谐逻辑。

    2. 编写 Controller 并将其部署到 K8s 集群里。这一步的作用就是实现控制逻辑。

    自动生成代码工具就是帮我们简化上述两个过程

    一张有价值的架构图

    • 它自动生成了哪些代码?
    • 他们的功能是什么?
    • 各自用法?

    generator.sh

    • 混合kubebuilder与code generator编写CRD
      • Resouce + Controller = Operator
      • kubebuilder生成CRD和manifests yaml
      • code-generator生成informers、listers、clientsets
      • 这些组件发挥的作用是什么?(需要进一步调研)

    kubebuilder

    CRD开发-controller开发

    • 配置go环境

      • mac环境GOPATH:/usr/local/go
    • 安装kubebuilder

    • Controller逻辑开发

      • 社区设计文档
      • CREATE
        • 只有一个层级队列
        • hierarchical queue和flatted queue不能同时存在
        • Queue name/weight/parent的名字约束
        • nodes in spec.queues must be defined as a hierarchy queue. (?)
      • DELETE
      • UPDATE
      • GET
  • 相关阅读:
    经典小故事
    清晨六问
    ui相关书籍
    ui设计书籍推荐
    生成器
    函数之装饰器
    函数之闭包
    函数之作用域的查找顺序
    函数之命名空间/名字空间/名称空间
    内置函数
  • 原文地址:https://www.cnblogs.com/rhythmic/p/15750079.html
Copyright © 2011-2022 走看看