Kubernetes资源可分为内置资源(Kubernetes Resources)和自定义资源(Custom Resources),它们都通过资源对象描述文件(Manifest File)进行定义,资源对象描述文件下图所示。

一个资源对象需要用5个字段来描述它,分别是Group/Version、Kind、MetaData、Spec、Status。这些字段定义在YAML或JSON文件中。Kubernetes系统中的所有的资源对象都可以采用YAML或JSON格式的描述文件来定义,下面是某个Pod文件的资源对象描述文件。YAML Manifest FileExample代码示例如下:
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
资源对象描述文件说明如下。
- apiVersion:指定创建资源对象的资源组和资源版本,其表现形式为<group>/<version>,若是core资源组(即核心资源组)下的资源对象,其表现形式为<version>。
- kind:指定创建资源对象的种类。
- metadata:描述创建资源对象的元数据信息,例如名称、命名空间等。
- spec:包含有关Deployment资源对象的核心信息,告诉Kubernetes期望的资源状态、副本数量、环境变量、卷等信息。
- status:包含有关正在运行的Deployment资源对象的信息。
每一个Kubernetes资源对象都包含两个嵌套字段,即spec字段和status字段。其中spec字段是必需的,它描述了资源对象的“期望状态”(Desired State),而status字段用于描述资源对象的“实际状态”(Actual State),它是由Kubernetes系统提供和更新的。在任何时刻,Kubernetes控制器一直努力地管理着对象的实际状态以与期望状态相匹配。
网友评论