如果是其他语言的客户端工具,可以通过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集群内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
到此这篇查看k8s版本(查看k8s版本信息的命令是)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/38364.html