当前位置: 首页 > 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技巧和布…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...