深度解析 | K8S API Server之专业术语

本文深入解析Kubernetes API Server中的关键术语,包括Kind、API Group、版本、资源等,帮助理解API请求流程及系统架构。

对Kubernetes API Server的相关术语进行介绍,后续会有新的文章对API请求流程、API Server的存储和扩展点等主题进行介绍。本篇是Kubernetes API Server系列第二篇。 

术语解释

在简要概述了API Server和HTTP API空间及其属性之后,我们现在对文中使用的术语进行更正式的定义。像pod,service、endpoints、deployment等基元组成了Kubernetes类型的对象。我们使用以下术语:

Kind代表一个实体的类型。每个对象都有一个Kind字段,它告诉一个客户端(如kubectl或者oc)它具体代表的实体,如pod: 

apiVersion: v1 

kind: Pod 

metadata: 

name: webserver 

spec: 

containers: 

– name: nginx 

  image: nginx:1.9 

  ports: 

  – containerPort: 80

有三种类型的Kind:

  • 对象(Objects)表示系统中的一个持久实体。对象可能具有多个资源,客户端可以使用它们来执行特定的操作。例如:Pod和Namespace。

  • 列表(Lists)是一个或多个种类的实体的资源集合。列表是一般元数据的有限集合。例如:PodLists和NodeLists。

  • 特殊用途类别(Special purpose kinds)用于针对对象的特定操作,以及一些非持久化的实体(例如/binding或/status),发现使用APIGroup和APIResource,错误结果使用Status等。

API组(API Group):逻辑上关联的Kinds的集合。例如,所有批处理对象(batch objects)都在批处理API Group中,如Job和ScheduledJob。

版本(Version):每个API Group均存在多个版本。例如,一个组首先出现在v1alpha1中,然后升级到v1beta1,最后升级到v1。在某个版本(如v1beta1)中创建的对象,可以在每个兼容的版本(如v1)中检索到。API Server会进行无损的转换并返回所请求的版本中的对象。

资源(Resource):一个系统实体,以JSON格式通过HTTP进行发送和检索。资源可以暴露为单独的资源(如…/namespaces/default),或者资源集合(如…/jobs)。

使用API组(API Group)、版本(Version)和资源(Resource)可以唯一的定义一个HTTP路径:

更确切的说,Jobs的实际路是/apis/batch/v1/namespaces/$NAMESPACE/jobs。但是与类似节点(Node)这种资源相反,Jobs不是一个集群范围的资源。因此为了简洁,我们在路径中省略了$NAMESPACE这个字段。

需要注意的是Kinds不仅存在于不同的版本中,也可能同时存在于不同的API组之中。例如,Deployment最早处于扩展组(extension group)中,是alpha版本的Kind,后来Deployment升级到了GA版本,并位于自己的组apps.k8s.io中。因此,要唯一的识别Kind,需要同时使用API组(API Group)、版本(Version)和类型名称(Kind name)。

本文转移K8S技术社区-深度解析 | K8S API Server之专业术语

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值