k8s怎么监听自定义资源的变更?(2)

接上一篇当生成下面代码之后怎么去使用呢?
image.png

1.生成crd文件

这里我们通过kubebuilder的一个子项目 controller-gen 来生成crd文件
https://github.com/kubernetes-sigs/controller-tools

curl -L -o https://github.com/kubernetes-sigs/controller-tools;
go install controller-tools/cmd/controller-gen;
controller-gen crd paths=./pkg/apis/... output:crd:dir=config/crd

image.png
可以看到已经生成成功了。

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:annotations:controller-gen.kubebuilder.io/version: (devel)name: foos.core.bigbird0101
spec:group: core.bigbird0101names:kind: FoolistKind: FooListplural: foossingular: fooscope: Namespacedversions:- name: v1schema:openAPIV3Schema:description: Foo is a specification for a Foo resourceproperties:apiVersion:description: |-APIVersion defines the versioned schema of this representation of an object.Servers should convert recognized schemas to the latest internal value, andmay reject unrecognized values.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourcestype: stringkind:description: |-Kind is a string value representing the REST resource this object represents.Servers may infer this from the endpoint the client submits requests to.Cannot be updated.In CamelCase.More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindstype: stringmetadata:type: objectspec:description: FooSpec is the spec for a Foo resourceproperties:deploymentName:type: stringreplicas:format: int32type: integerrequired:- deploymentName- replicastype: objectstatus:description: FooStatus is the status for a Foo resourceproperties:availableReplicas:format: int32type: integerrequired:- availableReplicastype: objectrequired:- spec- statustype: objectserved: truestorage: true

在 k8s当中执行一下这个yaml,可以看到已经成功
image.png

apiVersion: core.bigbird0101/v1
kind: Foo
metadata:name: test-foo
spec:deploymentName: "test-foo"replicas: 1
status:     availableReplicas: 1

再去执行 可以看到已经成功
image.png

2.写监听代码

package mainimport (v1 "bigbird0101/crd-test/pkg/apis/core/v1""bigbird0101/crd-test/pkg/generated/clientset/versioned""bigbird0101/crd-test/pkg/generated/informers/externalversions""context""fmt""k8s.io/client-go/tools/cache""k8s.io/client-go/tools/clientcmd"
)func main() {flags, _ := clientcmd.BuildConfigFromFlags("", clientcmd.RecommendedHomeFile)client, _ := versioned.NewForConfig(flags)factory := externalversions.NewSharedInformerFactoryWithOptions(client, 0,externalversions.WithNamespace("default"))informer := factory.Core().V1().Foos().Informer()_, err := informer.AddEventHandler(cache.ResourceEventHandlerFuncs{AddFunc: func(obj interface{}) {foo := obj.(*v1.Foo)fmt.Printf("foo added: %v\n", foo)},UpdateFunc: func(oldObj, newObj interface{}) {foo := oldObj.(*v1.Foo)fmt.Printf("foo UpdateFunc: %v\n", foo)foo2 := newObj.(*v1.Foo)fmt.Printf("foo UpdateFunc: %v\n", foo2)},DeleteFunc: func(obj interface{}) {foo := obj.(*v1.Foo)fmt.Printf("foo Deleted: %v\n", foo)},})if err != nil {fmt.Println(err)return}informer.Run(context.Background().Done())
}

可以代码测试
删除资源和创建资源 可以看到都收到了通知
image.png
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

48、Flink 的 Data Source API 详解

a)概述 本节将描述 FLIP-27 中引入的新 Source API 的主要接口。 b)Source Source API 是一个工厂模式的接口,用于创建以下组件。 Split EnumeratorSource ReaderSplit SerializerEnumerator Checkpoint Serializer 此外,Sou…

D-Day 上海站回顾丨以科技赋能量化机构业务

5月31日下午,DolphinDB 携手光大证券,在上海成功举办 D-Day 行业交流会。三十余位来自私募机构的核心策略研发、量化交易员、数据分析专家们齐聚现场,深入交流量化投研交易过程中的经验、挑战及解决方案。 DolphinDB 赋能机构业务平台 来自光…

1877java项目建设平台管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 项目建设平台管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开 发。开发环境为TOMCAT7.0,Myeclipse8.…

java表实体 蛇形转驼峰 正则匹配替换

java表实体 蛇形转驼峰 正则匹配替换 1.匹配寻找正则:([a-z])_([a-z])2.替换结果正则:$1\U$2\E效果如下图所示:

Python第二语言(三、Python函数def)

目录 1. Python函数(def 函数名():) 1.1 sorted对容器进行排序:无法指定排序规则 1.2 sort对容器自定义排序:可以指定排序规则 1.3 获取变量长度函数(len) 1.4 函数的定义 1.5 函数-传参定义 1.6 函…

