网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
-
kubernetes基本原理和操作;
-
kubernetes的Group、Version、Resource等概念,推荐阅读《Kubernetes的Group、Version、Resource学习小记》
本篇概览
作为整个系列的开篇,除了对client-go做介绍,还要为后面的实战做好如下准备工作:
-
列出要用到的硬件;
-
列出要用到的软件及其版本;
-
同步kubernetes配置文件,使得开发环境可以远程访问kubernetes;
环境信息
- 如下图所示,本次实战一共用到两台电脑:
-
Linux电脑:操作系统是CentOS 7.9,已安装1.20.0版本的kubernetes
-
MacBook Pro:操作系统是macOS Big Sur(11.1),编码工作在此电脑上进行
-
MacBook Pro上安装的go版本为1.15.7
-
您可以按照个人习惯选择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
| ± | ± | ± | ± | ± | ± |
这里解释一下表格中的✓
、+
、-
的含义:
✓
表示精确匹配,如下图红框,表示v0.20.0版本可以精确匹配1.20.0版本的kubernetes:
-
+
表示有的新特性是client-go支持的,但是此kubernetes版本却不支持; -
-
表示有的新特性是kubernetes支持的,但是此client-go版本却不支持; -
我这里kubernetes版本为1.20.0,因此选用client-go的0.20.0版本最合适;
复制k8s环境的配置文件
- 为了能让MacBook Pro电脑上的go应用顺利访问K8S,请将K8S环境下的~/.kube/config文件复制到MacBook Pro电脑的~/.kube/目录下;
客户端对象简述
- 本篇聚焦准备工作,不做编码,这里提前介绍一下后面的实战内容:通过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等信息;
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
//bbs.csdn.net/topics/618658159)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!