目录
一、Yaml概述
K8S集群中对资源管理和资源对象编排部署都可以通过声明YAML文件来解决,也就是可以把需要对资源对象操作编辑到 YAML 格式文件中,我们把这种文件叫做资源清单文件,通过 kubectl 命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署了。
- YAML 文件 : 就是资源清单文件,用于资源编排。
二、Yaml基本语法
- 通过缩进表示层级关系;
- 使用空格做为缩进,缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,一般缩进两个空格;
- 低版本缩进时不允许使用 Tab 键,只允许使用空格;
- 使用#代表注释,从这个字符一直到行尾,都会被解释器忽略;
- 使用 --- 表示新的 yaml 文件开始;
三、Yaml数据结构
- 对象:键值对的集合,又称为映射 (mapping) / 哈希(hashes) / 字典(dictionary)
# 对象类型:对象的一组键值对,使用冒号结构表示
name: Tom
age: 18
# yaml 也允许另一种写法,将所有键值对写成一个行内对象
hash: {name: Tom, age: 18}
- 数组: 一组按次序排列的值,又称为序列(sequence) / 列表 (list)
# 数组类型:一组连词线开头的行,构成一个数组
People
- Tom
- Jack
# 数组也可以采用行内表示法
People: [Tom, Jack]
- 纯量(scalars): 单个的、不可再分的值
number: 10.01
flag: true
# 字符串默认不使用引号表示
str: hello world
# 如果字符串中间包含空格或者特殊字符,需要放到引号中
str1: 'hello: world'
# 双引号不会对特殊字符进行转义
s1: '张\n三'
s2: "张\n三"
# 单引号中还有单引号,需要连续用两个单引号进行转义
s3: 'hello''world'
四、K8S资源清单描述方法
在 k8s 中,一般使用 YAML 格式的文件来创建符合我们预期期望的pod,这样的YAML 文件称为资源清单。主要分为两大部分,一个是控制器的定义、另一个是被控制的对象。
资源清单中常用的属性名称:
参数名 |
字段类型 |
说明 |
是否必须 |
version |
String |
这里指定是K8S API的版本,目前基本上是v1,可以通过kubectl api-versions命令查询 |
是 |
kind |
String |
yaml文件定义的资源类型和角色,比如:Pod、Deployment、ReplicaSet、Service |
是 |
metadata |
Object |
元数据对象,固定值就写metadata |
是 |
metadata.name |
String |
元数据对象的名字,由我们自定义,比如命名Pod的名字,Service的名字 |
是 |
metadata.namespace |
String |
元数据对象的命名空间,由我们自定义。非必填,默认为default |
否 |
spec |
Object |
详细定义对象,固定值就写spec |
是 |
spec.containers[] |
list |
spec对象的容器列表定义 |
是 |
spec.containers[].name |
String |
容器名字 |
是 |
spec.containers[].image |
String |
容器所使用的镜像 |
是 |
spec.containers[].imagePullPolicy | String | 定义镜像拉取策略,有Always、Never、IfNotPresent三个值。 Always:意思是每次都尝试重新拉取镜像。(默认值是Always) Never:表示仅使用本地镜像。 IfNotPresent:如果本地有镜像,就使用本地镜像,本地没有就拉取在线镜像。 |
否 |