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

在CSDN学Golang云原生(Kubernetes二开)

一,通过client-go管理集群资源

Kubernetes提供了client-go库,该库可以让开发人员使用Golang编写的应用程序与Kubernetes API进行交互。通过client-go,你可以创建、更新和删除Kubernetes资源,并查询集群状态等信息。

以下是一个示例代码片段,演示如何使用client-go列出当前运行的Pod:

package mainimport ("fmt""log"v1 "k8s.io/api/core/v1"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1""k8s.io/client-go/kubernetes""k8s.io/client-go/tools/clientcmd"
)func main() {// 使用kubeconfig文件创建一个Kubernetes客户端config, err := clientcmd.BuildConfigFromFlags("", "/path/to/kubeconfig")if err != nil {log.Fatal(err)}clientset, err := kubernetes.NewForConfig(config)if err != nil {log.Fatal(err)}// 列出所有命名空间中的Podpods, err := clientset.CoreV1().Pods("").List(metav1.ListOptions{})if err != nil {log.Fatal(err)}for _, pod := range pods.Items {fmt.Printf("Namespace: %v\nName: %v\n", pod.Namespace, pod.Name)}
}

这里我们使用了 k8s.io/client-go/kubernetes 包中定义的 Kubernetes 客户端接口来获取 Pod 信息并输出到控制台。

二,通过聚合apiserver扩展k8s功能

Kubernetes提供了一种扩展其功能的方法,即通过聚合API Server。聚合API Server是一个代理服务,它允许你将自定义API添加到Kubernetes API中,并提供与标准Kubernetes API相同的访问和安全机制。

使用聚合API Server可以为Kubernetes集群添加新的资源类型、增强现有资源的功能、实现自定义认证和授权等。例如,你可以通过聚合API Server添加一个新的CRD(Custom Resource Definition),该CRD表示运行在集群中的特定应用程序状态,并为该应用程序提供管理界面。

以下是一个示例流程,演示如何使用聚合API Server创建自定义资源:

  1. 创建 CRD 定义文件 mycustomresource.yaml
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:name: mycustomresources.samples.demo.com
spec:group: samples.demo.comversion: v1alpha1names:kind: MyCustomResourceplural: mycustomresourcessingular: mycustomresourcescope: Namespaced
  1. 应用 CRD 定义文件并验证是否已成功创建 CRD:
$ kubectl apply -f mycustomresource.yaml$ kubectl get crd | grep "mycustomresources"
  1. 创建自定义资源对象 mycustomresource.yaml
apiVersion: "samples.demo.com/v1alpha1"
kind: MyCustomResource
metadata:name: example-mycustomresource
spec:mycustomproperty: "Hello, World!"
  1. 应用自定义资源对象并验证是否已成功创建:
$ kubectl apply -f mycustomresource.yaml$ kubectl get mycustomresources.samples.demo.com

通过聚合API Server,你可以将这些自定义资源类型添加到Kubernetes API中,并使用kubectl或其他 Kubernetes 客户端工具与它们进行交互。

三,通过自定义k8s资源扩展k8s功能

Kubernetes提供了自定义资源(Custom Resource)这一机制,允许用户将自己的资源类型添加到 Kubernetes 中。通过使用自定义资源,用户可以扩展 Kubernetes API 并在 Kubernetes 集群中管理特定的应用程序、服务或工具。

自定义资源实际上是基于 Kubernetes API 的扩展。使用 Custom Resource Definition (CRD) 可以创建和注册新的自定义资源类型。CRD 是一种用于描述如何定义一个自定义资源的对象。在创建 CRD 后,就可以使用 kubectl 创建、删除、更新和列出新的自定义资源对象。

以下是一个示例流程,演示如何使用 CRD 和自定义资源创建一个名为 myresource 的简单应用程序:

  1. 创建 CRD 定义文件 myresource-crd.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:name: myresources.example.com
spec:group: example.comversions:- name: v1alpha1served: truestorage: truescope: Namespacednames:plural: myresourcessingular: myresourcekind: MyResource
  1. 应用 CRD 定义文件并验证是否已成功创建 CRD:
