YAML文件概述
K8s集群文件中对资源管理和资源对象编排部署都可以通过声明样式yaml
,文件来解决,也就是说可以把需要对资源对象操作编辑到yaml
,文件中。
我们称之为资源清单
或资源清单文件
通过kubectl命令直接使用资源清单文件就可以实现对大量资源对象进行编排部署
基本语法
- 大小写敏感
- 使用缩进表示层级关系,缩进不允许使用tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- ‘#’表示注释
---
表示新的yaml文件的开始数据类型
YAML 支持以下几种数据类型:- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 纯量(scalars):单个的、不可再分的值
常量
常量是最基本的,不可再分的值,包括: - 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期
引用
& 锚点和 * 别名,可以用来引用:
& 用来建立锚点(defaults),<< 表示合并到当前数据,* 用来引用锚点。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21defaults:
adapter: postgres
host: localhost
development:
database: myapp_development
<<:
test:
database: myapp_test
<<:
---相当于
defaults:
adapter: postgres
host: localhost
development:
database: myapp_development
adapter: postgres
host: localhost
test:
database: myapp_test
adapter: postgres
host: localhostkubernetes中yaml组成部分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35apiVersion: v1 # API版本 可使用命令kubeclt api--verison查看
kind: ReplicationController # 资源类型 - 副本控制器RC
metadata: # 资源元数据
name: mysql # - RC的名称(全局唯一),符合目标的Pod拥有此标签
spec: # 资源的规格(RC的相关属性的定义)
replicas: 1 # 副本的期望数量
selector: # 标签选择器
app: mysql
# *********************************************
template: # Pod 模版
metadata:
name: mysql
labels: # 标签 Pod 副本拥有的标签,对应RC的Selector
app: mysql
spec: # Pod规格
containers: # 容器的配置
- name: mysql # 容器名称
image: mysql # 容器镜像(对应的Docker images)
ports:
- containerPort: 3306 # 容器引用监听的端口号
env: # 环境配置
- name: MYSQL_ROOT_PASSWORD
value: "123456"
---
apiVersion: v1
kind: Service # 资源类型 服务
metadata:
name: mysql
spec:
selector:
app: mysql
ports:
- port: 3306 - 控制器部分
- 被控制的对象
- RC
快速编写yaml文件
Part 1:使用命令生成yaml文件
1
2
3
4
5
6# kubectl create
kubectl create deployment web --image=nginx -o yaml --dry-run
# -o 使用yaml格式展示
# -dry-run 尝试运行,并不会真正运行
# 保存至myweb.yaml
kubectl create deployment web --image=nginx -o yaml --dry-run > myweb.yaml - kubectl create deployment web —image=nginx -o yaml —dry-run运行效果如下⬇️:
Part 2: 使用命令导出yaml文件
1
2
3kubectl get
kubectl get deploy # 查看部署
kubectl get deploy nginx -o yaml --export > myweb.yaml
kubectl命令学习
这里简单记录下 Kubectl 部署的一些准备工作。
1 |
Basic Commands (Beginner): |
Kubectl create
1 |
Create a resource from a file or from stdin. |