使用Fabric8 kubernetes-client java client 操作kuberntes 自定义资源CR

2023-11-12

kubernetes-client (fabric8) to interact with kubernetes custom resources

kubernetes中的一切东西都叫做 resource,k8s 默认的提供了很多 resource,比如 pod/deployment… 而 custom resource 允许用户基于已有resource,创建新resource来扩展k8s;

在这里并不打算深入介绍CR/CRD;而着重介绍下如何通过 fabric8·kubernetes-client 来操作CR。

相信有很多场景需要 使用 java/golang sdk 去操作 k8s CR 资源;写这篇blog的起因也是因为需要去操作 seldon 的CR 来部署 machine leaning model

dependency

最好使用 > 4.6.0 版本

	<dependency>
		<groupId>io.fabric8</groupId>
		<artifactId>kubernetes-client</artifactId>
		<version>4.8.0</version>
	</dependency>
	<dependency>
		<groupId>io.fabric8</groupId>
		<artifactId>kubernetes-model</artifactId>
		<version>4.8.0</version>
	</dependency>

CRD

这里并不打算使用CRD新创建一个CR,直接来看Seldon的CRD

Rex@xxx:~/Rex$ kubectl get crd seldondeployments.machinelearning.seldon.io -o yaml
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    cert-manager.io/inject-ca-from: seldon-system/seldon-serving-cert
  creationTimestamp: "2020-03-27T02:44:08Z"
  generation: 1
  labels:
    app: seldon
    app.kubernetes.io/instance: seldon-core
    app.kubernetes.io/name: seldon-core-operator
    app.kubernetes.io/version: 1.0.2
  name: seldondeployments.machinelearning.seldon.io
  resourceVersion: "247082"
  selfLink:
  uid:
spec:
  conversion:
    strategy: None
  group: machinelearning.seldon.io
  names:
    kind: SeldonDeployment
    listKind: SeldonDeploymentList
    plural: seldondeployments
    shortNames:
    - sdep
    singular: seldondeployment
  preserveUnknownFields: true
  scope: Namespaced
  subresources:
    status: {}
  validation:
    ... (省略万字validation...)
  versions:
  - name: v1
    served: true
    storage: true
  - name: v1alpha2
    served: true
    storage: false
  - name: v1alpha3
    served: true
    storage: false
status:
  acceptedNames:
    kind: SeldonDeployment
    listKind: SeldonDeploymentList
    plural: seldondeployments
    shortNames:
    - sdep
    singular: seldondeployment
  conditions:
  - lastTransitionTime: "2020-03-27T02:44:08Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: null
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1

查看此CR的实例

Rex@xxx:~/Rex$ kubectl get sdep -n seldon-system
NAME                  AGE
model-wines-quality   23h

fabric8·kubernetes-client

使用fabric8的kubernetes-client去操作CR,首先需要创建 CustomResourceDefinitionContext

在定义CRD context的时候,需要从CRD中获取相应信息

