当前位置: 首页 > news >正文

【总结】kubernates crd client-java 关于自定义资源的增删改查

Java model 准备

首先使用 crd.yml 和 kubernetes CRD 自动生成 Java model 类,这是一切的前提,之前在这个地方也卡了很久。如何生成在另外一个文章中已经有所记录。
使用 crd.yml 和 kubernetes CRD 自动生成 Java model 类

CustomObjectsApi 文档学习

官网 kubernetes-client/java 的 CustomObjectsApi 介绍使用
在这个里面我们能找到所有关于自定义资源的增删改查的 api 的操作,还有示范的例子,可以根据自己的需求进行相关的改造使用。

示例

1、查看所有的自定义资源列表

public List<V1alpha1xxxx> getxxxList() {log.info("getxxxxList start to work");CustomObjectsApi apiInstance = kubernetesService.getCustomObjectsApi();Object result = null;try {result =apiInstance.listNamespacedCustomObject(group, version, namespace, plural, null, null, null, null, null, null, null, null,null, null);} catch (ApiException e) {log.info("listNamespacedCustomObject api call failed with status code "+ e.getCode()+ ": "+ e.getResponseBody());e.printStackTrace();}ObjectMapper objectMapper = kubernetesApplicationService.getObjectMapper();V1alpha1xxxList v1alpha1xxxList =objectMapper.convertValue(result, V1alpha1xxxList.class);return v1alpha1xxxList.getItems();}

2、得到指定的某一个自定义资源

public V1alpha1xxx getxxx(String name) {log.info("getxxx start to work");//        "name": "admin-1akyr08e9wwt"Object result =kubernetesApplicationService.getCustomObjectsApi(group, version, namespace, plural, name);ObjectMapper objectMapper = kubernetesApplicationService.getObjectMapper();V1alpha1xxx v1alpha1xxx = objectMapper.convertValue(result, V1alpha1xxx.class);return v1alpha1xxx;
}

CustomObjectsApi 去获得指定的某一个自定义资源

public Object getCustomObjectsApi(String group, String version, String namespace, String plural, String name) {CustomObjectsApi apiInstance = kubernetesService.getCustomObjectsApi();Object result = null;try {result = apiInstance.getNamespacedCustomObject(group, version, namespace, plural, name);} catch (ApiException e) {if (e.getCode() == 404) {log.info("custom object {} does not exist", name);} else {log.info("getNamespacedCustomObject api call failed with status code "+ e.getCode()+ ": "+ e.getResponseBody());e.printStackTrace();}}return result;}

3、创建一个自定义资源