$ kubectl apply -f myresource-crd.yaml$ kubectl get crd | grep "myresources"
  1. 创建自定义资源对象 myresource-object.yaml
apiVersion: "example.com/v1alpha1"
kind: MyResource
metadata:name: example-myresource
spec:replicas: 3
  1. 应用自定义资源对象并验证是否已成功创建:
$ kubectl apply -f myresource-object.yaml$ kubectl get myresources.example.com

通过这个示例,我们可以看到如何使用 Kubernetes 的自定义资源扩展 Kubernetes API。用户可以根据实际需要创建不同的自定义资源类型来管理自己的应用程序、服务或工具,从而为 Kubernetes 集群带来更多的灵活性和可扩展性。

相关文章:

在CSDN学Golang云原生(Kubernetes二开)

一,通过client-go管理集群资源 Kubernetes提供了client-go库,该库可以让开发人员使用Golang编写的应用程序与Kubernetes API进行交互。通过client-go,你可以创建、更新和删除Kubernetes资源,并查询集群状态等信息。 以下是一个示…...

chatglm-6b量化推理指标记录

chatglm量化推理指标对比,单卡显存32G, 保持batchsize为64不变。通过不同的量化可以节省显存进而提升提升batch size,加快全量数据的推理速度。当然通过量化可以降低大模型的显存使用门槛。...

Android kotlin系列讲解之最佳的UI体验 - Material Design 实战

目录 一、什么是Material Design二、Toolbar三、滑动菜单1、DrawerLayout2、NavigationView 四、悬浮按钮和可交互提示1、FloatingActionButton2、Snackbar3、CoordinatorLayout 五、卡片式布局1、MaterialCardView2、AppBarLayout 六、可折叠式标题栏1、CollapsingToolbarLayo…...

链表基础知识

一、什么是链表 链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表的结构是多式多样的,当时通常用的也就是两种: (1)第一种是无头非循环单向…...

process.env.npm_config_argv的值3个参数remain、cooked、original什么含义

在使用Webpack进行打包时,判断process.env.npm_config_argv的值通常是为了根据命令行参数来决定打包的行为。process.env.npm_config_argv是一个环境变量,保存了当前运行的npm命令和其参数。 具体而言,process.env.npm_config_argv的值是一个…...

【飞书】飞书导出md文档 | 飞书markdown文档导出 | 解决飞书只能导出pdf word

一、飞书导出markdown github地址:https://github.com/Wsine/feishu2md 这是一个下载飞书文档为 Markdown 文件的工具,使用 Go 语言实现。 请看这里:招募有需求和有兴趣的开发者,共同探讨开发维护,有兴趣请联系。 二、…...

零信任网络架构与实现技术的研究与思考

目前,国外已有较多有关零信任网络的研究与实践,包括谷歌的 BeyondCorp、BeyondProd,软件定义边界(Software Defined Perimeter,SDP) 及盖特提出的“持续自适应风险与信任评估”等。国内也有不少安全厂商积极…...

Unity 性能优化二:内存问题

目录 策略导致的内存问题 GFX内存 纹理资源 压缩格式 Mipmap 网格资源 Read/Write 顶点数据 骨骼 静态合批 Shader资源 Reserved Memory RenderTexture 动画资源 音频资源 字体资源 粒子系统资源 Mono堆内存 策略导致的内存问题 1. Assetbundle 打包的时候…...

JavaScript与TypeScript的区别

JavaScript和TypeScript是两种不同的编程语言,在一些方面有一些区别。 1. 类型系统:JavaScript是一种动态类型语言,变量的类型是在运行时确定的,并且可以随时更改。而TypeScript引入了静态类型系统,可以在编译时检查代…...

【NetCore】05-使用Autofac增强容器能力

文章目录 1.什么情况下需要引入第三方容器组件2.如何集成Autoface 1.什么情况下需要引入第三方容器组件 基于名称的注入属性注入子容器基于动态代理的AOP 核心扩展点:IServiceProviderFactory 第三方注入容器均使用这个类作为扩展点,将其注入到框架中…...

