公有云容器化指南:腾讯云TKE实战与应用
上QQ阅读APP看书,第一时间看更新

2.5 如何编写Pod YAML文件

刚学习Kubernetes的人会接触到非常多的概念,见得最多的就是YAML文件配置了。网络上讲解Kubernetes的文章都只选取一小段YAML配置文件做一个简单的示意,初学者通常对YAML没有整体的认识,还处于迷惑状态。下面我们对Pod YAML文件的编写和配置进行整体讲解。

2.5.1 什么是YAML文件

前面我们了解到,Kubernetes配置文件都是YAML文件格式的,那么什么是YAML文件?它的编写语法是什么呢?

1.YAML的特点

YAML(Yet Another Markup Language)结合了我们之前接触过的properties、XML、JSON等数据格式标记语言的特性,具有以下特点。

●层次分明、结构清晰。

●使用简单、上手容易。

●语义丰富。

●大小写敏感。

●禁止使用Tab键缩进,只能使用空格键缩进。

2.YAML的语法

我们通过一个例子快速了解YAML的语法。


#前面是key,后面是value,表示如下:
name: nginx 

# 表示metadata.name=nginx:
metadata:
    name: nginx 
# 表达数组,即表示containers为[name,image,port]用-就可以了

containers:
    - nginx
    - nginx
    - 80
# 常量、布尔、字符串定义
version: 1.1          # 定义一个数值1.1
rich: true            # 定义一个Boolean值
say: 'hello world'    # 定义一个字符串

掌握了上面的语法,基本就能看懂和编写Kubernetes的YAML了。Kubernetes里的YAML用不到其他高级的语法格式。

2.5.2 Pod YAML的参数定义

Pod是Kubernetes的最小单元,它的信息都记录在一个YAML文件里。那么这个YAML文件应该怎么写呢?里面有哪些参数?如何修改YAML文件?带着这几个问题,我们来深入了解YAML文件。

初学者看到Kubernetes的YAML配置文件会觉得又长又没规律。其实,我们可以从两个方面对其进行梳理:第一是找出必选参数,第二是找出主要参数对象。

1.必选参数

注意,对于YAML文件,下面几个参数是必须要声明的,不然运行绝对会出错,YAML文件参数、字段类型及说明如表2-5所示。

表2-5 YAML必选参数

以上这些都是编写YAML文件的必选参数,每个YAML文件都包含它们。

2.主要参数对象

上文说的都是必选参数,其他功能的参数,虽然不是必选项,但是可以让YAML定义得更详细、功能更丰富。接下来的参数都是Spec对象下面的,主要分为spec.containers和spec.volumes。

(1)spec.containers

spec.containers是一个List数组,它用来描述container容器方面的参数,所以包含的参数非常多,如表2-6所示。

表2-6 spec.containers参数

(2)spec.volumes

spec.volumes是一个list数组,很明显,看名字就知道它是用于定义同步存储的参数,包含的参数非常多,如表2-7所示。

表2-7 spec.volumes参数

(3)额外的参数对象

除了上面介绍的spec.containers和spec.volumes两个主要参数,还有几个额外的参数对象,如表2-8所示。

表2-8 额外参数对象

上面的几张表格我们不用死记硬背,可以把这些表格当作字典,用到的时候再查看。话说回来,如果参数不那么丰富,那么Kubernetes的功能定义将大幅下降。

另外,YAML里的这些参数其实是Kubernetes声明式的一种体现,我们可以简单地把它理解为用户操作Kubernetes的一个接口。YAML里设置的参数数值,最终都会持久化到ETCD里。