Operator开发之operator-sdk入门
1 operator-sdk
除了kubebuilder,operator-sdk是另一个常用的用于开发Operator的框架,不过operator-sdk还是基于kubebuilder,因此,通常还是建议使用kubebuilder开发Operator。
2 环境准备
跟kubebuilder类似,需要安装golang、operator-sdk。
在Operator SDK下载对应环境的二进制,例如,x86环境一般下载operator-sdk_linux_amd64,然后重命名为operator-sdk,拷贝到/usr/local/bin/目录。
3 Operator Demo
这里采用跟kubebuilder一样的例子讲解operator-sdk的开发流程:开发的是一个类似ReplicaSet的资源,它会负责创建一定数量的Pod。
3.1 初始化项目
operator-sdk init --domain tutorial.kubebuilder.io --repo github.com/demo
上面的命令跟kubebuilder唯一的区别就是把kubebuilder命令换成了operator-sdk。
生成的目录结构跟kubebuilder的区别在于:
- kubebuilder的main.go在cmd目录,而operator-sdk的main.go在根路径
- operator-sdk的config目录下多了manifests目录和scorecard目录
3.2 创建API
operator-sdk create api --group batch --version v1 --kind Demo
与kubebuilder生成的文件的唯一的区别就是控制器所在的路径,kubebuilder是在internal/controller,而operator-sdk则将控制器代码放在controllers目录,代码是一样的,而且demo_types.go也是一样的,因此,完全可以直接将kubebuilder中的代码直接拷贝到operator-sdk中。因此,这里直接进入测试阶段。
3.3 部署测试
operator-sdk和kubebuilder的make help也没有太大区别,只是operator-sdk加了一些构建命令,里面还涉及到bundle和catalog image。
因此,也可以用同样的方式在本地进行测试:
- 生成CRD和RBAC:
make manifests - 为Demo资源重新生成zz_generated.deepcopy.go:
make generate - 在k8s中创建CRD:
make install - 本地运行Controller:
make run
4 kubebuilder vs operator-sdk
从上面的operator-sdk的使用看,基本跟kubebuilder没有区别,那operator-sdk到底有啥优势呢?或者说,既然operator-sdk基于kubebuilder,那肯定有很多kubebuilder没有的功能。
kubebuilder是基于controller-runtime开发的operator开发库,而operator-sdk在kubebuilder上增加了很多用于实践的工具:
- 执行
operator-sdk help时可以看到有很多插件,每种插件就对应一种项目类型,里面比较熟悉的可能就是ansible、kubebuilder、helm,也就是说,通过operator-sdk创建项目时不仅可以创建基于kubebuilder的项目,还可以创建基于ansible和helm的项目,这两种方式基本不需要用golang就可以开发operator - operator-sdk集成了OLM,它可以管理集群中的operator,当安装OperatorHub上的operator时,就需要先安装OLM
以上两点应该是operator-sdk和kubebuilder的比较大的区别。
5 参考文档
- RedHat 开发Operator
相关文章:
Operator开发之operator-sdk入门
1 operator-sdk 除了kubebuilder,operator-sdk是另一个常用的用于开发Operator的框架,不过operator-sdk还是基于kubebuilder,因此,通常还是建议使用kubebuilder开发Operator。 2 环境准备 跟kubebuilder类似,需要安…...
RabbitMQ生产者的可靠性
目录 MQ使用时会出现的问题 生产者的可靠性 1、生产者重连 2、生产者确认 3、数据持久化 交换机持久化 队列持久化 消息持久化 LazyQueue懒加载 MQ使用时会出现的问题 发送消息时丢失: 生产者发送消息时连接MQ失败生产者发送消息到达MQ后未找到Exchange生…...
集群节点批量执行 shell 命令
1、SSH 工具本身支持多窗口 比如 MobaXterm: 2、编写脚本通过 ssh 在多台机器批量执行shell命令 创建 ssh_hosts 配置文件,定义需要批量执行的节点(必须能够通过 ssh 免密登录,且存在同名用户) vim ssh_hostsbig…...
fl studio21.2水果软件怎么设置中文?
FL Studio编曲软件真的是个神器,不过一开始打开看到全是英文,有点头大,对吧?其实切换成中文版超级简单,只需要几个步骤就搞定啦!我自己也是用中文版的,觉得用起来更得心应手,效率也提…...
.NET CORE 3.1 集成JWT鉴权和授权2
JWT:全称是JSON Web Token是目前最流行的跨域身份验证、分布式登录、单点登录等解决方案。 通俗地来讲,JWT是能代表用户身份的令牌,可以使用JWT令牌在api接口中校验用户的身份以确认用户是否有访问api的权限。 授权:这是使用JWT的…...
nbcio-boot如何进行gitee第三方登录
更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/nbcio-boot 前端代码:https://gitee.com/nbacheng/nbcio-vue.git 在线演示(包括H5) : http://122.227.135.243:9888 1、用户g…...
【C语言】字符函数、字符串函数与内存函数
简单不先于复杂,而是在复杂之后。 目录 0. 前言 1. 函数介绍 1.1 strlen 1.1.1 介绍 1.1.2 strlen 函数模拟实现 1.1.2.1 计数器方法 1.1.2.2 递归方法 1.1.2.3 指针 - 指针方法 1.2 strcpy 1.2.1 介绍 1.2.2 strcpy 函数模拟实现 1.3 strcat 1…...
生成树协议:监控 STP 端口和交换机
什么是生成树协议 生成树协议 (STP) 用于网络交换机,以防止循环和广播风暴。在局域网 (LAN) 中,两条或多条冗余路径可以连接到同一网段。当交换机或网桥从所有可用端口传输帧时,这些帧开始在网…...
【黑产攻防道03】利用JS参数更新检测黑产的协议破解
任何业务在运营一段时间之后都会面临黑产大量的破解。验证码和各种爬虫的关系就像猫和老鼠一样, 会永远持续地进行博弈。极验根据十一年和黑产博弈对抗的经验,将黑产的破解方式分为三类: 1.通过识别出验证码图片答案实现批量破解验证,即图片…...
什么是web3.0?
Web 3.0,也常被称为下一代互联网,代表着互联网的下一个重大演变。尽管关于Web 3.0的确切定义尚无共识,但它通常被认为是一种更分散、更开放且更智能的互联网。 以下是Web 3.0的一些主要特征和概念: 1. 去中心化 Web 3.0旨在减少…...
二、W5100S/W5500+RP2040树莓派Pico<DHCP>
文章目录 1 前言2 简介2 .1 什么是DHCP?2.2 为什么要使用DHCP?2.3 DHCP工作原理2.4 DHCP应用场景 3 WIZnet以太网芯片4 DHCP网络设置示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 …...
【开源】基于SpringBoot的天然气工程业务管理系统的设计和实现
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四、数据库设计4.1 用户表4.2 分公司表4.3 角色表4.4 数据字典表4.5 工程项目表4.6 使用材料表4.7 使用材料领用表4.8 整体E-R图 五、系统展示六、核心代码6.1 查询工程项目6.2 工程物资…...
讯飞星火大模型V3.0 WebApi使用
讯飞星火大模型V3.0 WebApi使用 文档说明:星火认知大模型Web文档 | 讯飞开放平台文档中心 (xfyun.cn) 实现效果 初始化 首先构建一个基础脚手架项目 npm init vuelatest用到如下依赖 "dependencies": {"crypto-js": "^4.2.0",&q…...
拥有DOM力量的你究竟可以干什么
如果你希望访问 HTML 页面中的任何元素,那么您总是从访问 document 对象开始! 查找HTML元素 document.getElementById(id) 通过元素 id 来查找元素 <!DOCTYPE html> <html> <head><meta charset…...
GnuTLS recv error (-110): The TLS connection was non-properly terminated
ubuntu git下载提示 GnuTLS recv error (-110): The TLS connection was non-properly terminated解决方法 git config --global --unset http.https://github.com.proxy...
Notepad++安装插件和配置快捷键
Notepad是一款轻量级、开源的文件编辑工具,可以编辑、浏览文本文件、二进制文件、.cpp、.java、*.cs等文件。Notepad每隔1个月,就有一个新版本,其官网是: https://github.com/notepad-plus-plus/notepad-plus-plus。这里介绍其插件…...
iOS Autolayout 约束设置【顺序】的重要性!
0x00 顺序不同,结果不同 看图说话 1 代码是这样滴~ 设置好约束,让 4 个按钮,宽度均分~ 结果如上图 [_pastButton.topAnchor constraintEqualToAnchor:_textView.bottomAnchor constant:6].active YES;[_pastButton.leftAnchor constraintEq…...
Echarts渲染不报错但是没有内容
🔥博客主页: 破浪前进 🔖系列专栏: Vue、React、PHP ❤️感谢大家点赞👍收藏⭐评论✍️ 问题:在开发项目的时候使用了Echarts但是好端端的忽然就不渲染了 感觉很无语啊,毕竟好好的就不渲染了&am…...
数据结构 | 算法的时间复杂度和空间复杂度【详解】
数据结构 | 算法的时间复杂度和空间复杂度【详解】 1. 什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 2. 什么是算法? 算法(Algorithm):就是定义良好的计算过…...
高级篇之ENC编码器多机位帧同步配置详解
高级篇之ENC编码器多机位帧同步配置详解 一 帧同步方案多样性1. 配合vMIX导播的帧同步方案3. 配合硬件导播的帧同步方案3. 配合芯象导播的帧同步 二 帧同步方案1实现步骤1. 准备设备2. 搭建环境3 配置设备3.1 配置固定机位3.2 配置帧同步转发端3.3 配置vMIX 三 效果对比1 不开帧…...
OpenClaw+千问3.5-9B资料整理术:自动归类学术PDF与笔记
OpenClaw千问3.5-9B资料整理术:自动归类学术PDF与笔记 1. 为什么需要自动化资料整理 作为一名长期与学术文献打交道的科研工作者,我电脑里的PDF文件数量已经突破四位数。每次下载新论文时,手动重命名文件、记录关键信息、整理到对应文件夹的…...
YOLOv5与DeepSort结合优化:如何调整参数让目标跟踪更精准(附代码对比)
YOLOv5与DeepSort参数调优实战:提升目标跟踪精度的关键策略 在计算机视觉领域,目标跟踪技术正从实验室快速走向工业应用。当基础功能实现后,如何让系统在实际场景中表现更稳定、更精准,成为开发者面临的核心挑战。本文将深入剖析Y…...
2026年花洒产品推荐:四款热门花洒横评,闭眼入不踩雷
其实选花洒不用盲目追大牌,核心看体验、看品质、看适配性。今天就带来四款热门花洒的深度横评,涵盖瑞尔特、飞利浦、小米米家、九牧四大主流品牌,每款都结合真实使用体验拆解,不罗列参数、不夸大宣传,让每天的沐浴都能…...
2025届学术党必备的六大AI论文助手解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek DeepSeek身为人工智能写作工具,于学术论文撰写里能够起到辅助方面的作用…...
UG NX 合并曲面减少面得数量
“同步建模”里的“优化面” 确实是处理这类问题最直接、最高效的命令。对于客户发来的非参数化模型(比如 STP、IGS 等),中间有碎线或分割线导致的“假面”,用它来合并非常合适。核心操作:使用“优化面”命令 启动命令…...
Python数据类配置模式详解
在现代Python应用开发中,配置管理是一个关键环节。今天我们来深入分析一个优雅的配置管理实现,它展示了如何将环境变量配置与数据类完美结合。 核心概念 让我们先看一个典型的配置类实现: from __future__ import annotations import os from…...
集成学习完全指南:从AdaBoost到随机森林,揭秘为什么一群“弱鸡”能吊打“学霸”
在机器学习领域,单个模型的表现往往受限于其固有的偏差(Bias)和方差(Variance)问题——这就好比一位再厉害的学霸,也难免有自己的知识盲区。集成学习(Ensemble Learning)正是为解决这…...
抖音无水印视频批量下载器深度解析:从架构设计到实战应用
抖音无水印视频批量下载器深度解析:从架构设计到实战应用 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...
2026 最新全开源壁纸头像小程序源码:自带流量主,完美适配微信生态
在微信小程序生态中,壁纸、头像类工具凭借高频使用、低门槛运营的特性,一直是个人开发者与创业者试水流量变现的优质选择。2026 年最新推出的全开源壁纸头像小程序源码,不仅解决了传统开发的繁琐流程,更自带流量主功能、高清生成能…...
4步高效实现OneNote Markdown导出:从迁移到深度应用指南
4步高效实现OneNote Markdown导出:从迁移到深度应用指南 【免费下载链接】onenote-md-exporter ConsoleApp to export OneNote notebooks to Markdown formats 项目地址: https://gitcode.com/gh_mirrors/on/onenote-md-exporter 当你需要将多年积累的OneNot…...
