首页 > 其他分享 >10月30日总结

10月30日总结

时间:2023-11-05 09:02:14浏览次数:31  
标签:总结 10 apiextensions err nil 30 storage apiGroupInfo customresourcedefinition

1.2.2 创建 APIExtensions Server

创建完通用 APIServer 后继续创建 APIExtensions Server。

func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget) (*CustomResourceDefinitions, error) {
genericServer, err := c.GenericConfig.New("apiextensions-apiserver", delegationTarget)

s := &CustomResourceDefinitions{
	GenericAPIServer: genericServer,
}

// 存储建立 REST API 到资源实体的信息
apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(apiextensions.GroupName, Scheme, metav1.ParameterCodec, Codecs)

// 资源实体
storage := map[string]rest.Storage{}

// customresourcedefinitions
if resource := "customresourcedefinitions"; apiResourceConfig.ResourceEnabled(v1.SchemeGroupVersion.WithResource(resource)) {
    // 创建资源实体
	customResourceDefinitionStorage, err := customresourcedefinition.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter)
	if err != nil {
		return nil, err
	}
	storage[resource] = customResourceDefinitionStorage
	storage[resource+"/status"] = customresourcedefinition.NewStatusREST(Scheme, customResourceDefinitionStorage)
}
if len(storage) > 0 {
	apiGroupInfo.VersionedResourcesStorageMap[v1.SchemeGroupVersion.Version] = storage
}

if err := s.GenericAPIServer.InstallAPIGroup(&apiGroupInfo); err != nil {
	return nil, err
}

APIGroupInfo 对象用于描述资源组信息,storage 存储资源到资源实体的对应关系。

资源实体,通过 NewREST() 函数创建。

kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/etcd.go

package customresourcedefinition

// NewREST returns a RESTStorage object that will work against API services.
func NewREST(scheme runtime.Scheme, optsGetter generic.RESTOptionsGetter) (REST, error) {
strategy := NewStrategy(scheme)

store := &genericregistry.Store{
	NewFunc:                   func() runtime.Object { return &apiextensions.CustomResourceDefinition{} },
	NewListFunc:               func() runtime.Object { return &apiextensions.CustomResourceDefinitionList{} },
	PredicateFunc:             MatchCustomResourceDefinition,
	DefaultQualifiedResource:  apiextensions.Resource("customresourcedefinitions"),
	SingularQualifiedResource: apiextensions.Resource("customresourcedefinition"),

	CreateStrategy:      strategy,
	UpdateStrategy:      strategy,
	DeleteStrategy:      strategy,
	ResetFieldsStrategy: strategy,

	// TODO: define table converter that exposes more than name/creation timestamp
	TableConvertor: rest.NewDefaultTableConvertor(apiextensions.Resource("customresourcedefinitions")),
}
options := &generic.StoreOptions{RESTOptions: optsGetter, AttrFunc: GetAttrs}
if err := store.CompleteWithOptions(options); err != nil {
	return nil, err
}
return &REST{store}, nil

}

可以看到,资源实体是在资源包 customresourcedefinition 的 etcd.go 中创建的,创建的资源实体负责和 etcd 交互。
(关于 etcd 交互的部分先不讲,后续会专门介绍。)

创建完资源实体后,通过 apiGroupInfo.VersionedResourcesStorageMap[v1.SchemeGroupVersion.Version] = storage 将资源实体存储到 apiGroupInfo。

继续调用 InstallAPIGroup(apiGroupInfo *APIGroupInfo) 安装 REST API。

kubernetes/vendor/k8s.io/apiserver/pkg/server/genericapiserver.go

标签:总结,10,apiextensions,err,nil,30,storage,apiGroupInfo,customresourcedefinition
From: https://www.cnblogs.com/lmyy/p/17810207.html

相关文章

  • 11月2日总结
    聊聊Transform模型从之前的RNN系列到现在的Transformer模型,是一个演进的过程,技术的实现与迭代并不是一蹴而就,而是一个持续演进的历程。如果一开始就从Tranformer的模型机制来学习,知识的不全面以及欠缺就会导致懵逼甚至看不懂又不理解。RNN系列:聊聊RNN&LSTM聊聊RNN与seq2seq聊......
  • 11月1日总结
    本文从BERT的基本概念和架构开始,详细讲解了其预训练和微调机制,并通过Python和PyTorch代码示例展示了如何在实际应用中使用这一模型。我们探讨了BERT的核心特点,包括其强大的注意力机制和与其他Transformer架构的差异。关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构......
  • 11月3日总结
    你好,我是猫哥。这里每周分享优质的Python、AI及通用技术内容,大部分为英文。标题取自其中一则分享,不代表全部内容都是该主题,特此声明。本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿......
  • win10安装WSL2
    什么是WSL2首先我们理解一下什么是WSLWindowsSubsystemforLinux(简称WSL)是一个在Windows10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工......
  • ABC327 总结
    A傻逼题,降智吃了一发罚时。B依旧是傻逼题,std::pow炸精度又吃了一发罚时。C傻逼题,切了D发现就是个判断二分图,切了。E一眼丁真,感觉最后一个一定是最大的,然后就是求以最大的结尾的LIS。交上去,喜提WA29。转变思路,考虑dp。设\(f_{i,j}\)表示当前选了\(i\)个(从后往......
  • 10月杂题记
    CF1875D我们经过思考,容易得出以下结论:如果当前$mex=x$,则下一个删的数一定小于$x$。如果$mex=0$,那么我们就可以不往下算了,因为它们对答案的贡献为$0$。我们设$f[i]$表示当$mex=i$时,$m$的值。则有:$$f[i]=\min(f[j]+(c[i]-1)\timesj+i,f[i])$$其......
  • 2023.11.4——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.软考知识明日计划:学习......
  • 成功安装数据库总结
    在本次实践中,我们成功地安装了数据库,并对其进行了配置和测试。以下是我们的总结和经验教训:1. 安装过程:   在开始安装数据库之前,我们首先熟悉了数据库的系统要求,并确保我们的服务器满足这些要求。   我们下载了最新版本的数据库软件,并根据官方的安装指南一步步进行了安装过程......
  • Luogu8330 解题报告
    有一个显然的贪心,选了一个区间\([l,r]\),贡献为这个区间的众数加上区间外的众数。考虑根号分治,阈值为\(B\)。我们称出现次数\(>B\)的数称为大数,反之成为小数。答案有需要分\(4\)类讨论:\([l,r]\)内是大数/小数,区间外是大数/小数比较简单的是\([l,r]\)内是大数/小数,区......
  • 二分查找总结
    不考虑重复元素下循环条件l<=rmid=(left+right)>>1(1)如果a[mid]=targetreturnmid(2)如果a[mid]<target搜索[mid+1,right](3)如果a[mid]>target搜索[left,mid-1]如果循环推出仍然没有找到,就标志着没有该元素。二分查找元素起始位置mid=(left+right)>>1需要找到一个......