import "k8s.io/apimachinery/pkg/runtime/schema"var EmptyObjectKind = emptyObjectKind{}EmptyObjectKind将ObjectKind接口实现为noop。
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 = Kindgroup = group.com,kind = Kindfunc ParseResourceArg(arg string) (*GroupVersionResource, GroupResource)ParseResourceArg接收通用格式的字符串,(如resource.group.com或resource.version.group.com)并将其解析输出。 代码不会知道字符串使用哪种表示形式,但对所有GroupVersions都有一定的了解,因此代码可以自己推测。
如果只有两个段,则*GroupVersionResource为nil。 即resource.group.com解析为:
group = com,version = group,resource = resourcegroup = group.com,resource = resourcetype GroupKind struct {
Group string
Kind string
}GroupKind指定Group和Kind,但不强制Version。这对于在查找阶段没有部分有效类型的情况下识别概念很有用。
func ParseGroupKind(gk string) GroupKindfunc (gk GroupKind) Empty() boolfunc (gk GroupKind) String() stringfunc (gk GroupKind) WithVersion(version string) GroupVersionKindtype GroupResource struct {
Group string
Resource string
}GroupResource指定一个Group和一个Resource,但不强制Version。这对于在查找阶段没有部分有效类型的情况下识别概念很有用。
func ParseGroupResource(gr string) GroupResourceParseGroupResource将resource.group字符串转换为GroupResource结构,每个字段都允许使用空字符串。
func (gr GroupResource) Empty() boolfunc (gr GroupResource) String() stringfunc (gr GroupResource) WithVersion(version string) GroupVersionResourcetype GroupVersion struct {
Group string
Version string
}GroupVersion包含唯一标识API的“Group”和“Version”。
func ParseGroupVersion(gv string) (GroupVersion, error)ParseGroupVersion将group/version字符串转换为GroupVersion结构。如果无法解析字符串,它将报告错误。
func (gv GroupVersion) Empty() bool如果Group和Version为空,则Empty返回true。
func (gv GroupVersion) Identifier() stringIdentifier实现runtime.GroupVersioner接口。
func (gv GroupVersion) KindForGroupVersionKinds(kinds []GroupVersionKind) (target GroupVersionKind, ok bool)KindForGroupVersionKinds从列表中标识首选GroupVersionKind。 如果没有选项与Group匹配,则返回ok为false。 相比于只有Group匹配,Group与Version都匹配更好。
pkg/runtime,因为它已被scheme使用runtime.GroupVersioner之间引入适配器类型,并在较少的地方使用LegacyCodec(GroupVersion)func (gv GroupVersion) String() stringString将group和version写入一个单独的group/version字符串中,对于旧版v1,将返回v1。
func (gv GroupVersion) WithKind(kind string) GroupVersionKindWithKind基于方法接收者的GroupVersion和传递的Kind创建一个GroupVersionKind。
func (gv GroupVersion) WithResource(resource string) GroupVersionResourceWithResource基于方法接收者的GroupVersion和传递的Resource创建一个GroupVersionResource。
type GroupVersionKind struct {
Group string
Version string
Kind string
}GroupVersionKind明确标识一种kind。它没有匿名包含GroupVersion以避免自动强制。它不使用GroupVersion来避免自定义编组。
func FromAPIVersionAndKind(apiVersion, kind string) GroupVersionKindFromAPIVersionAndKind返回一个GVK,代表不使用TypeMeta提供的字段表示的类型。存在此方法以支持具有不同group和kind的测试类型和旧版序列化。
func (gvk GroupVersionKind) Empty() bool如果group,version和kind为空,则Empty返回true。
func (gvk GroupVersionKind) GroupKind() GroupKindfunc (gvk GroupVersionKind) GroupVersion() GroupVersionfunc (gvk GroupVersionKind) String() stringfunc (gvk GroupVersionKind) ToAPIVersionAndKind() (string, string)ToAPIVersionAndKind是一种便捷方法用于满足runtime.Object的type而不使用TypeMeta。
type GroupVersionResource struct {
Group string
Version string
Resource string
}GroupVersionResource明确标识resource。它没有匿名包含GroupVersion以避免自动强制。它不使用GroupVersion来避免自定义编组。
func (gvr GroupVersionResource) Empty() boolfunc (gvr GroupVersionResource) GroupResource() GroupResourcefunc (gvr GroupVersionResource) GroupVersion() GroupVersionfunc (gvr GroupVersionResource) String() stringtype GroupVersions []GroupVersionGroupVersions可用于表示一组所需的group versions。
pkg/runtime下,因为它已被scheme使用。runtime.GroupVersioner之间引入适配器类型,并在较少的地方使用LegacyCodec(GroupVersion)func (gv GroupVersions) Identifier() stringIdentifier实现runtime.GroupVersioner接口。
func (gvs GroupVersions) KindForGroupVersionKinds(kinds []GroupVersionKind) (GroupVersionKind, bool)KindForGroupVersionKinds从列表中标识首选GroupVersionKind。如果没有选项与group匹配,则返回ok为false。
type ObjectKind interface {
// SetGroupVersionKind设置或清除对象的预期序列化类型。 传递nil将会清除当前设置。
SetGroupVersionKind(kind GroupVersionKind)
// GroupVersionKind返回存储的对象的group,version和kind,如果该对象未公开或不提供这些字段,则返回nil。
GroupVersionKind() GroupVersionKind
}从Scheme序列化的所有对象都对其类型信息进行编码。 序列化使用此接口,以将Scheme中的类型信息设置到对象的序列化版本上。 对于无法序列化或有独特要求的对象,此接口可能是无操作的。