client-go 实战之一:准备工作,干货分享
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.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: 
评论