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 集群中主节点和工作节点的不同组件及其状态。在实际使用中,这种格式可以用来记录或报告集群的健康状态。

相关推荐
上火的金鱼妹5 小时前
K8S基础组件作用和关系整理
linux·运维·服务器·kubernetes
SLD_Allen13 小时前
从 HPA 到 KEDA:Kubernetes 弹性伸缩的进阶实践
云原生·容器·kubernetes
哈__15 小时前
KES-Operator正式发布:基于Kubernetes的数据库集群云原生全生命周期管理方案
数据库·云原生·kubernetes
nxb55616 小时前
云原生:kubernetes的service
微服务·云原生·容器·kubernetes
ZzzZZzzzZZZzzzz…16 小时前
K8s---组件
运维·云原生·容器·kubernetes·k8s·k8s组件
陈皮糖..16 小时前
基于 Kubernetes 与 GitLab CI/CD 的云原生自动化交付平台
运维·ci/cd·云原生·架构·kubernetes·自动化·gitlab
cui_hao_nan17 小时前
Kubernetes 核心概念总结
云原生·容器·kubernetes
张洛闻Eren17 小时前
云原生k8s【第八课】: ETCD 备份与恢复
linux·运维·docker·kubernetes·k8s
IT大白鼠1 天前
Ingress 与 Ingress-Controller:K8s 七层 HTTP 反向代理技术详解与实践
http·容器·kubernetes
IT大白鼠1 天前
Istio 结合 K8s 实现流量管理:服务网格灰度、熔断、限流实战
云原生·kubernetes·istio