目录

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起到启发性的帮助。