📅  最后修改于: 2023-12-03 15:13:04.518000             🧑  作者: Mango
YAML(发音类似于“骏马”)是一种可读性高、表达能力强的数据格式,适用于配置文件、数据传输、日志记录等场景。它的语法结构简单,基于缩进实现层次结构,支持数组、对象、字符串、数字等基本数据类型。
不同于 XML 或 JSON,YAML 文件更易读、更易写,因此很受开发人员的欢迎。在一些语言中,YAML 己成为常用的配置文件格式。
.yml
或 .yaml
。#
开头。:
来分隔键和值,中间不能有空格。' '
或双引号 "
括起来,可以换行。[ ]
(或 -
符号) 包含,元素之间用逗号 ,
分隔。{ }
包含,键值对之间用逗号 ,
分隔。# 注释
key1: value1
key2:
subkey1: subvalue1
subkey2: subvalue2
key3: [value3, value4]
key4:
- {name: Andy, age: 20}
- {name: Bob, age: 25}
key5: |
多行字符串
带换行
key6: >
多行字符串
不带换行
YAML 文件常用作应用程序的配置文件,例如 Spring Boot 的 application.yml
:
server:
port: 8080
context-path: /app
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: root
YAML 文件也可以用于数据传输,例如 Kubernetes 的 Deployment
文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
YAML 文件也常用于日志记录,例如 Kubernetes 的 Kubelet
模块:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kubelet
spec:
selector:
matchLabels:
name: kubelet
template:
metadata:
labels:
name: kubelet
spec:
hostNetwork: true
hostPID: true
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdocker
hostPath:
path: /var/lib/docker
containers:
- name: kubelet
image: kubernetes/pause:latest
command:
- /bin/sh
- -c
- "while true; do echo hello; sleep 10; done"
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdocker
mountPath: /var/lib/docker
tolerations:
- operator: Exists
nodeSelector:
kubernetes.io/os: linux