YAML文件概述
K8s集群文件中对资源管理和资源对象编排部署都可以通过声明样式yaml
,文件来解决,也就是说可以把需要对资源对象操作编辑到yaml
,文件中。
我们称之为资源清单
或资源清单文件
通过kubectl命令直接使用资源清单文件就可以实现对大量资源对象进行编排部署
基本语法
- 大小写敏感
- 使用缩进表示层级关系,缩进不允许使用tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- ‘#’表示注释
---
表示新的yaml文件的开始
数据类型
YAML 支持以下几种数据类型:
- 对象:
键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:
一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 纯量(scalars):
单个的、不可再分的值
常量
常量是最基本的,不可再分的值,包括:
- 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期
引用
& 锚点和 * 别名,可以用来引用:
& 用来建立锚点(defaults),<< 表示合并到当前数据,* 用来引用锚点。
defaults: &defaults adapter: postgres host: localhost development: database: myapp_development <<: *defaults test: database: myapp_test <<: *defaults ---相当于 defaults: adapter: postgres host: localhost development: database: myapp_development adapter: postgres host: localhost test: database: myapp_test adapter: postgres host: localhost
kubernetes中yaml组成部分
apiVersion: 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文件
# kubectl create kubectl create deployment web --image=nginx -o yaml --dry-run# -o 使用yaml格式展示# -dry-run 尝试运行,并不会真正运行# 保存至myweb.yamlkubectl create deployment web --image=nginx -o yaml --dry-run > myweb.yaml
- kubectl create deployment web —image=nginx -o yaml —dry-run运行效果如下⬇️:
Part 2: 使用命令导出yaml文件
kubectl get kubectl get deploy # 查看部署kubectl get deploy nginx -o yaml --export > myweb.yaml