开局一张图
Group
定义:
type APIGroup struct {TypeMeta `json:",inline"`Name string `json:"name" protobuf:"bytes,1,opt,name=name"`Versions []GroupVersionForDiscovery `json:"versions" protobuf:"bytes,2,rep,name=versions"`PreferredVersion GroupVersionForDiscovery `json:"preferredVersion,omitempty" protobuf:"bytes,3,opt,name=preferredVersion"`ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs,omitempty" protobuf:"bytes,4,rep,name=serverAddressByClientCIDRs"`}
两种资源组:有组名资源组和无组名资源组(也叫核心资源组Core Groups) Pod属于无组名资源组

Version
定义:
type APIVersions struct {TypeMeta `json:",inline"`Versions []string `json:"versions" protobuf:"bytes,1,rep,name=versions"`ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" protobuf:"bytes,2,rep,name=serverAddressByClientCIDRs"`}
kubernetes的版本分为三种
Alpha:内部测试版本,如v1alpha1 Beta:经历了官方和社区测试的相对稳定版,如v1beta1 Stable:正式发布版,如v1、v2
Resource
定义:
type APIResource struct {Name string `json:"name" protobuf:"bytes,1,opt,name=name"`SingularName string `json:"singularName" protobuf:"bytes,6,opt,name=singularName"`Namespaced bool `json:"namespaced" protobuf:"varint,2,opt,name=namespaced"`Group string `json:"group,omitempty" protobuf:"bytes,8,opt,name=group"`Version string `json:"version,omitempty" protobuf:"bytes,9,opt,name=version"`Kind string `json:"kind" protobuf:"bytes,3,opt,name=kind"`Verbs Verbs `json:"verbs" protobuf:"bytes,4,opt,name=verbs"`ShortNames []string `json:"shortNames,omitempty" protobuf:"bytes,5,rep,name=shortNames"`Categories []string `json:"categories,omitempty" protobuf:"bytes,7,rep,name=categories"`StorageVersionHash string `json:"storageVersionHash,omitempty" protobuf:"bytes,10,opt,name=storageVersionHash"`}
Resource资源在kubernetes中很重要。常见的有Pod、Service、Deployment
- 在kubernetes环境被实例化的资源既资源对象(ResourceObject)
- 资源被分为持久性与非持久性。持久性如Deployment,创建后会在etcd中保存,非持久性如Pod
- kubernetes为资源准备了8种操作:create、delete、deletecollection、get、list、patch、update、watch,每一种资源都支持其中的一部分
- 资源支持以命名空间(namespace)进行隔离
- 资源对象描述文件在日常操作中频繁用到,一共由五部分组成:apiVersion、kind、metadata、spec、status(该部分是用来反应当前资源对象状态的) ``` 开启 status 子资源,添加这个注释之后就可以对 status进行更新操作了 //+kubebuilder:subresource:status
为 kubectl get xxx 添加一列,这个挺有用的 //+kubebuilder:printcolumn
<a name="ZKia6"></a>### 资源有关的操作```shell# 查看所有资源kubectl api-resources -o wide# 只看apps这个group下面的资源kubectl api-resources --api-group apps -o wide# 查看所有Group和Versionkubectl api-versions
