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会对应一个或多个GVKunversionedTypes:存储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!
评论



