YAML:Kubernetes世界里的标准工作语言

YAML,Kubernetes 世界里的标准工作语言,一起了解下 YAML 是什么?为什么要有 YAML? 它是个什么样子并且怎么使用它。

YAML 是什么?

YAML 官网:yaml.org/ (对语言规范有详细的介绍),引用官网一段话:YAML is a human-friendly data serializationlanguage for all programming languages.。它是一种更适合人类可读的数据序列化格式,让我们可以在不同的编程语言下轻松编写和解析。

使用场景

  • 配置文件(如 Docker Compose、 Kubernetes、 Ansible);
  • 跨语言数据交换;
  • 结构化数据存储(如: OpenAPI、 Swagger 的 API 规范);

支持的数据类型

  • 支持整数、浮点数、布尔、字符串;
  • 支持序列(列表、数组);
  • 映射(字典、哈希表);
  • 多行字符串(| 保留换行符、> 折叠为单行);

另外,我们需要知道,YAMLJSON 的超集,也就是说任何合法的 JSON 文档也都是 YAML 文档。与 JSON 文档比起来,显然可读性比较强,语法更简单些。

基本语法

  • 使用空白与缩进表示层次,可以不使用花括号和方括号;
  • 使用 # 注释;
  • 数组(列表)是使用 - 开头的清单形式;
  • 表示对象的 : 和表示数组的 - 后面必须要用空格;
  • 使用 --- 在一个文件里分隔多个 YAML 对象;

简单示例

yaml 复制代码
# 数组(列表)
OS:
 - Linux
 - MacOS
 - Windows
 - HarmonyOS
# 键值对
name: 巴莫
age: 18
is_student: false

# 对象(字典)
address:
 province: 火星省
 city: 巴拉市
 district: 有水区

对应的 JSON 格式如下:

json 复制代码
{
    "OS": ["Linux","MacOS","Windows","HarmonyOS"]
}

{
    "name": "巴莫",
    "age": 18,
    "is_student": false
}

{
    "address": {
        "province": "火星省",
        "city": "巴拉市",
        "district": "有水区"
    }
}

可以看出来 YAMLJSON 对比,有一个明显的变化就是 YAML 里面的 key 不需要使用双引号,看起来很简洁干练。

再举一个 Kubernetes 里面的示例再看看:

yaml 复制代码
Kubernetes:
  master:
    - apiserver: running
    - etcd: running
  node:
    - kubelet: running
    - kube-proxy: down
    - container-runtime: [docker, containerd, cri-o]

这个结构表示:顶层对象是 Kubernetes,包含两个主要部分:masternode

1、master 部分是一个数组,包含两个对象:

  • apiserver 的状态是 "running";
  • etcd 的状态是 "running";

2、node 部分是一个数组,包含三个元素:

  • kubelet 的状态是 "running";
  • kube-proxy 的状态是 "down"(表示不正常);
  • container-runtime 是一个数组,列出了三种可能的容器运行时选项:dockercontainerdcri-o

这种结构很好地展示了 Kubernetes 集群中主节点和工作节点的不同组件及其状态。在实际使用中,这种格式可以用来记录或报告集群的健康状态。

相关推荐
汪碧康6 小时前
【k8s-1.34.2安装部署】九.k8s多集群管理平台xkube-v3.9安装部署
云原生·容器·kubernetes·kubelet·xkube·eeenet
逆流°只是风景-bjhxcc6 小时前
【k8s】Kubernetes 探针(livenessProbe、readinessProbe、startupProbe)
云原生·容器·kubernetes
逆流°只是风景-bjhxcc6 小时前
【k8s】Kubernetes(K8s)YAML 配置文件
docker·容器·kubernetes
理智的煎蛋7 小时前
单节点 K8S IP 修改步骤
tcp/ip·云原生·容器·kubernetes
XMYX-09 小时前
从 Pod 资源到 JVM 参数:我再生产环境中踩过的 Kubernetes 资源配置那些坑——2025 年度技术总结
jvm·容器·kubernetes
傻啦嘿哟10 小时前
用Kubernetes管理大规模爬虫节点:从单机到云原生的进化之路
爬虫·云原生·kubernetes
lbb 小魔仙1 天前
AI + 云原生实战:K8s 部署分布式训练集群,效率翻倍
人工智能·云原生·kubernetes
Justin_191 天前
K8s常见问题(2)
云原生·容器·kubernetes
汪碧康1 天前
二进制kubenetes-1.34.2安装包快速部署k8s集群
云原生·容器·kubernetes·k8s·etcd·xkube
汪碧康1 天前
【k8s-1.34.2安装部署】六.企业级部署cilium-1.18.4网络插件
网络·云原生·容器·kubernetes·k8s·cilium·xkube