YAML文件详解--资源清单
概述
k8s集群中对资源管理和资源对象编排部署都可以通过生命式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到YAML格式文件中,我们把这中文件叫做资源清单文件,通过kubectl命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署。一般在我们开发的时候,都是通过配置yaml文件来部署集群的。
YAML文件:资源清单文件,用于资源编排
YAML文件介绍
YAML概述
YAML:是一种标记语言。为了强调这种语言以数据做为中心,而不是以标记语言为重点。
YAML是一个可读性高,用来表达数据序列的格式。
YAML基本语法
使用空格作为缩进
缩进的空格数目不重要,只要相同层级的元素左对齐即可
低版本缩进时不允许使用Tab键,只允许使用空格
使用#标识注释,从这个字符一直到行尾,都会被解释器忽略掉
使用—表示一个新的yaml文件开始
YAML支持的数据结构
对像
键值对集合,又称为映射/哈希/字典
#对象类型:对象的一组键值对,使用冒号结构表示
name: Ben
age: 18
#yaml也允许另一种写法,将所有的键值对写成一个行内对象
hash: {name: Ben, age: 18}
数组
#数组类型:一组连词线开头的行,构成一个数组
People
– Tom
– Jack
#数组也可以采用行内表示法
People: [Tom, Jack]
YAML文件组成部分
主要分为两个部分,一个是控制器的定义,一个是被控制的对象
控制器的定义
api版本、控制器类型
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: default
spec:
replicas: 3
selector:
matchLables:
app: nginx
被控制的对象
包含一些镜像、版本、端口等
template:
metadata:
lables:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
属性说明
在YAML文件的控制器定义中,有很多属性名称
属性名称 | 介绍 |
---|---|
apiVersion | API版本 |
kind | 资源类型 |
metadata | 资源元数据 |
spec | 资源规格(期望) |
replicas | 副本数量 |
selector | 标签选择器 |
template | Pod模板 |
spec | Pod的期望 |
containers | 容器配置 |
快速编写YAML文件的方法
一般来说,我们很少自己手写YAML文件,因为这里面涉及到了很多内容,我们一般都会借助工具来创建。
使用kubectl create命令
这种方式一般用于资源没有部署的时候,我们可以直接创建一个YAML配置文件
#尝试运行,并不会真正的创建镜像
kubectl create deployment web --image=nginx -o yaml --dry-run=client
或者可以重定向到一个文件中
kubectl create deployment web --image=nginx -o yaml --dry-run=client > web.yaml
然后就可以通过这个模板修改即可
使用kubectl get命令导出yaml文件
这里需要一个已经部署好的镜像,导出配置文件
kubectl get deployment web -o yaml > web.yaml
修改自己想要的YAML文件
谢谢浏览!!!