@Bean
public CustomResourceDefinitionContext seldonCrdCxt(){
	return new CustomResourceDefinitionContext
			.Builder()
			.withGroup("machinelearning.seldon.io")
			.withScope("Namespaced")
			.withVersion("v1alpha2")
			.withPlural("seldondeployments")
			.build();

拿到了CustomResourceDefinitionContext之后,只需要简单的调用 KubernetesClient.customResource(CustomResourceDefinitionContext customResourceDefinition)

/**
* Typeless API for interacting with CustomResources. You can do basic operations with CustomResources
* without having any model. You just need to pass an object providing basic information of
* CustomResource. CustomResource objects are parsed as HashMaps.
*
* @param customResourceDefinition CustomResourceDefinitionContext - information about CustomResource like versioning, namespaced or not and group etc
* @return a RawCustomResourceOperations object which offers several functions for creating, deleting, updating, watching CustomResources.
*/
RawCustomResourceOperationsImpl customResource(CustomResourceDefinitionContext customResourceDefinition);

for example:

Map<String, Object> deployments = k8sClient.customResource(seldonCrd).list(namespace);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Fabric8 kubernetes-client java client 操作kuberntes 自定义资源CR 的相关文章

随机推荐

  • 对12306新验证码的简单破解

    12306的验证码又换了 变成了类似找你妹的找图游戏了 由于在另一博客发过了 这里贴个地址过来 http www cnblogs com gsls200808 p 4341599 html 后记 在网站更新验证码的第二天 有人在知乎上问了
  • 127.0.0.1可以访问,localhost不能访问的问题

    二者概念 localhost 本地服务器 127 0 0 1 本机地址 本机服务器 二者区别 localhot 是不经网卡传输的 它不受网络防火墙和网卡相关的的限制 127 0 0 1 是通过网卡传输的 它依赖网卡 并受到网络防火墙和网卡相
  • 深度学习常用库汇总简介

    1 FlatBuffer
  • 【C语言】图的邻接表——超详细解析

    图的邻接表 我们重点分析一下无向图 邻接表 我们如何将图中所有顶点和边建立起联系 1 我们发现 V0这个顶点与V1和V3相连 通过右边的邻接表可以看到会出现一个以 V0为头结点的单链表 后面连接的元素就是V1和V3 在顶点数组中的下标 2
  • 【LeetCode】思维向题笔记总结(持续更新)

    不全 记录的都是个人认为比较有意思的题 具体有哪些题可以看看目录 目录 链表相关 双指针 滑动窗口 209 长度最小的子数组 滑动窗口 904 水果成篮 滑动窗口 哈希 模拟相关 59 螺旋矩阵 II 哈希表 哈希表概述 1 两数之和 哈希
  • 全国首款支持多环境开发的 IDE —— CEC-IDE

    有热心开发者在 VS Code 的 GitHub repo 创建了 issue CEC IDE 是一款安全 专业且功能强大的集成开发工具 主页 https www jlht168 com 插件市场 https cecide digitalg
  • 实验九—基本统计分析(二)

    实验9 基本统计分析 二 实验目的 通过综合案例 使学生掌握基本统计分析的各种指标的 掌握统计分析结果的可视化方法 实验内容 1 背景介绍 Consolidated食品公司在新墨西哥州 亚利桑那州和加利福尼亚州经营连锁超市 它举办了一个促销
  • 推荐VSC中一款好用的插件------Code Runner插件

    推荐VSC中一款好用的插件 Code Runner插件 Code Runner插件非常好用 可以运行的语言有 Run C C Java JS PHP Python Perl Ruby Go Lua Groovy PowerShell CMD
  • 软件系统工具-架构师真题(六)

    不属于可修改性考虑的内容 2016 可维护性 可扩展性 结构重构 可变性 答案 D 解析 可修改性指快速较高的性能价格进行系统优化 包括可维护性 可扩展性 结构重组和可移植性四个方面 软件系统工具中 软件评价工具属于 逆向工程工具 开发信息
  • Qt 帮助框架简介

    概述 Qt帮助系统包括生成和查看Qt帮助文件的工具 此外 它还提供了以编程方式访问帮助内容的类 以便能够将在线帮助集成到Qt应用程序中 实际的帮助数据 也就是目录 索引关键字或HTML文档 都包含在Qt压缩帮助文件中 所以 一个这样的帮助文
  • ssm美食论坛系统毕业设计源码191023

    目 录 摘要 1 绪论 1 1 研究背景及意义 1 2开发现状 1 3论文结构与章节安排 2 美食论坛系统系统分析 2 1 可行性分析 2 2 系统流程分析 2 2 1 数据流程 3 3 2 业务流程 2 3 系统功能分析 2 3 1数据增
  • vue 使用fs_node.js 中的 fs 模块的使用

    let fs require fs 检测是文件还是目录 名字 回调函数 fs stat package json err data gt if err console log err return console log 是文件 data
  • win10下载编译webrtc源码

    win10系统下载编译webrtc源码 一 下载安装VS2017 目前最新版本的webrtc已经可以用Vs2019 但是因为我们要使用的webrtc版本是以前的版本 旧版webrtc源码中vs toolchain py中指定了vs2017
  • AI日报|哈佛“AI教授”即将上线;首个生成式AI技能专业证书来了;电话推销员很烦?AI帮你“制裁”他

    今日值得关注的人工智能新动态 将GPT 4用在课程设计中 哈佛大学 AI教授 即将上线 微软推出首个生成式AI技能专业证书 纽约州议会 伤害或羞辱他人的deepfake是非法的 阿诺德 施瓦辛格 终结者 中的AI已成现实 AI诊断 老年痴呆
  • 函数粘合云服务提供端到端解决方案

    作者 西流 阿里云技术专家 导读 阿里云Serverless 产品函数计算可以作为粘合剂 串联其他云服务提供端到端解决方案 从而简化编程模型 快速实现最上层的业务目标 传统单体应用的拆解 首先我们来看下单体应用里面常见的两个编程模型 如上图
  • 【华为OD统一考试B卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • Hive SQL 2023必考常用窗口函数及面试题

    一 窗口函数概述 窗口函数也称为OLAP函数 OLAP 是OnLine Analytical Processing 的简称 意思是对数据库数据进行实时分析处理 例如 市场分析 创建财务报表 创建计划等日常性商务工作 窗口函数就是为了实现OL
  • 使用TensorFlow、Keras和深度学习实现像素无序超分辨率

    使用TensorFlow Keras和深度学习实现像素无序超分辨率 pixel shuffle Super Resolution 像素无序 洗牌超分辨率 Deep Learning Super Sampling DLSS 深度学习超级采样
  • flask_sqlalchemy中的db.session.query()和model.query()的区别

    先申明一下 我喜欢从问题入手 问题描述 使用db session commit 提交数据后 使用model query 查不到新增加的数据 问题原因分析 db session commit 是提交了数据到数据库 但是没有刷新模型映射中的数据
  • 使用Fabric8 kubernetes-client java client 操作kuberntes 自定义资源CR

    kubernetes client fabric8 to interact with kubernetes custom resources kubernetes中的一切东西都叫做 resource k8s 默认的提供了很多 resourc