K8s-核心数据结构-scheme资源注册表
K8s-核心数据结构-scheme资源注册表
所有的K8s资源类型都会注册到Scheme资源注册表中,有如下的特点:
- 支持多种资源类型,包括内部版本和外部版本
- 支持多种版本转换机制
- 支持不同资源的的序列化/反序列化
Scheme
资源注册支持俩种类型,分别是UnversionedType
和KnowType
资源类型。
UnversionedType
:无版本资源类型,这类资源对象不需要进行转换。目前比少KnowType
:目前K8s最常用资源类型,UnversionedType
通过scheme.AddUnversionedTypes
方法进行注册,Knowtype
通过scheme.AddKnowType
进行注册
Scheme
资源注册表结构字段说明如下:
gvToType
:存储GVK与Type的映射关系typeToGVK
:存储type
与GVK
的映射关系,一个Type
会对应一个或多个GVK
unversionedTypes
:存储UnversionedType
与GVK
的映射关系unversionedKind
:存储kind
名称和UnversionedType
的映射关系
Scheme
资源注册通过Go的map结构实现映射关系,这些映射关系可以实现高效的正向和反向的检索
注册方法
scheme.AddUnversionedTypes
:注册UnversionedTypes
资源类型scheme.AddKnowTypes
:注册KnownType
资源类型scheme.AddKnownTypeWithName
:注册KnownType
资源类型
查询方法
scheme.KnowType
:查询注册表中的GV下的资源类型scheme.AllKnowTypes
:查询注册表所有的GVK下的资源类型scheme.ObjectKinds
:查询资源对象中所对应的GVK,一个资源对象可能存在多个GVKscheme.New
:查询GVK所对应的资源对象scheme.IsGroupRegisted
:判断指定的资源组是否已经注册scheme.IsVersionRegisted
:判断指定GV是否已经注册scheme.Recognizes
:判断指定GVK是否已经注册scheme.IsUnversioned
:判断指定资源对象是否属于UnversionedType类型
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joohwan!
评论