阅读 100

client-go实战之一:准备工作

内容:所有原创文章分类汇总及配套源码,涉及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的相关技术,从简单的实践开始,逐步深入了解client-go的强大功能,为后续的operator学习打下扎实的基础;

重要前提

  • 开始client-go实战之前要对以下知识点有所了解:

  1. kubernetes基本原理和操作;

  2. kubernetes的Group、Version、Resource等概念,推荐阅读《Kubernetes的Group、Version、Resource学习小记》

本篇概览

作为整个系列的开篇,除了对client-go做介绍,还要为后面的实战做好如下准备工作:

  1. 列出要用到的硬件;

  2. 列出要用到的软件及其版本;

  3. 同步kubernetes配置文件,使得开发环境可以远程访问kubernetes;

环境信息

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

在这里插入图片描述

  1. Linux电脑:操作系统是CentOS 7.9,已安装1.20.0版本的kubernetes

  2. MacBook Pro:操作系统是macOS Big Sur(11.1),编码工作在此电脑上进行

  3. MacBook Pro上安装的go版本为1.15.7

  4. 您可以按照个人习惯选择IDE,我这里用的是GoLand-2020.2版本

确定要用的client-go版本

client-go官方提供了多个版本,并且给出了和kubernetes版本的匹配列表,如下所示:


Kubernetes 1.15Kubernetes 1.16Kubernetes 1.17Kubernetes 1.18Kubernetes 1.19Kubernetes 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提供了以下四种客户端对象,后面的实战会逐个体验:

  1. RESTClient:这是最基础的客户端对象,仅对HTTPRequest进行了封装,实现RESTFul风格API,这个对象的使用并不方便,因为很多参数都要使用者来设置,于是client-go基于RESTClient又实现了三种新的客户端对象;

  2. ClientSet:把Resource和Version也封装成方法了,用起来更简单直接,一个资源是一个客户端,多个资源就对应了多个客户端,所以ClientSet就是多个客户端的集合了,这样就好理解了,不过ClientSet只能访问内置资源,访问不了自定义资源;

  3. DynamicClient:可以访问内置资源和自定义资源,个人感觉有点像java的集合操作,拿出的内容是Object类型,按实际情况自己去做强制转换,当然了也会有强转失败的风险;

  4. DiscoveryClient:用于发现kubernetes的API Server支持的Group、Version、Resources等信息;

  • 至此,咱们的环境和知识准备工作就完成了,接下来一同去探索强大的client-go吧!

服务器评测 http://www.cncsto.com/ 

服务器测评 http://www.cncsto.com/ 

站长资源 https://www.cscnn.com/ 

小鱼创业 https://www.237fa.com/ 


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