欢送拜访我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,波及Java、Docker、Kubernetes、DevOPS等;
系列文章链接
- client-go实战之一:筹备工作
- client-go实战之二:RESTClient
- client-go实战之三:Clientset
- client-go实战之四:dynamicClient
- client-go实战之五:DiscoveryClient
对于client-go
- client-go是kubernetes官网提供的go语言的客户端库,go利用应用该库能够拜访kubernetes的API Server,这样咱们就能通过编程来对kubernetes资源进行增删改查操作;
- 除了提供丰盛的API用于操作kubernetes资源,client-go还为controller和operator提供了重要反对,如下图,client-go的informer机制能够将controller关注的资源变动及时带给此controller,使controller可能及时响应变动:
- GitHub仓库:https://github.com/kubernetes...
对于《client-go实战》系列
《client-go实战》系列是欣宸推出的实战主题原创,旨在与大家一起入手体验client-go的相干技术,从简略的实际开始,逐渐深刻理解client-go的弱小性能,为后续的operator学习打下扎实的根底;
重要前提
- 开始client-go实战之前要对以下知识点有所理解:
- kubernetes基本原理和操作;
- kubernetes的Group、Version、Resource等概念,举荐浏览《Kubernetes的Group、Version、Resource学习小记》
本篇概览
作为整个系列的开篇,除了对client-go做介绍,还要为前面的实战做好如下筹备工作:
- 列出要用到的硬件;
- 列出要用到的软件及其版本;
同步kubernetes配置文件,使得开发环境能够近程拜访kubernetes;
环境信息
- 如下图所示,本次实战一共用到两台电脑:
- Linux电脑:操作系统是<font color="blue">CentOS 7.9</font>,已装置<font color="blue">1.20.0</font>版本的kubernetes
- MacBook Pro:操作系统是<font color="blue">macOS Big Sur(11.1)</font>,编码工作在此电脑上进行
- MacBook Pro上装置的go版本为<font color="blue">1.15.7</font>
- 您能够依照集体习惯抉择IDE,我这里用的是GoLand-2020.2版本
确定要用的client-go版本
client-go官网提供了多个版本,并且给出了和kubernetes版本的匹配列表,如下所示:
Kubernetes 1.15 | Kubernetes 1.16 | Kubernetes 1.17 | Kubernetes 1.18 | Kubernetes 1.19 | Kubernetes 1.20 | |
---|---|---|---|---|---|---|
kubernetes-1.15.0 | ✓ | +- | +- | +- | +- | +- |
kubernetes-1.16.0 | +- | ✓ | +- | +- | +- | +- |
kubernetes-1.17.0 /v0.17.0 | +- | +- | ✓ | +- | +- | +- |
kubernetes-1.18.0 /v0.18.0 | +- | +- | +- | ✓ | +- | +- |
kubernetes-1.19.0 /v0.19.0 | +- | +- | +- | +- | ✓ | +- |
kubernetes-1.20.0 /v0.20.0 | +- | +- | +- | +- | +- | ✓ |
HEAD | +- | +- | +- | +- | +- | +- |
这里解释一下表格中的✓
、+
、-
的含意:
✓
示意准确匹配,如下图红框,示意<font color="blue">v0.20.0</font>版本能够准确匹配<font color="red">1.20.0</font>版本的kubernetes:
+
示意有的新个性是client-go反对的,然而此kubernetes版本却不反对;-
示意有的新个性是kubernetes反对的,然而此client-go版本却不反对;- 我这里kubernetes版本为<font color="blue">1.20.0</font>,因而选用client-go的<font color="red">0.20.0</font>版本最合适;
复制k8s环境的配置文件
- 为了能让MacBook Pro电脑上的go利用顺利拜访K8S,请将K8S环境下的<font color="blue">~/.kube/config</font>文件复制到MacBook Pro电脑的<font color="blue">~/.kube/</font>目录下;
客户端对象简述
- 本篇聚焦筹备工作,不做编码,这里提前介绍一下前面的实战内容:通过client-go提供的客户端对象与kubernetes的API Server进行交互,而client-go提供了以下四种客户端对象,前面的实战会一一体验:
- RESTClient:这是最根底的客户端对象,仅对HTTPRequest进行了封装,实现RESTFul格调API,这个对象的应用并不不便,因为很多参数都要使用者来设置,于是client-go基于RESTClient又实现了三种新的客户端对象;
- ClientSet:把Resource和Version也封装成办法了,用起来更简略间接,一个资源是一个客户端,多个资源就对应了多个客户端,所以ClientSet就是多个客户端的汇合了,这样就好了解了,不过ClientSet只能拜访内置资源,拜访不了自定义资源;
- DynamicClient:能够拜访内置资源和自定义资源,个人感觉有点像java的汇合操作,拿出的内容是Object类型,按理论状况本人去做强制转换,当然了也会有强转失败的危险;
- DiscoveryClient:用于发现kubernetes的API Server反对的Group、Version、Resources等信息;
- 至此,咱们的环境和常识筹备工作就实现了,接下来一起去摸索弱小的client-go吧!
你不孤独,欣宸原创一路相伴
- Java系列
- Spring系列
- Docker系列
- kubernetes系列
- 数据库+中间件系列
- DevOps系列
欢送关注公众号:程序员欣宸
微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游Java世界...
https://github.com/zq2599/blog_demos