写点什么

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

  • 2022 年 5 月 01 日
  • 本文字数:1124 字

    阅读完需:约 4 分钟

[](()重要前提

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


  1. kubernetes 基本原理和操作;

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

[](()本篇概览

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


  1. 列出要用到的硬件;

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

  3. 同步 kubernetes 配置文件,使得开发环境可以远程访问 kubernetes 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】

[](()环境信息

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



  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:



  • + 表示有的新特性是 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 又实现了三种新的客户端对象;

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
client-go实战之一:准备工作_Java_爱好编程进阶_InfoQ写作社区