查看k8s版本(查看k8s版本信息的命令是)

查看k8s版本(查看k8s版本信息的命令是)client go 是 Kubernetes 官方提供的 用于操作 kubernetes 资源的 Go 语言客户端库 通过它 开发者可以非常方便地在 Go 项目中与 Kubernetes 集群进行交互 实现对 Kubernetes 资源以及自定义 CRD 的增删改查和事件监听等操作 同时 可以通过 client go 实现 kubernetes 的二次开发 自定义资源开发 源码 github 下载地址 https github com kubernetes client go 如果是其他语言的客户端工具



如果是其他语言的客户端工具,可以通过https://github.com/kubernetes-client 来查看

我们看下client-go几个比较重要的目录

建议:client-go我们直接用最新版本

restclient: 一般我们不会使用restclient,因为它需要把整个资源的yaml文件或json数据都传过去,显得比较臃肿,一般我们不用这个
discoverclient: 比如我们创建deployment时的apiversion: apps/v1 apps就是资源组Group v1就是资源版本Version 资源信息 就是kind 。我们一般也不会用这个客户端工具
ClientSet: 只能针对K8S内置的资源进行操作,不能操作自定义的资源
DyanmicClient: 我们经常使用这个客户端,但是对于内置资源,我们还是习惯使用ClientSet,因为它更好用,自定义资源我们使用DyanmicClient。


我们可以通过命令 kubectl api-resources 查看每种资源的资源组

client-go是一个Go模块,可以通过Go Module的方式进行安装。在你的Go项目中,执行以下命令:

这将安装最新版本的client-go。此外,你还需要安装一些相关的依赖库,例如apimachinery,用于处理Kubernetes API对象。

安装完还需要运行go mod tidy 加载依赖包

我们根据我们之前写好的脚手架,改个名字,在此基础上开发我们的项目

并不是说在此改了就可以了,因为很多包用的还是原来的名字,

使用Ctrl + Shift + R 打开Find and Repalce对话框

将这个文件复制到我们的项目中

在Kubernetes 集群内部运行时,可以使用in-cluster配置。这种方式不需要手动指定kubeconfig文件路径,client-go会自动使用集群中的服务账户进行身份验证。

这是github上面看用法举例

我们看下List方法的参数,包含两个,一个context,一个是ListOptions。

这个ListOptions就可以在里面做些筛选条件,比如传json串,标签等

我们看下List的返回值

如果要取其中某个pod,可以通过下标来获取

如果忘记pod的层级关系,可以使用k8s命令的-ojson 查看一下

完整代码:

deployment 的apiversion是 apps/v1 对应的client-go里面的方法就是 clientset.AppsV1()
crontabs 的apiversion是batch/v1 对应的client-go里面的方法就是clientset.BatchV1()
ingresses的apiversion是networking.k8s.io/v1 对应client-go里面的方法就是clientset.NetworkingV1()

以此类推,由此我们就知道了个汇总资源对应的操作方法
这种V1的apiversion的资源,对应的就是clientset.CoreV1()




这里可看看到个各种方法,不过我们用的时候要把首字母大写

比如查询deployment

完整代码:

完整代码

其他资源查询方式类似,感兴趣的朋友可以尝试下

注意:如果修改的字段在资源中不存在,比如labels 。修改时会报空指针错误,此时就要初始化下才能修改

完整代码:

删除pod,比如我们将下列的pod删除

可见pod已被删除

创建namespace

注意,这个corev1的导包,我们要根据Create()这个方法里面的导包,导过来,不要导错了,因为很多v1的包

创建deployment
注意,这个deployment的v1,

导包的时候,不要导错

传参时,要把必须得参数都传进去

可以通过这个命令来查看哪些是必须传的参数

它会导出一份yaml文件

查看创建的deploy

查看yaml文件,两个容器都创建成功

上面使用手动填值的方式创建,还是比较麻烦的,稍微有不注意的地方还容易犯错,因此,在前后端分离的项目中,在web页面,一般我们不悔通过手动填值进行创建资源。
一般我们会根据json串来创建资源
首先我们通过先通过kubectl命令导出json串

–dry-run 选项只能为 “none”、“server”、"client"三者中的一个,默认是none;当不加该参数,或者为none的时候,该操作后资源会生效 ,请求会被发送到kube-apiserver并做实际更改;
当该参数为client的时候,只打印该对象并不会发送请求且并不会实际创建该对象;
当该参数为server的时候,会发送请求到服务端,但是并不会实际创建该对象。
比如我们拿到一个创建deploy的json串


我们将json串拿出来

使用json创建deploy完整代码:

在K8S集群查看下,创建成功

client-go是Kubernetes官方提供的Go客户端库,它封装了与Kubernetes API服务器的交互,提供了便捷的方式进行各种资源的管理。通过创建客户端并使用相应的API客户端进行操作,你可以轻松地进行Pod、Deployment、Service等资源的增删改查。

本文详细介绍了client-go的安装、配置和使用方法,并通过示例代码展示了如何进行常见的Kubernetes操作。希望这些内容能帮助大家更好地理解和使用client-go,从而提高你的Kubernetes开发效率。

到此这篇关于通过client-go来操作K8S集群的文章就介绍到这了,更多相关client-go操作K8S集群内容请搜索Java架构师必看以前的文章或继续浏览下面的相关文章希望大家以后多多支持Java架构师必看!

今天的文章 查看k8s版本(查看k8s版本信息的命令是)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-10-14 09:27
下一篇 2025-07-02 22:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/6264.html