import "k8s.io/apimachinery/pkg/runtime" runtime定义了通用类型和结构之间的转换,以将查询字符串映射到结构对象。 runtime包括辅助函数,该函数用于遵循kubernetes API对象约定的API对象,这些约定是: API对象具有一个通用的元数据结构成员TypeMeta。 代码引用了一组内部API对象。 在单独的包中,具有一组外部API对象。 外部API对象组被认为是版本化的,并且从未对其进行过任何重大更改(可以添加字段,但不能更改或删除字段)。 随着API的发展,将在每次重大更改后制作一个附加的版本包。 Versioned包具有转换功能,可以与内部版本进行转换。 将根据弃用策略继续支持较旧的版本,并且由于第六个原因,可以轻松提供program/library以将旧版本更新为新版本。 所有的序列化和反序列化都在一个集中的位置进行处理。 runtime提供一个转换辅助工具使得第六个变得很容易,并且Encode/Decode/DecodeInto完成了第八个。还可以注册使用对应版本的其他“编解码器”。建议在程序包的init函数中向runtime注册类型。 另外,types.go中提供了一些适用于所有API对象和版本的常见类型。
package schema import "k8s.io/apimachinery/pkg/runtime/schema" Variables var EmptyObjectKind = emptyObjectKind{} EmptyObjectKind将ObjectKind接口实现为noop。 func ParseKindArg func ParseKindArg(arg string) (*GroupVersionKind, GroupKind) ParseKindArg接收通用格式的字符串,(如Kind.group.com或Kind.version.group.com),并将其解析输出。 代码不会知道字符串使用哪种表示形式,但对所有GroupKinds都有一定的了解,因此代码可以自己推测。 如果只有两个部分,则*GroupVersionResource为nil。即Kind.group.com解析为: group = com,version = group,kind = Kind group = group.com,kind = Kind func ParseResourceArg func ParseResourceArg(arg string) (*GroupVersionResource, GroupResource) ParseResourceArg接收通用格式的字符串,(如resource.group.com或resource.version.group.com)并将其解析输出。 代码不会知道字符串使用哪种表示形式,但对所有GroupVersions都有一定的了解,因此代码可以自己推测。 如果只有两个段,则*GroupVersionResource为nil。 即resource.group.com解析为: group = com,version = group,resource = resource group = group.com,resource = resource type GroupKind type GroupKind struct { Group string Kind string } GroupKind指定Group和Kind,但不强制Version。这对于在查找阶段没有部分有效类型的情况下识别概念很有用。 func ParseGroupKind func ParseGroupKind(gk string) GroupKind func (GroupKind) Empty func (gk GroupKind) Empty() bool func (GroupKind) String func (gk GroupKind) String() string func (GroupKind) WithVersion func (gk GroupKind) WithVersion(version string) GroupVersionKind type GroupResource type GroupResource struct { Group string Resource string } GroupResource指定一个Group和一个Resource,但不强制Version。这对于在查找阶段没有部分有效类型的情况下识别概念很有用。 func ParseGroupResource func ParseGroupResource(gr string) GroupResource ParseGroupResource将resource.group字符串转换为GroupResource结构,每个字段都允许使用空字符串。 func (GroupResource) Empty func (gr GroupResource) Empty() bool func (GroupResource) String func (gr GroupResource) String() string func (GroupResource) WithVersion func (gr GroupResource) WithVersion(version string) GroupVersionResource type GroupVersion type GroupVersion struct { Group string Version string } GroupVersion包含唯一标识API的“Group”和“Version”。 func ParseGroupVersion func ParseGroupVersion(gv string) (GroupVersion, error) ParseGroupVersion将group/version字符串转换为GroupVersion结构。如果无法解析字符串,它将报告错误。 func (GroupVersion) Empty func (gv GroupVersion) Empty() bool 如果Group和Version为空,则Empty返回true。 func (GroupVersion) Identifier func (gv GroupVersion) Identifier() string Identifier实现runtime.GroupVersioner接口。 func (GroupVersion) KindForGroupVersionKinds func (gv GroupVersion) KindForGroupVersionKinds(kinds []GroupVersionKind) (target GroupVersionKind, ok bool) KindForGroupVersionKinds从列表中标识首选GroupVersionKind。 如果没有选项与Group匹配,则返回ok为false。 相比于只有Group匹配,Group与Version都匹配更好。 TODO:将GroupVersion移至pkg/runtime,因为它已被scheme使用 TODO:在GroupVersion和runtime.GroupVersioner之间引入适配器类型,并在较少的地方使用LegacyCodec(GroupVersion) func (GroupVersion) String func (gv GroupVersion) String() string String将group和version写入一个单独的group/version字符串中,对于旧版v1,将返回v1。 func (GroupVersion) WithKind func (gv GroupVersion) WithKind(kind string) GroupVersionKind WithKind基于方法接收者的GroupVersion和传递的Kind创建一个GroupVersionKind。 func (GroupVersion) WithResource func (gv GroupVersion) WithResource(resource string) GroupVersionResource WithResource基于方法接收者的GroupVersion和传递的Resource创建一个GroupVersionResource。 type GroupVersionKind type GroupVersionKind struct { Group string Version string Kind string } GroupVersionKind明确标识一种kind。它没有匿名包含GroupVersion以避免自动强制。它不使用GroupVersion来避免自定义编组。 func FromAPIVersionAndKind func FromAPIVersionAndKind(apiVersion, kind string) GroupVersionKind FromAPIVersionAndKind返回一个GVK,代表不使用TypeMeta提供的字段表示的类型。存在此方法以支持具有不同group和kind的测试类型和旧版序列化。 DOTO:进一步减少此方法的使用。 func (GroupVersionKind) Empty func (gvk GroupVersionKind) Empty() bool 如果group,version和kind为空,则Empty返回true。 func (GroupVersionKind) GroupKind func (gvk GroupVersionKind) GroupKind() GroupKind func (GroupVersionKind) GroupVersion func (gvk GroupVersionKind) GroupVersion() GroupVersion func (GroupVersionKind) String func (gvk GroupVersionKind) String() string func (GroupVersionKind) ToAPIVersionAndKind func (gvk GroupVersionKind) ToAPIVersionAndKind() (string, string) ToAPIVersionAndKind是一种便捷方法用于满足runtime.Object的type而不使用TypeMeta。 type GroupVersionResource type GroupVersionResource struct { Group string Version string Resource string } GroupVersionResource明确标识resource。它没有匿名包含GroupVersion以避免自动强制。它不使用GroupVersion来避免自定义编组。 func (GroupVersionResource) Empty func (gvr GroupVersionResource) Empty() bool func (GroupVersionResource) GroupResource func (gvr GroupVersionResource) GroupResource() GroupResource func (GroupVersionResource) GroupVersion func (gvr GroupVersionResource) GroupVersion() GroupVersion func (GroupVersionResource) String func (gvr GroupVersionResource) String() string type GroupVersions type GroupVersions []GroupVersion GroupVersions可用于表示一组所需的group versions。 TODO:将GroupVersions移至pkg/runtime下,因为它已被scheme使用。 TODO:在GroupVersion和runtime.GroupVersioner之间引入适配器类型,并在较少的地方使用LegacyCodec(GroupVersion) func (GroupVersions) Identifier func (gv GroupVersions) Identifier() string Identifier实现runtime.GroupVersioner接口。 func (GroupVersions) KindForGroupVersionKinds func (gvs GroupVersions) KindForGroupVersionKinds(kinds []GroupVersionKind) (GroupVersionKind, bool) KindForGroupVersionKinds从列表中标识首选GroupVersionKind。如果没有选项与group匹配,则返回ok为false。 type ObjectKind type ObjectKind interface { // SetGroupVersionKind设置或清除对象的预期序列化类型。 传递nil将会清除当前设置。 SetGroupVersionKind(kind GroupVersionKind) // GroupVersionKind返回存储的对象的group,version和kind,如果该对象未公开或不提供这些字段,则返回nil。 GroupVersionKind() GroupVersionKind } 从Scheme序列化的所有对象都对其类型信息进行编码。 序列化使用此接口,以将Scheme中的类型信息设置到对象的序列化版本上。 对于无法序列化或有独特要求的对象,此接口可能是无操作的。
名字 地址 描述 cache "k8s.io/client-go/tools/cache" cache是一种客户端缓存机制,这对于减少需要进行的服务器调用次数很有用。Reflector监视服务器并更新Store。提供两个Store;一个简单地缓存对象(例如,允许调度程序列出当前可用的节点),另一个简单地充当FIFO队列(例如,允许调度程序处理传入的Pod) clientcmd "k8s.io/client-go/tools/clientcmd" 提供一站式服务从固定配置文件、.kubeconfig文件、命令行标识或者其他的组合中生成可用的集群客户端 discovery "k8s.io/client-go/discovery" 提供了发现服务器支持的API组,版本和资源的方法 fields "k8s.io/apimachinery/pkg/fields" 实现了一个简单的字段系统,将选择器与字段集进行解析和匹配 genericclioptions "k8s.io/cli-runtime/pkg/genericclioptions" 包含可以添加到命令,绑定,完成并产生有用的帮助程序功能的标志 kubernetes "k8s.io/client-go/kubernetes" 自动生成的客户端集合 proto "k8s.io/kube-openapi/pkg/util/proto" 用于解析和索引类型定义的库的集合。,openapi规范包含对象模型定义和扩展元数据 resource "k8s.io/cli-runtime/pkg/resource" 帮助客户端处理与Kubernetes API约定匹配的RESTful对象,Helper对象提供对资源的简单CRUD操作,Visitor接口可以轻松地批量处理多个资源以进行检索和操作,Builder对象简化了将标准命令行参数转换为可以访问服务器或本地文件系统上所有已标识资源的Visitor的过程 runtime "k8s.io/apimachinery/pkg/runtime" 定义了通用类型和结构之间的转换,以将查询字符串映射到结构对象 scheme "k8s.io/client-go/kubernetes/scheme" 包含自动生成的客户端集合的scheme dynamic "k8s.io/client-go/dynamic" rest "k8s.io/client-go/rest" schema "k8s.io/apimachinery/pkg/runtime/schema"