如何使用 Systemd 和 Nginx 部署 Node.js 应用程序

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 在将 Web 应用部署到 Droplet 时,可能会诱人地简单地使用与开发中相同的设置,即在终端中运行“ruby app.rb”或“node server.js”来启动服务器。这样做简单易行…

C#-for循环语句

for循环语句 语法: for(初始化变量; 判断条件; 增量表达式) { // 内部代码 } 第一个空(初始表达式): 一般用来声明一个临时的局部变量 用来计数第二个空(条件表达式): 表明进入循环的条件 一个bool类型的值(bool类型 条件表达式 逻辑运算符)第三个空(增量表达式): 使用第一个空…

Python怎么翻译:探索Python在翻译领域的无限可能

Python怎么翻译:探索Python在翻译领域的无限可能 Python,这门强大而灵活的编程语言,已经在众多领域展现了其独特的魅力。然而,当谈到翻译这一领域时,许多人可能会感到困惑:Python怎么能用于翻译呢&#xf…

OpenCV如何判断一张图片是否有过高的明暗变化

操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 前言 判断一张图片是否有过高的明暗变化,可以通过分析图像的亮度分布一致性来实现。一种常见的做法是计算图像的亮度标准差(Standard …

免费,C++蓝桥杯等级考试真题--第7级(含答案解析和代码)

C蓝桥杯等级考试真题--第7级 答案:D 解析:步骤如下: 首先,--a 操作会使 a 的值减1,因此 a 变为 3。判断 a > b 即 3 > 3,此时表达式为假,因为 --a 后 a 并不大于 b。因此,程…

ESP32-C3模组上跑通NVS(4)

接前一篇文章:ESP32-C3模组上跑通NVS(3) 本文内容参考: 非易失性存储库 - ESP32 - — ESP-IDF 编程指南 latest 文档 ESP32-C3入门教程 基础篇(八、NVS — 非易失性存储库的使用)_esp入门教学-CSDN博客 …

STM32 启用指令缓存 HAL_ICACHE_Enable

函数在 STM32 的 HAL(硬件抽象层)库中通常用于启用指令缓存(I-Cache)。以下是该函数的主要功能: 启用指令缓存: 当调用 HAL_ICACHE_Enable 函数时,STM32 的 Cortex-M 处理器(特别是…

ElementUI的Table组件在无数据情况下让“暂无数据”文本居中显示

::v-deep .el-table__empty-block {width: 100%;min-width: 100%;max-width: 100%; }

如何在npm上发布自己的包

如何在npm上发布自己的包 npm创建自己的包 一、一个简单的创建 1、创建npm账号 官网:https://www.npmjs.com/创建账号入口:https://www.npmjs.com/signup 注意:需要进入邮箱验证 2、创建目录及初始化 $ mkdir ufrontend-test $ cd ufron…

今日科普:了解、预防、控制高血压

高血压,常被称为“隐形的健康威胁”,许多患者可能在毫无预警的情况下发病,且患病率逐年攀升,同时患者群体逐渐年轻化,高血压虽然难以根治,但并不可怕,真正可怕的是血压长期居高不下,…

STM32(七):ADC电位检测 (标准库函数)

前言 上一篇文章已经介绍了如何用STM32单片机中的定时器的PWM波来实现LED的“呼吸”。这篇文章我们来介绍一下如何用STM32单片机中ADC进行电位检测,并发送到XCOM串口中显示。 一、实验原理 1.ADC模数转换的介绍 首先,我们先介绍一下AD模数模块&#…

arcpy批量导出图且图名为shp属性值

1.打开arcmap加载需要导出的图。需求是逐村显示“村界内图斑”并导出为图,在导出每个村时不显示周围的村和“村界内图斑” 2.arcmap上方空白处右键打开“数据驱动页面” 3.在“数据驱动页面”工具条点击第一个图标,打开“设置数据驱动页面” 4.在“设置…

Oracle触发器的用途

0.DDL和DML DDL:data manipulation language,数据操作语言,主要命令有select,update,insert,delete,主要用于对数据库中的数据进行操作 DDL:data definition language,数据定义语言,主要命令有create,alter&#xff…

Spring (40)Spring Cloud和Spring Boot

Spring Boot和Spring Cloud是两个在现代Java应用开发中广泛使用的项目,它们共同构成了创建云原生、微服务架构应用的强大基础。虽然它们紧密协作,但服务于不同的目的。下面,我们将深入探讨它们之间的关系,结合源码和代码示例来进行…

Java1.8全套家政上门服务+springboot+ mysql +Thymeleaf 技术架构开发,家政APP系统在线派单,师傅入驻全套商业源码

Java1.8全套家政上门服务springboot mysql Thymeleaf 技术架构开发,家政APP系统在线派单,师傅入驻全套商业源码 家政预约上门小程序的实用性? 家政预约上门小程序的实用性主要体现在以下几个方面: 一、方便快捷的预约体验&#…