前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >client-go实战之一:准备工作

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

作者头像
程序员欣宸
发布2022-05-06 14:11:06
4120
发布2022-05-06 14:11:06
举报
文章被收录于专栏:实战docker实战docker

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

系列文章链接

  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能够及时响应变化:

关于《client-go实战》系列

《client-go实战》系列是欣宸推出的实战主题原创,旨在与大家一起动手体验client-go的相关技术,从简单的实践开始,逐步深入了解client-go的强大功能,为后续的operator学习打下扎实的基础;

重要前提

本篇概览

作为整个系列的开篇,除了对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:
  • + 表示有的新特性是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等信息;
  • 至此,咱们的环境和知识准备工作就完成了,接下来一同去探索强大的client-go吧!
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎访问我的GitHub
  • 系列文章链接
  • 关于client-go
  • 关于《client-go实战》系列
  • 重要前提
  • 本篇概览
  • 环境信息
  • 确定要用的client-go版本
  • 复制k8s环境的配置文件
  • 客户端对象简述
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档