乐趣区

关于云计算:clientgo实战之一准备工作

欢送拜访我的 GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,波及 Java、Docker、Kubernetes、DevOPS 等;

系列文章链接

  1. client-go 实战之一:筹备工作
  2. client-go 实战之二:RESTClient
  3. client-go 实战之三:Clientset
  4. client-go 实战之四:dynamicClient
  5. 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 做介绍,还要为前面的实战做好如下筹备工作:

  1. 列出要用到的硬件;
  2. 列出要用到的软件及其版本;
  3. 同步 kubernetes 配置文件,使得开发环境能够近程拜访 kubernetes;

    环境信息

  4. 如下图所示,本次实战一共用到两台电脑:

  1. Linux 电脑:操作系统是 <font color=”blue”>CentOS 7.9</font>,已装置 <font color=”blue”>1.20.0</font> 版本的 kubernetes
  2. MacBook Pro:操作系统是 <font color=”blue”>macOS Big Sur(11.1)</font>,编码工作在此电脑上进行
  3. MacBook Pro 上装置的 go 版本为 <font color=”blue”>1.15.7</font>
  4. 您能够依照集体习惯抉择 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 吧!

你不孤独,欣宸原创一路相伴

  1. Java 系列
  2. Spring 系列
  3. Docker 系列
  4. kubernetes 系列
  5. 数据库 + 中间件系列
  6. DevOps 系列

欢送关注公众号:程序员欣宸

微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游 Java 世界 …
https://github.com/zq2599/blog_demos

退出移动版