什么是资源清单?

在kubernetes中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单

资源清单格式

Kubernetes API 仅接受及响应JSON格式的数据(JSON对象),同时,为了便于使用,它也允许用户提供YAML格式的POST对象,但API Server需要实现自行将其转换为JSON格式后方能提交。API Server接受和返回的所有JSON对象都遵循同一个模式,它们都具有kind和apiVersion字段,用于标识对象所属的资源类型、API群组及相关的版本。

大多数的对象或列表类型的资源提供元数据信息,如名称、隶属的名称空间和标签等;spec则用于定义用户期望的状态,不同的资源类型,其状态的意义也各有不同,例如Pod资源最为核心的功能在于运行容器;而status则记录着活动对象的当前状态信息,它由Kubernetes系统自行维护,对用户来说为只读字段。

大部分资源的配置清单由以下5个字段组成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# kubectl api-versions  命令可以获取
apiVersion: 指明api资源属于哪个群组和版本,同一个组可以有多个版本 group/version

kind: 资源类别,标记创建的资源类型,k8s主要支持以下资源类别
Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、Cronjob

metadata: 用于描述对象的属性信息,主要提供以下字段:
name: 指定当前对象的名称,其所属的名称空间的同一类型中必须唯一
namespace: 指定当前对象隶属的名称空间,默认值为default
labels: 设定用于标识当前对象的标签,键值数据,常被用作挑选条件
annotations: 非标识型键值数据,用来作为挑选条件,用于labels的补充

spec: 用于描述所期望的对象应该具有的状态(disired state),资源对象中最重要的字段。

status: 用于记录对象在系统上的当前状态(current state),本字段由kubernetes自行维护