YAML 语言创建于2001年,比 XML 晚了三年。XML 你应该知道吧,它是一种类似 HTML 的标签式语言,有很多繁文缛节。而 YAML 虽然在名字上模仿了 XML,但实质上与XML完全不同,更适合人类阅读,计算机解析起来也很容易。
YAML 的官网(https://yaml.org/)有对语言规范的完整介绍,所以我就不在这里列举语言的细节了,只讲一些与 Kubernetes 相关的要点,帮助你快速掌握。
你需要知道,YAML 是 JSON 的超集,支持整数、浮点数、布尔、字符串、数组和对象等数据类型。也就是说,任何合法的 JSON 文档也都是 YAML 文档,如果你了解 JSON,那么学习 YAML 会容易很多。
但和 JSON 比起来,YAML 的语法更简单,形式也更清晰紧凑,比如:
- 使用空白与缩进表示层次(有点类似 Python),可以不使用花括号和方括号。
- 可以使用
#
书写注释,比起 JSON 是很大的改进。 - 对象(字典)的格式与 JSON 基本相同,但 Key 不需要使用双引号。
- 数组(列表)是使用
-
开头的清单形式(有点类似 MarkDown)。 - 表示对象的
:
和表示数组的-
后面都必须要有空格。 - 可以使用
---
在一个文件里分隔多个 YAML 对象。
下面我们来看几个 YAML 的简单示例。
首先是数组,它使用 -
列出了三种操作系统:
1 | # YAML数组(列表) |
这段 YAML 对应的 JSON 如下:
1 | { |
对比可以看到 YAML 形式上很简单,没有闭合花括号、方括号的麻烦,每个元素后面也不需要逗号。
再来看一个 YAML 对象,声明了1个 Master 节点,3个 Worker 节点:
1 | # YAML对象(字典) |
它等价的 JSON 如下:
1 | { |
注意到了吗 YAML 里的 Key 都不需要使用双引号,看起来更舒服。
把 YAML 的数组、对象组合起来,我们就可以描述出任意的 Kubernetes 资源对象,第三个例子略微复杂点,你可以自己尝试着解释一下:
1 | # 复杂的例子,组合数组和对象 |
关于 YAML 语言的其他知识点我就不再一一细说了,都整理在了这张图里,你可以参考 YAML官网。