如何操作自定义资源?

client-go为每种K8S内置资源提供对应的clientset和informer。那如果我们要监听和操作⾃定义资源对象,应该如何做呢?这⾥我们有两种⽅式:

⽅式⼀:
使⽤client-go提供的dynamicClient来操作⾃定义资源对象,当然由于dynamicClient是基于RESTClient实现的,所以我们也可以使⽤RESTClient来达到同样的⽬的。
⽅式⼆:
使⽤代码生成器来帮助我们⽣成我们需要的代码,这样我们就可以像使⽤client-go为K8S内置资源对象提供的⽅式监听和操作⾃定义资源了。

总结:k8s操作内置资源可以使用client-go,而操作自定义资源则需要通过代码生成器生成需要的代码来操作自定义资源。

概述

k8s相关功能有许多代码生成器,operator方面常使用kubebuilder、k8s.io/code-generator,以及operator-sdk。而operator-sdk,简而言之,是在kubeBuilder的基础上扩展了功能,它底层还是调用kubeBuilder。通过代码生成器根据配置信息自动生成相关API代码。截至目前版本,前两款工具在生成的文件上有如下区别:

总结:如果是制作完整的operator,那就2款产品一起用吧。

code-generator

code-generator是K8S官⽅提供的⼀组代码⽣成⼯具,它主要有两个应⽤场景:

为CRD编写⾃定义controller时,可以使⽤它来⽣成我们需要的versionedclient、informer、lister以及其他⼯具⽅法;

编写⾃定义APIServer时,可以⽤它来internal和versioned类型的转换defaulters、internal和versioned的clients和informers;

kubeBuilder

kubeBuilder相较于code-generator,在生成的代码框架上更满足于operator的需求,于是我们有必要先了解一下几个有关API的术语。在default命名空间中,一个HTTP路径为:/apis/batch/v1/namespaces/default/jobs,其中,batch为group,v1是version,jobs是resource,核心概念就出来了:

GV & GVK & GVR
GV:group & version
GVK:group & version & kind
GVR:group & version & resource

资源(resourse)总是从属于某个API组(group)的某个版本(version),也就称为GVR,同样,类型(kind)也从属于某个API组(group)的某个版本(version),称为GVK。根据GVK,k8s就能找到一个yaml所对应的资源类型,根据GVR,就能够找到对应的资源信息,于是,GVK/GVR也就成了k8s资源的坐标。

以上两种代码生成器将在接下来的文章进行介绍和实战。

k8s操作自定义资源相关推荐

  1. operator-sdk实战开发K8S CRD自定义资源对象

    环境说明 系统:CentOS Linux release 7.6.1810 (Core) golang:v1.15 operator-sdk:v1.7.0 docker:v1.19 # 因为 oper ...

  2. k8s的自定义资源代码生成详解

    为什么下这篇文章呢,在代码生成这一块跌了两次跟头,说白了只知道照抄,并不知道里面到底是干什么的,要做到知其然并知其所以然,也是为以后在自动生成代码的时候做一个参考. 生成的项目目录结构如下 . ├── ...

  3. k8s自定义资源CRD

    一.概述 在K8S系统扩展点中,开发者可以通过CRD(CustomResourceDefinition)来扩展K8SAPI,其功能主要由APIExtensionServer负责.使用kubernete ...

  4. Kubernetes(k8s)常用资源的使用、Pod的常用操作

    1.K8s是如何运行容器的. 答:k8s是通过定义一个Pod的资源,然后在Pod里面运行容器的.K8s最小的资源单位Pod. 2.如何创建一个Pod资源呢? 答:在K8s中,所有的资源单位都可以使用一 ...

  5. Crd(自定义资源类型)2021.12.05

    目录 文章目录 目录 实验环境 实验软件 1.什么是CRD 2.CRD的定义 3.Controller 4.Operator 5.参考文档 关于我 最后 实验环境 实验环境: 1.win10,vmwr ...

  6. Kubernetes CRD (CustomResourceDefinition) 自定义资源类型

    目录 1.CRD (CustomResourceDefinition) 介绍 1.1 client-go 组件 1.2 Custom Controller 组件 2.环境.软件准备 3.Kuberne ...

  7. kubebuilder自定义资源

    github地址 一直在网上看k8s自定义资源这一块的内容,但是只停留于看,并没有真正的自己去实践一波,写这篇文章主要参考的是这篇博客,只是我对他做了一些简化,我只希望外部能够通过nodeip+por ...

  8. VC中使用自定义资源

    前言 在VC环境中除了我们所常用的Dialog.Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义资源类型能做些什么呢?呵呵,用处多多. 1 ...

  9. Multipart自定义资源限制文件大小限制设计——aop切面怎么才能切入Multipart的文件大小拦截?

    Multipart自定义资源限制文件大小限制设计--aop切面怎么才能切入Multipart的文件大小拦截? author:陈镇坤27 创建时间:2022年1月23日 创作不易,转载请注明来源 摘要: ...

最新文章

  1. 根据声音信号测量距离
  2. PInvoke复习之深入理解char*与wchar_t*与string以及wstring之间的相互转换
  3. chapter1:The way of the program
  4. 解决jar包乱码 in 创新实训 智能自然语言交流系统
  5. vasp 5.2编译方法
  6. [渝粤教育] 四川信息职业技术学院 高频电子技术 参考 资料
  7. 浅谈如何学习linux
  8. java语言factory_一个简单例子解释 Java factory
  9. c语言程序实际问题,《编程解决问题之程序规划语言(c语言)》.doc
  10. artcam 9.0英文版本下载_Win10安装paddlepaddle-gpu的python版本
  11. 剑指offer面试题[19]-二叉树的镜像
  12. Keras——保存和提取模型
  13. 如何在 Mac 上安装新字体?
  14. jQuery 操作表单
  15. 为Ubuntu安装中文语言包
  16. ENVI FLAASH 大气校正方案问题汇总
  17. 思科Packet Tracer基础使用教程
  18. 2019年Q1北京市短租房分布及价钱概览
  19. 搞明白activated和deactivated
  20. 洛谷P3356 火星探险问题(费用流)

热门文章

  1. 微型计算机2019年年度盘点,2019年笔记本电脑市场盘点:AMD突破的一年
  2. oracle函数-LPAD/RPAD
  3. 原生的JS实现摄像头拍照/扫码
  4. SQL内连接,左连接,右连接区别及联系
  5. mysql乱码还原_mysql还原时乱码的解决方法
  6. python pyquery中如何解决nbsp_Python-PyQuery 详解
  7. 网络编程懒人入门(十二):快速读懂Http/3协议,一篇就够!
  8. jquery抽奖大转盘实例(插件思想)
  9. 一本通与众不同_是什么使电子商务设计与众不同?
  10. 弘辽科技:新品直通车要开人群吗?有什么优势吗?