YAML文件格式_k8s/docker-compose配置文件

YAMLYet Another Markup Language,是一个JSON的超集,意味着任何有效JSON文件也都是一个YAML文件。它规则如下:

1)大小写敏感

2)使用缩进表示层级关系,但不支持tab缩进,只支持空格

3)缩进的数量不重要但至少一个空格,只要相同层级使用相同数量的空格即可

4)“#”表示注释,从这个字符开始,直到行末,都会被解析器忽略

关于k8sYAML的使用,只有两种类型:MapsListsMaps的子项可以是ListsLists的子项也可以是Maps

Maps:就是一个字典,即key:value的键值对。

---

apiVersion: v1

kind: Pod

metadata:

name: kube100-site

labels:

app: web

第一行是分隔符,并且是可选的。如果在单个文件中只定义了一个服务,那么这种情况下,第一行的分隔符就可以忽略不计。在上面的例子中,可以看出有两个值:v1Pod,对应它们的键是apiVersionkind

metadata这个key对应的值为一个Maps,而嵌套的labels这个key的值又是一个Map。实际使用中可视情况进行多层嵌套。

YAML处理器根据行缩进来知道内容之间的关联。上述例子中,使用两个空格作为缩进,但空格的数据量并不重要,只是至少要求一个空格并且所有缩进保持一致的空格数 。例如,namelabels是相同缩进级别,因此YAML处理器知道他们属于同一map;它知道applables的值,因为app的缩进更大。

Lists:就是一个列表。

args

-beijing

-shanghai

-shenzhen

-guangzhou

可以有任何数量的项在列表中,项的定义以破折号(-)开头,并且和父元素之间存在缩进。在JSON格式中,表示如下:

{ 

“args”: [“beijing”, “shanghai”, “shenzhen”, “guangzhou”] 

}

一个示例如下:

---

apiVersion: v1

kind: Pod

metadata:

name: kube100-site

labels:

app: web

spec:

containers:

- name: front-end

image: nginx

ports:

- containerPort: 80

- name: flaskapp-demo

image: jcdemo/flaskapp

ports: 8080

如上述文件所示,定义一个containersList对象,每个子项都由nameimageports组成,每个ports都有一个KEYcontainerPortMap组成


参考:

1KubernetesYAML文件

猜你喜欢

转载自www.cnblogs.com/embedded-linux/p/10714126.html