overview
client-go
是kubernetes中广义的客户端基础库,在Kubernetes各个组件中或多或少都有使用其功能。
Kubernetes API对象
在 Kubernetes 集群中,Kubernetes 对象是我们持久化的实体,就是最终存入 etcd 中的数据,集群中通过这些实体来表示整个集群的状态。
API 版本
为了可扩展性,Kubernetes 在不同的 API 路径(比如/api/v1
或者 /apis/batch
)下面支持了多个 API 版本,不同的 API 版本意味着不同级别的稳定性和支持:
- Alpha level,例如
v1alpha1
默认情况下是被禁用的,可以随时删除对功能的支持,所以要慎用 - Beta level,例如
v2beta1
默认情况下是启用的,表示代码已经经过了很好的测试,但是对象的语义可能会在随后的版本中以不兼容的方式更改 - stable level,比如
v1
表示已经是稳定版本了,也会出现在后续的很多版本中。
API 路径
在 Kubernetes 集群中,一个 API 对象在 Etcd 里的完整资源路径,是由:Group
Version
Resource
三个部分组成的。
Group
:rbac.authorization.k8s.io
Version
:v1
Resource
:Pod
CRD
。
client-go 目录结构
client-go的每一个目录都是一个go package
kubernetes
这个go package 包含与Kubernetes API所通信的客户端集discovery
这个go package 用于发现kube-apiserver所支持的apidynamic
这个go package包含了一个动态客户端,该客户端能够对kube-apiserver任意的API进行操作。transport
这个 go package提供了用于设置认证和启动链接的功能
client-go 安装
如何选择 client-go
的版本
对于不同的kubernetes版本使用标签 v0.x.y
来表示对应的客户端版本。具体对应参考client-go 。
例如使用的kubernetes版本为 v1.18.20
则使用对应的标签 v0.x.