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 规范);

支持的数据类型

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

另外,我们需要知道,YAML 是 JSON 的超集,也就是说任何合法的 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": "有水区"
    }
}

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

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

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

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

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

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

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

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

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

相关推荐
陈陈CHENCHEN8 小时前
【Kubernetes】纯 IPv6 K8s 集群访问外部 IPv4 服务
云原生·容器·kubernetes
troy1289 小时前
如何在谷歌云(Google Cloud)上部署 Kubernetes 集群
云原生·容器·kubernetes
程序员清风20 小时前
Docker、Nginx 与 Kubernetes 部署 AI 后端服务
nginx·docker·kubernetes
Zhu75821 小时前
离线二进制部署-Kubernetes-v1.36.4
容器·贪心算法·kubernetes
程序猿阿越1 天前
containerd如何拉取镜像
后端·kubernetes·源码阅读
Elastic 中国社区官方博客1 天前
Kubernetes attributes processor v1:它对 EDOT Collector 意味着什么
java·大数据·elasticsearch·搜索引擎·贪心算法·kubernetes·全文检索
bllovepigpig1 天前
操作系统个人学习笔记(四):K8s基础
笔记·学习·kubernetes
键盘鼓手苏苏1 天前
ESLint 规则渐进式升级:从 0 警告到全面开启的迁移策略(续篇)
云原生·kubernetes·k8
码上上班1 天前
k8s知识点总结
云原生·容器·kubernetes
谢亮_vipxieliang2 天前
从 Docker 到 Kubernetes:概念对照与迁移
docker·容器·kubernetes