sparksql参数

Spark参数场景配置 参数类型 参数 参数说明 平台默认值 场景与建议 资源申请 spark.executor.memory Executor Java进程的堆内存大小 即Executor Java进程的Xmx值 2g 默认设置,或者同时等比例增大,最高不超过默认值的3倍,超过的单独拿出来看下 (注意作业是否数据倾斜&…...

STM32读写内部Flash

参考:https://blog.csdn.net/Caramel_biscuit/article/details/131925715 参考:https://blog.csdn.net/qq_36075612/article/details/124087574?spm1001.2014.3001.5502 目录 内存映射内部Flash的构成对内部Flash的写入过程查看工程内存的分布ROM加载空…...

golang文件锁,目录锁,syscall包的使用

先说结论 1. golang提供了syscall包来实现文件/目录的加锁,解锁 2. syscall包属于文件锁,是比较底层的技术,并不能在所有操作系统上完全实现,linux上实现了,windows下面就没有 3. 加锁时调用syscall.Flock(fd&#…...

数据库数据恢复-Syabse数据库存储页底层数据杂乱的数据恢复案例

数据库恢复环境: Sybase版本:SQL Anywhere 8.0。 数据库故障: 数据库所在的设备意外断电后,数据库无法启动。 错误提示: 使用Sybase Central连接后报错: 数据库故障分析: 经过北亚企安数据恢复…...

移远通信推出新一代高算力智能模组SG885G-WF,为工业和消费级IoT应用带来全新性能标杆

2023年7月24日,全球领先的物联网整体解决方案供应商移远通信宣布,正式推出其新一代旗舰级安卓智能模组SG885G-WF。该智能模组具有高达48 TOPS 的AI综合算力、强大性能及丰富的多媒体功能,非常适用于需要高处理能力和多媒体功能的工业和消费者…...

微信小程序开发,小程序类目符合,线上版本无权限申请wx.getLocation接口

我开发 的小程序类目符合wx.getLocation接口的申请标准 但是却还是显示无权限申请 后来研究好久才发现,小程序需要在发布线上版本时提交用户隐私保护指引 如未设置也可以在 设置-服务内容声明-用户隐私保护指引-声明处理用户信息项并补充填写后提交用户隐私协议审核…...

vue2企业级项目(五)

vue2企业级项目(五) 页面适配、主题切换 1、适配 项目下载插件 npm install --save-dev style-resources-loader vue-cli-plugin-style-resources-loader修改vue.config.js部分内容 const path require("path");module.exports {pluginOpt…...

【HTML5】拖放详解及实现案例

文章目录 效果预览代码实现 效果预览 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>一颗不甘坠落的流星</title><style>#div1,#div2 {float: left;width: 100px;height: 27px;margin: 10px;paddin…...

Codeforces Round 888 (Div. 3)(视频讲解全部题目)

[TOC](Codeforces Round 888 (Div. 3)&#xff08;视频讲解全部题目&#xff09;) Codeforces Round 888 (Div. 3)&#xff08;A–G&#xff09;全部题目详解 A Escalator Conversations #include<bits/stdc.h> #define endl \n #define INF 0x3f3f3f3f using namesp…...

MySQL之深入InnoDB存储引擎——物理文件

文章目录 一、参数文件二、日志文件三、表结构定义文件四、InnoDB 存储引擎文件1、表空间文件2、重做日志文件 一、参数文件 当 MySQL 实例启动时&#xff0c;数据库会先去读一个配置参数文件&#xff0c;用来寻找数据库的各种文件所在位置以及指定某些初始化参数。在默认情况…...

从图像处理到推荐系统:特征值不等式在工程中的5个妙用

从图像处理到推荐系统&#xff1a;特征值不等式在工程中的5个妙用 在工程实践中&#xff0c;数学工具往往能带来意想不到的优化效果。特征值不等式作为线性代数中的重要结论&#xff0c;其应用范围远超理论推导&#xff0c;能解决图像处理、推荐系统等多个领域的实际问题。本文…...

基于凌科芯安加密芯片智能门锁解决方案

随着物联网产业的快速发展&#xff0c;智能网络设备对信息安全的需求与依赖日益增强。在万物互联的背景下&#xff0c;电子锁作为典型的安全防范产品&#xff0c;在重点场所安防与居民居家安全保障中发挥着关键作用。其中&#xff0c;智能门锁凭借密码、指纹、人脸识别、手机远…...

AI写前端也看“审美”?我用GLM4.6、Kimi和Minimax-m2做了个设计实验,结果有点意外

AI写前端也看“审美”&#xff1f;GLM4.6、Kimi与Minimax-m2的设计实验报告 当我们在深夜调试CSS时&#xff0c;是否想过AI模型其实也在"暗中观察"我们的设计品味&#xff1f;这次实验让我发现了一个有趣现象&#xff1a;不同AI生成的前端代码&#xff0c;在视觉呈现…...

GLM-4.1V-9B-Base入门必看:中文提问技巧——如何写出高稳定度问题

GLM-4.1V-9B-Base入门必看&#xff1a;中文提问技巧——如何写出高稳定度问题 1. 认识GLM-4.1V-9B-Base GLM-4.1V-9B-Base是智谱开源的视觉多模态理解模型&#xff0c;专门用于处理图像内容识别、场景描述、目标问答等中文视觉理解任务。与普通聊天模型不同&#xff0c;它更擅…...

深入解析内存分区:程序运行的秘密

一、完整内存分区&#xff08;进程地址空间&#xff09;一个程序跑起来&#xff0c;操作系统会给它分配虚拟内存空间&#xff0c;并严格分成这些区域&#xff1a;代码区&#xff08;Text Segment&#xff09;数据区&#xff08;Data Segment&#xff09;—— 已初始化全局 / 静…...

Qwen3.5-2B部署案例:基于Docker+Supervisor的生产级多用户服务搭建

Qwen3.5-2B部署案例&#xff1a;基于DockerSupervisor的生产级多用户服务搭建 1. 项目背景与模型介绍 Qwen3.5-2B是阿里云推出的轻量化多模态基础模型&#xff0c;属于Qwen3.5系列的小参数版本&#xff08;20亿参数&#xff09;。这个模型专为低功耗、低门槛部署场景设计&…...

2026免费降AI率工具Top10:一键去机味 首选这款稳过检测

现在写论文用AI辅助早已是常态&#xff0c;但随之而来的AIGC检测卡得越来越严&#xff0c;熬了好几天改出来的稿子要是被判定AI率超标&#xff0c;打回重写都是轻的&#xff0c;耽误答辩进度才最让人头疼。 所以降AI、降低AI率已经成了毕业生的必备技能&#xff0c;只是市面上…...

OPCUA结构体数据处理全解析:C#如何高效读写ExtensionObject中的复杂数据

OPCUA结构体数据处理全解析&#xff1a;C#如何高效读写ExtensionObject中的复杂数据 在工业自动化与物联网系统中&#xff0c;OPCUA协议已成为设备间数据交换的事实标准。当面对复杂的自定义结构体数据时&#xff0c;ExtensionObject的处理往往成为开发者的痛点。本文将深入剖析…...

等保.三级要求下Redis 安全测评应该怎么做?

1. 引入 在现代 AI 工程中&#xff0c;Hugging Face 的 tokenizers 库已成为分词器的事实标准。不过 Hugging Face 的 tokenizers 是用 Rust 来实现的&#xff0c;官方只提供了 python 和 node 的绑定实现。要实现与 Hugging Face tokenizers 相同的行为&#xff0c;最好的办法…...

ESP32 ILI9341高性能驱动:64字节DMA突发传输优化

1. 项目概述ILI9341_ESP32 是一款专为 ESP32 平台深度优化的 ILI9341 TFT LCD 显示驱动库。其核心设计目标并非简单实现显示功能&#xff0c;而是在硬件能力边界内榨取极致帧率与响应性能。该库直面 ESP32 的 SPI 总线特性——支持 64 字节一次性突发传输&#xff08;burst tra…...