使用client-go在命令空间test里面对pod进行操作
目录
一、获取使用restApi调用的token信息
二、client-go操作pod示例
1、获取到客户端
2、创建pod
3、获取test命令空间的所有pod
4、获取某个具体pod的详细信息
5、更新pod
6、删除pod
三、总结
官方参考地址:https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/
一、获取使用restApi调用的token信息
[root@k8s-master01 projects]# kubectl create token postman-sa
eyJhbGciOiJSUzI1NiIsImtpZCI6IkwzUWF1NHdyek9kZUl1NEJMWGFLV3NMenVkUmpxWTZfbzZlZktUTDZWeFkifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzMyNjE4OTY0LCJpYXQiOjE3MzI2MTUzNjQsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkZWZhdWx0Iiwic2VydmljZWFjY291bnQiOnsibmFtZSI6InBvc3RtYW4tc2EiLCJ1aWQiOiJjZWNjOTVlOC1hMmM4LTRkZjYtYmY4Ny1lMDg1ZjU0YjI5ODcifX0sIm5iZiI6MTczMjYxNTM2NCwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OmRlZmF1bHQ6cG9zdG1hbi1zYSJ9.qAs7SZrm90WTGHYCVT_XAZ2q_GS12jOmlM03dsr-pQINcHUCP0QoNS7rELMJZhZF2p5j7kImkHEQyEG0s0xQxrT8Gqy2-USq5YYW3HLW2VOCQYsNaR1ih3EucTgOuSVvVkqelBR3AI6PSTkV1H2q5rik-7BYr7xxyu9A05gl7Cgbg0ZtR9WfKglChpQ1cgFC7OBo0CO1F-mkVZlaXigdnIEQNhhvIO0o-mxrPNFlQ5IMI1LAtXOrKnxxja5XfmiiOh2YohTaMJPfW5CRNwDIvzbP6C8dRoK-sC_jfYS0uMn2epAdzPyXu8s_LNLUxxxAg-BZD6U3OqX_2mK4lKS0KQ
通过使用kubectl create token serviceaccountName来获取到服务账号对应的token信息,进而直接通过client-go来操作k8s集群。
二、client-go操作pod示例
1、获取到客户端
func getClient() *kubernetes.Clientset {// 假设你已经有了tokentoken := "eyJhbGciOiJSUzI1NiIsImtpZCI6IkwzUWF1NHdyek9kZUl1NEJMWGFLV3NMenVkUmpxWTZfbzZlZktUTDZWeFkifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzMyNjE1NzMxLCJpYXQiOjE3MzI2MTIxMzEsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkZWZhdWx0Iiwic2VydmljZWFjY291bnQiOnsibmFtZSI6InBvc3RtYW4tc2EiLCJ1aWQiOiJjZWNjOTVlOC1hMmM4LTRkZjYtYmY4Ny1lMDg1ZjU0YjI5ODcifX0sIm5iZiI6MTczMjYxMjEzMSwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OmRlZmF1bHQ6cG9zdG1hbi1zYSJ9.o_4CGeouCp8OUv7wq_TlpdraoM_zo4TXxBKy-hBWK79KdnU5GttujAe1XX49Ib2Pj1ycGChZUKHYVtsjojKD5evsWjgzaULIJLJ8809OwGZGWbvVeTUaLf9Xoo9jOTuIRR98e3MwdbgeUypstvaQbdLmlPnlG7fs8Od9jfwQBRGttlsBTDqNG0o9QleJyk_hebanh1Z_eMQvUFdYSUc9RrQlSDSNvtAF_h6vhizdQeb_ePj1MPnZOPLUs9a4rbycJ5NtuWrLsDxpxlhrly_XDVUsvU9KqazaNG6Z8lIGgY09vQnDTht_-n0X9UJdQuf_u7BIS111wMHnqC50zDnoMA"// 创建配置config := &rest.Config{Host: "https://192.168.188.101:6443",BearerToken: token,// 可能还需要设置其他字段,如TLSClientConfig等TLSClientConfig: rest.TLSClientConfig{Insecure: true, // 不要在生产环境中使用!},}// 创建客户端clientset, err := kubernetes.NewForConfig(config)if err != nil {// 处理错误log.Fatalf("Error to new client!")}return clientset
}
参数说明:
token为上面步骤获取到数据
host地址为你k8s集群中apiServer的运行地址
2、创建pod
func createPod(clientset *kubernetes.Clientset) {// 定义Podpod := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "example-pod",//Namespace: "test",},Spec: v1.PodSpec{Containers: []v1.Container{{Name: "example-container",Image: "nginx:1.15-alpine",},},},}// 创建Podfmt.Println("Creating pod...")podsClient := clientset.CoreV1().Pods("test")result, err := podsClient.Create(context.TODO(), pod, metav1.CreateOptions{})if err != nil {panic(err.Error())}fmt.Printf("Namespace: %s, Name: %s, Status: %s\n", result.Namespace, result.Name, result.Status.Phase)
}
3、获取test命令空间的所有pod
func listPod(clientset *kubernetes.Clientset) {// 创建Podfmt.Println("list pod...")podsClient := clientset.CoreV1().Pods("test")result, err := podsClient.List(context.TODO(), metav1.ListOptions{})if err != nil {panic(err.Error())}for _, pod := range result.Items {fmt.Printf("Namespace: %s, Name: %s, Status: %s\n", pod.Namespace, pod.Name, pod.Status.Phase)}
}
4、获取某个具体pod的详细信息
func getPodDetail(clientset *kubernetes.Clientset) *v1.Pod {// 创建Podfmt.Println("list pod...")podsClient := clientset.CoreV1().Pods("test")pod, err := podsClient.Get(context.TODO(), "example-pod", metav1.GetOptions{})if err != nil {panic(err.Error())}fmt.Printf("Namespace: %s, Name: %s, Status: %s\n", pod.Namespace, pod.Name, pod.Status.Phase)return pod
}
5、更新pod
func updatePod(clientset *kubernetes.Clientset) {pod := getPodDetail(clientset)// Update Pod (e.g., add an annotation)pod.Annotations = map[string]string{"updated-by": "client-go",}// 创建Podfmt.Println("list pod...")podsClient := clientset.CoreV1().Pods("test")updatedPod, err := podsClient.Update(context.TODO(), pod, metav1.UpdateOptions{})if err != nil {log.Fatalf("Error updating Pod: %v", err)}fmt.Printf("Updated Pod %q with annotation.\n", updatedPod.Name)fmt.Printf("Namespace: %s, Name: %s, Status: %s\n", pod.Namespace, pod.Name, pod.Status.Phase)
}
6、删除pod
func deletePod(clientset *kubernetes.Clientset) {// Delete PoddeletePolicy := metav1.DeletePropagationForegroundpodsClient := clientset.CoreV1().Pods("test")err := podsClient.Delete(context.TODO(), "example-pod", metav1.DeleteOptions{PropagationPolicy: &deletePolicy,})if err != nil {log.Fatalf("Error deleting Pod: %v", err)}fmt.Printf("Pod %q deleted.\n", "example-pod")}
三、总结
本文详细介绍了如何通过client-go来对pod进行操作,并且具体演示了对pod的创建、获取列表、获取pod详情、更新pod、已经删除pod的操作。
相关文章:
使用client-go在命令空间test里面对pod进行操作
目录 一、获取使用restApi调用的token信息 二、client-go操作pod示例 1、获取到客户端 2、创建pod 3、获取test命令空间的所有pod 4、获取某个具体pod的详细信息 5、更新pod 6、删除pod 三、总结 官方参考地址:https://kubernetes.io/docs/reference/kuber…...
Linux中网络文件系统nfs使用
一、nfs服务 NFS(Network File System) 是一种用于在网络中共享文件的协议,允许不同操作系统(如 Linux、Unix、MacOS 等)之间进行文件共享。 NFS 的工作原理基于客户端-服务器模型,服务器提供共享文件系统…...

气膜建筑:打造全天候安全作业空间,提升工程建设效率—轻空间
在现代建筑工程中,施工环境的管理和作业效率是决定项目进度和质量的关键因素。然而,施工过程中常常会受到天气变化的影响,诸如大风、雨雪、沙尘等恶劣天气常常延误工期,增加施工难度。为了解决这一问题,气膜建筑以其独…...

【HarmonyOS学习日志(10)】一次开发,多端部署之功能级一多开发,工程级一多开发
功能级一多开发 SysCap机制介绍 HarmonyOS使用SysCap机制(即SystemCapability),可以帮助开发者仅关注设备的系统能力,而不用考虑成百上千种具体的设备类型。 在过去,开发不同设备上的应用就用不同设备的SDK进行开发&…...

dmdba用户资源限制ulimit -a 部分配置未生效
dmdba用户资源限制ulimit -a 部分配置未生效 1 环境介绍2 数据库实例日志报错2.1 mpp01 实例日志报错2.2 mpp02 实例日志报错 3 mpp02 服务器资源限制情况4 关闭SELinux 问题解决4.1 临时关闭 SELinux4.2 永久关闭 SELinux 5 达梦数据库学习使用列表 1 环境介绍 Cpu x86 Os Ce…...

【Code First】.NET开源 ORM 框架 SqlSugar 系列
.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列 …...

如何在谷歌浏览器中切换DNS服务器
在浏览网页时,DNS(域名系统)服务器的作用是将您输入的网址转换为计算机可以理解的IP地址。有时,您可能需要更改默认的DNS服务器以提升网络速度或解决访问问题。本文将详细介绍如何在谷歌浏览器中切换DNS服务器,并在此过…...

Spring Cloud Stream实现数据流处理
1.什么是Spring Cloud Stream? Spring Cloud Stream的核心是Stream,准确来讲Spring Cloud Stream提供了一整套数据流走向(流向)的API, 它的最终目的是使我们不关心数据的流入和写出,而只关心对数据的业务处…...
列表上移下移功能实现
后台管理某列表需实现上移下移功能,并与前端展示列表排序相关。 现将开发完成过程笔记记录下来。 目录 列表增加属性 JQuery脚本 服务端 控制器 服务层 总结 列表增加属性 在循环渲染时,在table表格的tr上增加id和排序的属性值,以便传…...
升级智享 AI 直播三代:领航原生直播驶向自动化运营新航道
在瞬息万变的数字商业世界,直播行业恰似一艘破浪前行的巨轮,原生直播作为初始 “航船”,在历经风雨后,终于迎来智享 AI 直播三代这股强劲 “东风”,校准航向,开启自动化运营的全新航道,驶向一片…...

Llmcad: Fast and scalable on-device large language model inference
题目:Llmcad: Fast and scalable on-device large language model inference 发表于2023.09 链接:https://arxiv.org/pdf/2309.04255 声称是第一篇speculative decoding边缘设备的论文(不一定是绝对的第一篇),不开源…...

Hbase2.2.7集群部署
环境说明 准备三台服务器,分别为:bigdata141(作为Hbase主节点)、bigdata142、bigdata143确保hadoop和zookeeper集群都先启动好我这边的hadoop版本为3.2.0,zookeeper版本为3.5.8 下载安装包 下载链接:In…...

【青牛科技】D1671 75Ω 带4级低通滤波的单通道视频放大电 路芯片介绍
概 述 : D1671是 一 块 带 4级 低 通 滤 波 的 单 通 道 视 频 放 大 电 路 , 可 在3V或5V的 低 电 压 下 工 作 。 该 电 路 用 在 有 TV影 象 输 出 功 能 的 产 品 上 面,比如 机 顶 盒 ,监 控 摄 象 头 ,DVD&#…...

[NeurIPS 2022] Leveraging Inter-Layer Dependency for Post-Training Quantization
Contents IntroductionMethodExperimentsReferences Introduction 作者提出一种端到端的 PTQ 训练策略 Network-Wise Quantization (NWQ),并通过 Annealing Softmax (ASoftmax) 和 Annealing Mixup (AMixup) 改进了 AdaRound,降低了训练收敛难度 Metho…...

ubuntu+ROS推视频流至网络
目录 概述 工具 ros_rtsp 接受流 web_video_server 源码安装 二进制安装 ros接收rtsp视频流 总结 概述 ros_rtsp功能包可以将ros视频流以rtsp形式推送 web_video_server功能包可以将ros视频话题推HTTP流 rocon_rtsp_camera_relay可以接受同一网段下的rtsp视频流输出为…...

PHP 去掉特殊不可见字符 “\u200e“
描述 最近在排查网站业务时,发现有数据匹配失败的情况 肉眼上完全看不出问题所在 当把字符串 【M24308/23-14F】复制出来发现 末尾有个不可见的字符 使用删除键或左右移动时才会发现 最后测试通过 var_dump 打印 发现这个"空字符"占了三个长度 …...

深度学习—BP算法梯度下降及优化方法Day37
梯度下降 1.公式 w i j n e w w i j o l d − α ∂ E ∂ w i j w_{ij}^{new} w_{ij}^{old} - \alpha \frac{\partial E}{\partial w_{ij}} wijnewwijold−α∂wij∂E α为学习率 当α过小时,训练时间过久增加算力成本,α过大则容易造成越过最…...
elasticsearch8.16 docker-compose 多机器集群安装
在网上找了一圈, 发现要么就是单机版的部署了多个节点, 很少有多台机器部署集群的, 有些就拿官网的例子写一写, 没有实战经验, 下面分享一个教程, 实实在在的多台机器, 每台机器部署2个节点的例子 先上.env , docker-compose.yml文件, 这个文件是核心, 里面掺杂太多坑, 已经帮你…...

Flink--API 之 Source 使用解析
目录 一、Flink Data Sources 分类概览 (一)预定义 Source (二)自定义 Source 二、代码实战演示 (一)预定义 Source 示例 基于本地集合 基于本地文件 基于网络套接字(socketTextStream&…...
uniapp在小程序连接webScoket实现余额支付
webScoket文档:uni.connectSocket(OBJECT) | uni-app官网 /plugins/event.js const Dep function() {this.Evens Object.create(null); } class Event {constructor({dep new Dep()} {}) {if (dep.constructor Object && Object.keys(dep).length 0…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...