public V1alpha1xxx createxxx(V1alpha1xxx v1alpha1xxxb) {log.info("createxxx start to work");Object customObject =kubernetesApplicationService.createNamespacedCustomObject(group,version,namespace,plural,v1alpha1xxx.getMetadata().getName(),v1alpha1xxx);return v1alpha1xxx;

CustomObjectsApi去创建一个自定义的资源

public Object createNamespacedCustomObject(String group,String version,String namespace,String plural,String name,KubernetesObject kubernetesObject) {CustomObjectsApi apiInstance = kubernetesService.getCustomObjectsApi();Object customObject = null;try {customObject =apiInstance.createNamespacedCustomObject(group, version, namespace, plural, kubernetesObject, null, null, null);log.info("createNamespacedCustomObject {}", name);} catch (ApiException e) {log.info("createNamespacedCustomObject api call failed with status code "+ e.getCode()+ ": "+ e.getResponseBody());e.printStackTrace();}return customObject;}

4、删除自定义资源

 public void deleteBayesJob(String name) {log.info("deletexxx {} start to work", name);V1alpha1xxx xxx = getxxx(name);if (xxx == null) {log.error("can not get xxx {}", name);return;}kubernetesApplicationService.deleteNamespacedCustomObject(group, version, namespace, plural, name);}

CustomObjectsApi删除指定的自定义资源

public void deleteNamespacedCustomObject(String group, String version, String namespace, String plural, String name) {V1DeleteOptions body = new V1DeleteOptions();CustomObjectsApi apiInstance = kubernetesService.getCustomObjectsApi();try {Object result =apiInstance.deleteNamespacedCustomObject(group, version, namespace, plural, name, null, null, null, null, body);log.info("delete namespaced customObject {}", name);} catch (ApiException e) {log.info("deleteNamespacedCustomObject api call failed with status code "+ e.getCode()+ ": "+ e.getResponseBody());e.printStackTrace();}}

5、修改自定义资源

public void killxxx(String name) {log.info("killxxx start to work");CustomObjectsApi apiInstance = kubernetesService.getCustomObjectsApi();V1alpha1xxx bxxx = getBaxxx(name);if (bxxx== null) {log.error("can not get bxxx {}", name);throw new InvalidRequestException("invalid name " + name);}Map<String, String> annotations = bxxx.getMetadata().getAnnotations();if (annotations == null) {bxxx.getMetadata().setAnnotations(new HashMap<>() {{put("xxxxx/terminate", "true");}});} else {bxxx.getMetadata().getAnnotations().put("xxxx/terminate", "true");}ObjectMapper objectMapper = kubernetesApplicationService.getObjectMapper();String bxxxAsString = null;try {bxxxAsString = objectMapper.writeValueAsString(bxxx);} catch (JsonProcessingException e) {log.error("killxxx writeValueAsString error {}", e.getMessage());e.printStackTrace();throw new RuntimeException(e);}Gson gson = new Gson();JsonObject jsonObject = gson.fromJson(bayesJobAsString, JsonObject.class);kubernetesApplicationService.replaceNamespacedCustomObject(group, version, namespace, plural, jsonObject, name);
}

CustomObjectsApi replace某一个自定义资源

public void replaceNamespacedCustomObject(String group,String version,String namespace,String plural,JsonObject jsonObject,String name) {log.info("replaceNamespacedCustomObject name {} ,jsonObject {}", name, jsonObject);CustomObjectsApi apiInstance = kubernetesService.getCustomObjectsApi();try {Object result =apiInstance.replaceNamespacedCustomObject(group, version, namespace, plural, name, jsonObject, null, null);log.info("replaceNamespacedCustomObject name {} result {}", name, result);} catch (ApiException e) {log.error("Exception when calling CustomObjectsApi#replaceNamespacedCustomObject");log.error("Status code: {} , Reason: {}", e.getCode(), e.getResponseBody());e.printStackTrace();}}

这个是先查找自定义资源A是否存在,如果存在的话,修改自定义资源A的某些属性,然后将其A进行序列化。之后 gson.fromJson 然后再进行自定义资源A的replace

相关文章:

【总结】kubernates crd client-java 关于自定义资源的增删改查

Java model 准备 首先使用 crd.yml 和 kubernetes CRD 自动生成 Java model 类&#xff0c;这是一切的前提&#xff0c;之前在这个地方也卡了很久。如何生成在另外一个文章中已经有所记录。 使用 crd.yml 和 kubernetes CRD 自动生成 Java model 类 CustomObjectsApi 文档学习…...

蓝牙主要知识,一文概览

蓝牙知识相关 文章目录 蓝牙知识相关1.蓝牙版本的发展简史2.低功耗BLE PHY2.1 频段**2.2 BLE调制方案—GFSK**2.3 **蓝牙 LE 传输速度、功率和接收器灵敏度**2.4 **BLE 时分双工 (TDD)**3.BT主从连接过程3.1 主设备工作模式3.1.1 积木编程控制台3.2 从设备工作模式3.2.1 蓝牙遥…...

Linux 守护进程

一 何为守护进程 守护进程&#xff08; Daemon &#xff09;也称为精灵进程&#xff0c;是运行在后台的一种特殊进程&#xff0c;它独立于控制终端并且周期性 地执行某种任务或等待处理某些事情的发生&#xff0c;主要表现为以下两个特点&#xff1a; 长期运行。守护进程是一…...

自动驾驶技术的基础知识

自动驾驶技术是现代汽车工业中的一项革命性发展&#xff0c;它正在改变着我们对交通和出行的理解。本文将介绍自动驾驶技术的基础知识&#xff0c;包括其概念、历史发展、分类以及关键技术要素。 1. 自动驾驶概念 自动驾驶是一种先进的交通技术&#xff0c;它允许汽车在没有人…...

解决:yarn 无法加载文件 “C:\Users\XXXXX\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本“ 的问题

1、问题描述&#xff1a; 报错的整体代码为&#xff1a; yarn : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\yarn.ps1&#xff0c;因为在此系统上禁止运行脚本 // 整体的报错代码为 &#xff1a; yarn : 无法加载文件 C:\Users\admin\AppData\Roaming\npm\yarn.ps1&…...

【JVM--StringTable字符串常量池】

文章目录 1. String 的基本特性2. 字符串拼接操作3. intern()的使用4. StringTable 的垃圾回收 1. String 的基本特性 String 声明为 final 的&#xff0c;不可被继承String 实现了 Serializable 接口&#xff1a;表示字符串是支持序列化的。String 实现了 Comparable 接口&am…...

Large Language Models Meet Knowledge Graphs to Answer Factoid Questions

本文是LLM系列文章&#xff0c;针对《Large Language Models Meet Knowledge Graphs to Answer Factoid Questions》的翻译。 大型语言模型与知识图谱相遇&#xff0c;回答虚假问题 摘要1 引言2 相关工作3 提出的方法4 实验设计5 结果与讨论6 结论 摘要 最近&#xff0c;有研…...

blender 之视频渲染(以三维重建path为例)

blender 之视频渲染&#xff08;以三维重建path为例&#xff09; 1.新建轨迹路径2.设置相机&#xff0c;使其按照path运动3.将相机视角对准物体4.修改帧率5.设置输出路径6.设置输出格式7.渲染 1.新建轨迹路径 新建轨迹 选中新建的BezierCycle&#xff0c;按住S&#xff0c;拖…...

leetcode做题笔记166. 分数到小数

给定两个整数&#xff0c;分别表示分数的分子 numerator 和分母 denominator&#xff0c;以 字符串形式返回小数 。 如果小数部分为循环小数&#xff0c;则将循环的部分括在括号内。 如果存在多个答案&#xff0c;只需返回 任意一个 。 对于所有给定的输入&#xff0c;保证 …...

Android Studio新建项目缓慢解决方案

关于Android Studio2022新建项目时下载依赖慢的解决方案 起因解决方案gradle下载慢解决方案kotlin依赖下载慢解决方案 结尾 起因 新建Android Studio项目时&#xff0c;常会因为网络问题导致部分依赖下载缓慢&#xff0c;其中gradle和kotlin最拖慢进度。 解决方案 gradle下载…...

AmdU (5-azidomethyl-2‘-deoxyuridine)的反应原理|59090-48-1

产品简介&#xff1a;叠氮甲基dU&#xff08;AmdU&#xff09;是一种核苷类化合物&#xff0c;它含有叠氮基团&#xff0c;这种结构特点使其在细胞学和生物学领域得到了广泛应用。与胸腺嘧啶核苷相似的结构&#xff0c;使得叠氮甲基dU&#xff08;AmdU&#xff09;能够被细胞聚…...

使用nvm安装多个node版本

github下载地址: Releases coreybutler/nvm-windows (github.com) 安装了 nvm&#xff08;Node Version Manager&#xff09;后&#xff0c;可以使用以下步骤安装第二个 Node.js 版本&#xff1a; 打开终端或命令提示符。 使用以下命令列出可用的 Node.js 版本&#xff1a; …...

基于springboot实现自习室预订系统的设计与实现项目【项目源码+论文说明】分享

基于springboot实现自习室预订系统的设计与实现演示 摘要 在网络高速发展的时代&#xff0c;众多的软件被开发出来&#xff0c;给学生带来了很大的选择余地&#xff0c;而且人们越来越追求更个性的需求。在这种时代背景下&#xff0c;学院只能以学生为导向&#xff0c;所以自习…...

淘宝详情API接口

一、引言 随着互联网的快速发展和电子商务的广泛应用&#xff0c;淘宝作为中国最大的C2C电商平台&#xff0c;其提供的API接口在各种应用中发挥着越来越重要的作用。本文将详细介绍淘宝详情API接口的背景、定义、类型&#xff0c;以及在各种应用场景中的作用和优势&#xff0c…...

充气膜结构的应用领域

由于充气膜结构具有丰富多彩的造型&#xff0c;优异的建筑特性、结构特性和适宜的经济性等其他传统建筑无法比拟的优势&#xff0c;因此备受人们青睐&#xff0c;被应用于工业、民用、军事等许多领域中&#xff0c;具有广阔的应用前景。 充气膜结构的主要应用领域包括&#xff…...

自动拟人对话机器人在客户服务方面起了什么作用?

在当今数字时代&#xff0c;企业不断寻求创新的方法来提升客户服务体验。随着科技的不断进步和消费者期望的提升&#xff0c;传统的客户服务方式逐渐无法满足现代消费者的需求。因此&#xff0c;许多企业正在积极探索利用新兴技术来改进客户服务&#xff0c;自动拟人对话机器人…...

检验检疫系统(LIS)源码:C# + MVC + SQLserver + Redis

LIS系统源码技术特点&#xff1a;采用.Net Core新的技术框架、DEV报表、前端js封装、分布式文件存储、分布式缓存等&#xff0c;支持LIS独立部署&#xff0c;Docker部署等多种方式。 技术架构&#xff1a;ASP.NET CORE 3.1 MVC SQLserver Redis等 开发语言&#xff1a;C…...

tcpdump(一)基础理论知识

一 抓包分析技术初探 说明&#xff1a; 本篇章跟tcp/ip的知识没有关系,只是讲解tcpdump工具背景补充&#xff1a; 抓包是做报文分析的第一步敬畏心&#xff1a; 隔行如隔山,不要想当然 ① 背景 ② 抓包技术名词 1、捋顺这些技术的来龙去脉甚至八卦;2、这样我们在后续课程…...

一种重要的天然氨基酸L-Homopropargylglycine(HPG)|CAS:942518-19-6

产品简介&#xff1a;L-Homopropargylglycine是一种重要的天然氨基酸&#xff0c;具有多种生物活性和医学应用价值。它广泛应用于生物学、药学、化学等多个领域。在生物学中&#xff0c;HPG被用作蛋白质合成的标记物&#xff0c;可以通过其特殊的化学反应与蛋白质中的半胱氨酸残…...

uniapp快速入门系列(3)- CSS技巧与布局

章节二&#xff1a;CSS技巧与布局 1. uniapp中的样式编写2. 常见布局技巧与实例解析2.1 水平居中布局2.2 垂直居中布局2.3 等高布局2.4 响应式布局 3. CSS动画与过渡效果 在uniapp中&#xff0c;我们使用CSS来设置页面的样式和布局。本章将介绍一些在uniapp中常用的CSS技巧和布…...

双阶段目标检测是什么?有什么用?

一、引言在计算机视觉技术飞速发展的当下&#xff0c;目标检测作为核心分支&#xff0c;早已从实验室走向现实生活的方方面面&#xff0c;成为人工智能感知世界的关键入口。所谓目标检测&#xff0c;就是让计算机通过对图像、视频的分析&#xff0c;同步完成物体定位与物体分类…...

HashCheck:Windows系统下终极文件完整性验证解决方案

HashCheck&#xff1a;Windows系统下终极文件完整性验证解决方案 【免费下载链接】HashCheck HashCheck Shell Extension for Windows with added SHA2, SHA3, and multithreading; originally from code.kliu.org 项目地址: https://gitcode.com/gh_mirrors/ha/HashCheck …...

2026论文写作工具红黑榜:AI论文网站怎么选?这份榜单够用!

红榜优先选千笔AI、ThouPen、豆包&#xff0c;适配国内学术规范&#xff1b;黑榜避开低质免费工具、无真实引用平台、过度依赖全文生成的工具&#xff0c;优先按需求匹配三维模型&#xff08;需求匹配度 - 数据可信度 - 成本承受力&#xff09;。 一、红榜&#xff1a;10 款高分…...

VMware Workstation 16保姆级教程:Windows Server 2019虚拟机安装全流程(含避坑指南)

VMware Workstation 16实战指南&#xff1a;Windows Server 2019虚拟机高效部署与深度优化 在数字化转型浪潮中&#xff0c;本地虚拟化环境搭建已成为开发者和运维人员的核心技能。作为业界标杆的VMware Workstation 16与Windows Server 2019的组合&#xff0c;能够完美模拟企业…...

SDMatte API接口开发教程:基于Python Flask构建标准化服务

SDMatte API接口开发教程&#xff1a;基于Python Flask构建标准化服务 1. 开篇&#xff1a;为什么需要API接口 如果你用过SDMatte这个强大的图像抠图工具&#xff0c;可能会遇到这样的场景&#xff1a;想把抠图功能集成到自己的应用里&#xff0c;或者需要批量处理大量图片。…...

如何为你的单片机项目选择最佳通信协议?I²C、SPI、UART全解析

单片机通信协议深度指南&#xff1a;从理论到实战的精准选择策略 当你的单片机需要与外部世界对话时&#xff0c;选择正确的通信协议就像为不同场合挑选合适的语言——商务会议需要正式严谨&#xff0c;朋友聊天则讲究轻松随意。在嵌入式系统设计中&#xff0c;UART、IC和SPI这…...

大模型Transformer架构学习

基础知识&#xff1a; 损失函数&#xff1a;梯度下降单次训练过程过拟合数据增强&#xff1a;增加训练数据&#xff0c;对原始数据加噪&#xff0c;翻转&#xff0c;旋转 正则化&#xff1a;防止该函数过分变化&#xff0c;让损失函数加上该参数&#xff0c;调整损失函数时会抑…...

Unity Figma Bridge终极指南:3步实现设计到游戏的完美转换 [特殊字符]

Unity Figma Bridge终极指南&#xff1a;3步实现设计到游戏的完美转换 &#x1f680; 【免费下载链接】UnityFigmaBridge Easily bring your Figma Documents, Components, Assets and Prototypes to Unity 项目地址: https://gitcode.com/gh_mirrors/un/UnityFigmaBridge …...

LabVIEW与TCP远程实验监测

后疫情时代线上教学的普及&#xff0c;让理工类实验课的远程开展成为行业研究重点。传统线上教学工具仅适用于理论知识传播&#xff0c;针对需要动手实操的实验课程&#xff0c;存在实践操作不便、课堂监管弱化、成果验收困难等问题。国内现有远程实验系统多以虚拟仿真为主&…...

s2-pro企业应用指南:如何用参考音频批量生成统一品牌语音素材

s2-pro企业应用指南&#xff1a;如何用参考音频批量生成统一品牌语音素材 1. 企业语音素材的痛点与解决方案 在当今数字化营销环境中&#xff0c;企业面临一个共同挑战&#xff1a;如何高效制作大量统一品牌调性的语音素材。传统方案通常面临&#xff1a; 成本高昂&#xff…...