yaml文件----排版很舒服的文件o(* ̄▽ ̄*)o
一. yaml文件编写格式
1. 通过缩进表示不同的层级
2. 不能使用tab缩进,只能用空格
3. 一般开头缩进2两个空格
4. 每个字符后面缩进一个空格
5. 3个横杠"---"表示下一个yaml文件的开始
6. 使用"#"注释
先上一段案例
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-2
spec:
selector:
matchLabels:
app: nginx-te
replicas: 1
template:
metadata:
labels:
app: nginx-te
spec:
containers:
- name: nginx
image: nginx:1.12
这是上一章我们创建的时候用的,这里说明一下是什么意思
apiVersion: apps/v1 #api版本,每个控制器都可能不同
kind: Deployment #资源的类型 这里是deployment控制器
metadata: #源数据, 可以直接理解为准备创建的控制器的信息设置
name: nginx-2 #控制器的名称
spec: #关于这个控制器的具体功能配置
selector: #批量一个模板信息
matchLabels: #匹配类型--标签
app: nginx-te #标签名称 k/v形式
replicas: 1 #副本数量(容器数量)
template: #创建一个控制器模板,通过上面的selector匹配
metadata: #模板的详细信息
labels: #设置标签,用于让上面的selector匹配到该模板
app: nginx-te #模板标签名称,和上面的selector的相同即可
spec: #模板的详细资源信息
containers: #容器信息
- name: nginx #容器名称
image: nginx:1.12 #容器所使用的镜像
我们想要从零开始编写一个yaml文件是非常困难的,不过也有简单的方法
二. 快速编写yaml文件
kubectl create deployment nginx --image=nginx:1.12 -o yaml --dry-run > 1.yaml
#参数说明
-o yaml yaml格式输出
--dry-run 尝试运行,并不真实执行
> 1.yaml 输出文件
查看yaml文件
[root@k8s-master01 ~]# cat 1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx:1.12
name: nginx
resources: {}
status: {}
#这里先把不用的参数去掉
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:1.12
name: nginx
可以看到和上面的我们自己编写的yaml是一样的,大大节约了我们编写文件的时间
但是自动生成的并不全面,当我们需要完成某些功能时已经不满足要求了,就需要手动查询字段
三. 字段查询(explain)
#查询deployment控制器下的字段参数
kubectl explain deployment
#返回
KIND: Deployment #资源类型
VERSION: apps/v1 #所支持的api版本
DESCRIPTION:
Deployment enables declarative updates for Pods and ReplicaSets.
#部署支持pod和replicasset的声明性更新。
FIELDS:
apiVersion <string> #如上填写apps/v1即可
kind <string> #同上 deployment
metadata <Object>
spec <Object>
status <Object>
但是后面3个字段的参数,我们不得而知。我们需要继续往下查询
1. 字段查询--deployment.metadata
kubectl explain deployment.metadata
#返回
name <string> #控制器名称
namespace <string> #控制器所处的命名空间
labels <map[string]string> #标签
2. 字段查看--deployment.spec
kubectl explain deployment.spec
#返回
replicas <integer> #副本数量
selector <Object> -required- #匹配模板
template <Object> -required- #模板
3. 详细字段查询
kubectl explain deployment.spec.template.spec.containers.imagePullPolicy
#返回
KIND: Deployment
VERSION: apps/v1
FIELD: imagePullPolicy <string>
DESCRIPTION:
Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always
if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated.
4. 将获取到的字段转为yaml文件
#deployment.spec.template.spec.containers.imagePullPolicy
spec:
template:
spec:
containers:
- imagePullPolicy: (Always, Never, IfNotPresent)
#获取到了关于控制器详细信息(spec)
# 模板字段(template)
# 详细信息(spec)
# 容器信息(containers)
# 镜像获取策略(imagePullPolicy:)
四. 案例pod类型的yaml字段查询
apiVersion: v1
kind: Pod
metadata:
name: string
namaspace: string
labels:
- name: string
annotations:
- name: string
spec:
containers:
- name: string
images: string
imagePullPolice: [Always | Never | IfNotPresent]
command: [string]
args: [string]
workingDir: string
volumeMounts:
- name: string
mountPath: string
readOnly: boolean
ports:
- name: string
containerPort: int
hostPort: int
protocol: string
env:
- name: string
value: string
resources:
limits:
cpu: string
memory: string
requests:
cpu: string
memory: string
livenessProbe:
exec:
command: [string]
httpGet:
path: string
port: int
host: string
scheme: string
httpHeaders:
- name: string
value: string
tcpSocket:
port: int
initialDelaySeconds: number
timeoutSeconds: number
periodSeconds: number
successThreshold: 0
failureThreshold: 0
securityContext:
privileged: false
restartPolicy: [Always | Never | OnFailure]
nodeSelector: object
imagePullSecrets:
- name: string
hostNetwork: false
volumes:
- name: string
emptyDir: {}
hostPath:
path: string
secret:
secretName: string
items:
- key: string
path: string
configMap:
name: string
items:
- key: string
path: string