kubernetes源码-资源定义相关汇总
资源的定义相关汇总.
资源定义
日常开发或者学习源码的过程中,需要经常翻阅 kubernetes 资源的相关定义文件,来回找很麻烦,所以整理了一下,记录下来方便日后快速查找用。
资源的内部版本
诸如 pod,deployment 资源 api 的定义,用 yaml 或者 Json 文件创建资源对象时,会转换成这里的内部版本定义。
有组:kubernetes\pkg\apis\<group>\
无组:kubernetes\pkg\apis\core\types.go
资源的外部版本
定义资源的数据结构,使用 yaml 或者 Json 文件创建资源对象时,所使用的是外部版本的资源对象(kubectl apply 的就是外部资源对象)。
有组:kubernetes\staging\src\k8s.io\api\<group>\<version>\<resource file>
无组:kubernetes\staging\src\k8s.io\api\core\v1
核心的数据结构
Group,Version,Resource等核心的数据结构,其中包含了 kubernetes 集群中所有组件使用的通用核心数据结构,以及定义了资源的操作方法参数(DeleteOptions,ListOptions,GetOptions等)。
kubernetes\staging\src\k8s.io\apimachinery\pkg\apis\meta\v1\types.go
资源操作方法接口
create,delete,deletecollection,get,list 的接口定义。
kubernetes\staging\src\k8s.io\apiserver\pkg\registry\rest\rest.go
资源操作方法
增删改查实际上都是针对存储的操作(create,delete,deletecollection,get,list)。
kubernetes\staging\src\k8s.io\apiserver\pkg\registry\generic\registry\store.go
定义控制器
定义 controller 。
kubernetes\pkg\controller\
常用资源
kubernetes 内置资源全图,记录哪些组对应有哪些资源,方便日后查阅用。
apps
-
DaemonSet:在Pod资源对象的基础上提供守护进程的资源类型;
-
RepliceSet:在Pod资源对象的基础上提供一组Pod副本的资源类型;
-
Deployment:在Pod资源对象的基础上提供支持无状态服务的资源类型;
-
Statefulment:在Pod资源对象的基础上提供支持有状态服务的资源类型;
batch
-
Job:提供一次性任务的资源类型;
-
CronJob:提供定时任务的资源类型;
core
-
Event:提供Kubernetes集群事件管理的资源类型;
-
LimitRange:为命名空间的每种资源对象设置资源(硬件资源)的使用限制;
-
Namespace:提供资源对象所在命名空间的资源类型;
-
Node:提供Kubernetes集群中管理工作节点的资源类型,每个节点都有一个唯一标识;
-
PersistentVolume:提供PV存储的资源类型;
-
PersistentVolumeClaim:提供PVC存储的资源类型;
-
Pod:提供容器集合管理的资源类型;
-
RepilcationController:在Pod资源对象的基础上提供副本数的保持不变的资源类型;
-
Secret:提供存储密码、Token、密钥等敏感数据的资源类型;
-
Service:提供负载均衡器为Pod资源对象的代理服务的资源类型;
event
- Event:提供Kubernetes集群事件管理的资源类型;
networking
- Ingress:提供Kubernetes集群外部访问集群内部服务管理的资源类型;
node
- RuntimeClass:提供容器运行时功能的资源状态;
policy
-
Evictions:在Pod资源对象的基础上提供驱逐策略的资源类型;
-
PodDisruptionBudget:提供限制同时Pod中断的数量,以保证集群的高可用性;
scheduling
- PriorityClass:提供Pod资源对象优先级管理的资源类型;
结束
资源作为Kubernetes的核心名词,可以说在Kubernetes的体系中,将所有的实例都当作的资源;理解Kubernetes的数据结构可以对理解Kubernetes起到启发性的帮助。