kubernetes源码剖析读后感(三)

注:结合书中的大概内容以及笔者自身的k8s经验 总结学到的一些新知识每一篇篇幅不会很长
书很棒强烈推荐买一本读

本次读书来自于《kubernetes源码剖析》 作者郑东旭

总结中包含部分书中内容 包含部分笔者读书学习到的知识点以及根据笔者结合书的一些总结

第三章 kubernetes核心数据结构

1.Group Version Resource核心数据结构
Group:资源组 也可以称之为APIGroup
Version:资源版本 也可以称之为APIVersion
Resource: 资源 也可以称之为APIResource
Kind:资源种类与Resource同一级别
熟悉k8s的都了解 k8s支持多个Group,Group又支持多个Version,每一个Version又支持多个Resource
Resouce
kubernetes源码剖析读后感(三)
Version
kubernetes源码剖析读后感(三)
Resouce完整表现形式为<GROUP>/<VERSION>/<RESOURCE>/<SUBRESOURCE> 比如deployment apps/v1/deployment/status
每一个资源都拥有一定数量的操作方法即Verbs 资源操作方法用于etcd中存储对资源的增删改查操作,目前k8s支持8中操作分别是create、delete、deletecollection、get、list、patch、update、watch
每一个资源都至少有两个版本分别是外部版本(External Version)和内部版本(Internal Version)外部版本用于对外暴露给用户请求的接口所使用的资源对象,而内部版本不对外暴露尽在内部使用

资源版本跟资源内外部版本概念是不同的

k8s资源也可以分为两种Kubernetes Resource内置资源和Custom Resource(自定义资源简称CR)。通过CRD即Custom Resource Definitis 可以实现自定义资源 可以把自定义资源提交至k8s系统中并且像内置资源一样使用
2.ResourceList

GroupVersionResource(GVR) 描述资源组 资源版本 资源
GroupVersion(GV) 描述资源组 资源版本
GroupResource(GR) 描述资源组 资源
GroupVersionKind(GVK) 描述资源组 资源版本 资源种类
GroupVersions(GVS) 描述资源组内多个资源版本
GroupKind(GK) 描述资源组 资源种类

3.Group

  • 按照不同功能做了api的组别划分 允许单独开启/禁用资源组 以及单独开启/禁用资源组的中的资源
  • 支持同资源组拥有不同的资源版本,方便组内资源根据版本迭代升级
  • 支持同名的资源种类kind存在于不同的资源组内
  • 资源组与资源版本通过api对外暴露允许开发者通过http协议进行交互并通过动态客户端即(DynamicClient第五章client-go会说到)进行资源发现
  • 支持CRD自定义资源扩展
  • 用户交互简单kubectl可以不写资源组名称

4.Version
版本分为3中Alpha、Beta、Stable
迭代的顺序为Alpha->Beta->Stable
Alpha 测试版本 存在缺陷跟漏洞 会被随时放弃 一般为v1alph1、v1alph2
Beta相对稳定的版本 在迭代中可能被更改但不会被删除v1beta1
Stable正式发布的版本,默认全部开启,例如v1 v2
5.Resource
6.内置资源全图(图太大非常全)可以考虑买本书看看
7.runtime.Object
8.Unstructured数据
9.Scheme资源注册表
10.Codec编解码器
11.Converter资源版本转换器

此文未完 更新中