yaml文件简介
YAML(IPA: /ˈjæməl/)是一个可读性高的语言,参考了XML、C、Python等。
理解:Yet Another Markup Language
后缀:可以是.yml或者是.yaml,更加推荐.yaml,其实用任意后缀都可以,只是阅读性不强
yaml文件基础
- 区分大小写
- 缩进表示层级关系,相同层级的元素左对齐
- 缩进只能使用空格,不能使用TAB
- "#"表示当前行的注释
- 是JSON文件的超级,两个可以转换
- ---表示分隔符,可以在一个文件中定义多个结构
- 使用key: value,其中":"和value之间要有一个英文空格
Maps
简单
apiVersion: v1
kind: Pod
---表示分隔符,可选。要定义多个结构一定要分隔
apiVersion表示key,v1表示value,英文":"后面要有一个空格
kind表示key,Pod表示value
也可以这样写apiVersion: "v1"
转换为json
{
"apiVersion": "v1",
"kind": "Pod"
}
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
复杂
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
metadata表示key,下面的内容表示value,该value中包含两个直接的key:name和labels
name表示key,nginx-deployment表示value
labels表示key,下面的表示value,这个值又是一个map
app表示key,nginx表示value
相同层级的记得使用空间缩进,左对齐
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "nginx-deployment",
"labels": {
"app": "nginx"
}
}
}
Lists
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container01
image: busybox:1.28
- name: myapp-container02
image: busybox:1.28
containers表示key,下面的表示value,其中value是一个数组
数组中有两个元素,每个元素里面包含name和image
image表示key,myapp-container表示value
转成json
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "myapp",
"labels": {
"app": "myapp"
}
},
"spec": {
"containers": [{
"name": "myapp-container01",
"image": "busybox:1.28",
},
{
"name": "myapp-container02",
"image": "busybox:1.28",
}]
}
}
k8s的yaml文件样例
官网
https://kubernetes.io/docs/reference/
# yaml格式对于Pod的定义:
apiVersion: v1 #必写,版本号,比如v1
kind: Pod #必写,类型,比如Pod
metadata: #必写,元数据
name: nginx #必写,表示pod名称
namespace: default #表示pod名称属于的命名空间
labels:
app: nginx #自定义标签名字
spec: #必写,pod中容器的详细定义
containers: #必写,pod中容器列表
- name: nginx #必写,容器名称
image: nginx #必写,容器的镜像名称
ports:
- containerPort: 80 #表示容器的端口
k8s yaml文件 属性介绍
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.14/