您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
Kubernetes 中的 YAML 基础知识
 
作者:Raghavendra Deshpande
  762  次浏览      16 次
 2022-7-19
 
编辑推荐:
在本教程中,您将了解 YAML 的结构以及如何编写 YAML 文件的基础知识 ,希望对您的学习有所帮助。
本文来自于IBM,由Alice编辑、推荐。

如果您从事软件开发已经有一段时间了,尤其是使用 Kubernetes 或容器,您可能会遇到 YAML 文件。 YAML — 或“另一种标记语言” — 是一种用于指定与配置相关的数据的文本格式。 在本教程中,您将了解 YAML 的结构以及如何编写 YAML 文件的基础知识。 您将探索 Kubernetes 中使用的示例 YAML 文件。

目标

在本教程中,您将学习:

  • YAML 文件的定义
  • 为什么开发人员使用 YAML
  • YAML与JSON和XML的关系
  • YAML 文件的基本结构
  • 如何在 Kubernetes 中使用 YAML 文件

先决条件

本教程假设您已经了解用于存储和传输数据的语言的基础知识,例如 XML 和 JSON。

YAML 文件的定义

在继续之前,您需要了解 YAML 的定义。 根据 yaml.org 的说法,“YAML 是一种人性化的、适用于所有编程语言的数据序列化标准。”

YAML 是专门为常见用例创建的,例如:

  • 配置文件
  • 日志文件
  • 进程间消息传递
  • 跨语言数据共享
  • 对象持久化
  • 复杂的数据结构

为什么你应该使用 YAML

使用 YAML 文件有几个优点:

1.它们很容易被人类阅读。 YAML 文件具有表现力和可扩展性。

2.它们易于实施和使用。

3.它们很容易在编程语言之间移植。

4.它们与敏捷语言的原生数据结构相匹配。

5.YAML 文件具有一致的模型来支持通用工具。

6.它们支持一次性处理。

7.它们使用方便,因此您不再需要将所有参数添加到命令行。

8.您可以进行维护。 可以将 YAML 文件添加到源代码管理以跟踪更改。

9.他们很灵活。 您可以使用 YAML 创建比在命令行上使用的复杂得多的结构

与 JSON 和 XML 的关系

XML 是许多领域的先驱。 XML 最初被设计为与标准通用标记语言 (SGML) 向后兼容,SGML 旨在支持结构化文档。 因此,XML 存在许多设计约束。

JSON 的设计目标是简单性和通用性,其目标是生成和解析。 它降低了人类的可读性,但每个现代编程环境都可以轻松处理其数据。

YAML 的设计目标是人类可读性和更完整的信息模型。 YAML 的生成和解析更加复杂,因此可以将其视为 JSON 的自然超集。 每个 JSON 文件也是一个有效的 YAML 文件。

综上所述,如果/当需要附加功能时,它可以很容易地从 JSON 迁移到 YAML。 YAML 是从 XML 中吸取教训的结果。

YAML 文件的结构

以下是 YAML 文件的构建块:

1.键值对——YAML 文件中的基本条目类型是键值对。 在键和冒号之后有一个空格,然后是值。

2.数组/列表 - 列表将在列表名称下列出许多项目。 列表的元素将以 - . 可以有一个 n 列表,但是数组中各种元素的缩进很重要。

3.Dictionary/Map——更复杂的 YAML 文件类型是 Dictionary 和 Map。

编写 YAML 文件时的一般准则

编写 YAML 文件时请记住以下准则。

缩进和制表符的重要性

考虑下图,其中包含有关“香蕉”的详细信息。 有3个属性:

1.卡路里 = 200

2.脂肪 = 0.5g

3.碳水化合物 = 30 克

假设使用了额外的缩进或制表符——那么 YAML 对象的整个含义就会改变,如下所示。 因此,当涉及到您的 YAML 文件时,我们需要小心缩进和制表符。

YAML 基础的重要方面

创建 YAML 文件时需要关注的其他方面包括:

  • SCALAR - 您可以 date 以“YYYY-MM-DD”的格式提及并将其分配给 date 变量。
  • COLLECTIONS — 假设您提到了帐单地址,并且送货地址与帐单地址相同。 然后,您在帐单地址前面使用 & 后跟一个 ID。 如果您需要根据送货地址复制相同的地址,则使用该 * 符号以及帐单地址中使用的相同 ID。 这有助于数据的冗余。
  • 多行集合——假设你有一个地址行,它有多行并且需要保持格式。 然后使用 | (竖线)符号。
  • LISTS/DICTIONARIES — 上一节介绍了列表和字典。
  • 多行格式 - 假设您有一个长字符串值并且需要在多行中提及维护格式,然后您使用 > 前面提到的符号。

Kubernetes 中的 YAML 使用

了解了 YAML 文件的优势和基本构建块之后,让我们了解 YAML 在 Kubernetes 中的使用方式。 Kubernetes 资源以声明方式创建,因此使用 YAML 文件。 Kubernetes 资源(例如 pod、服务和部署)是使用 YAML 文件创建的。

以下示例帮助解释使用 YAML 创建部署资源。 注意: 此示例包含基本规范和高级规范。

以下是各个领域的简要说明:

  • replicas — 告诉 Kubernetes 在部署期间要创建多少个 pod。 修改此字段是扩展容器化应用程序的一种简单方法。
  • spec.strategy.type — 假设有另一个版本的应用程序需要部署,并且在部署阶段,您需要在不导致中断的情况下进行更新。 滚动更新策略 允许 Kubernetes 通过一次更新一个 pod 来更新服务,而不会导致中断 。
  • spec.strategy.rollingUpdate.maxUnavailable — 滚动更新期间不可用的最大 pod 数。
  • spec.strategy.rollingUpdate.maxSurge — 可以调度的最大 pod 数高于所需的 pod 数。
  • spec.minReadySeconds — 一个可选的整数,描述最小秒数,新的 pod 应该准备好,没有任何容器崩溃才能被认为是可用的。
  • spec.revisionHistoryLimit — 一个可选的整数属性,可用于明确告诉 Kuberneres 在任何给定时间保留多少旧 ReplicaSet。
  • spec.template.metadata.labels — 为部署规范添加标签。
  • spec.selector — 一个可选对象,告诉 Kubernetes 部署控制器仅针对与指定标签匹配的 pod。 因此,要仅针对具有“app”和“deployer”标签的 pod,您可以对我们的部署 YAML 进行以下修改。

从各个字段的解释中可以看出,YAML 文件确实可以以声明式的方式帮助你维护和控制 Kubernetes 资源。

YAML 正在被视为配置文件的事实上的标准。

 


   
762 次浏览       16
相关文章

聊聊云原生和微服务架构
Serverless:微服务架构的终极模式
如何实现微服务架构下的分布式事务?
微服务下的数据架构设计
相关文档

微服务和云原生应用
微服务架构原理和设计方法
0到3000万用户微服务之旅
微服务在微信后台的架构实践
相关课程

微服务架构设计与实践
领域驱动+微服务架构设计
云计算、微服务与分布式架构
云平台与微服务架构设计

最新活动计划
MBSE(基于模型的系统工程)4-18[北京]
自然语言处理(NLP) 4-25[北京]
基于 UML 和EA进行分析设计 4-29[北京]
以用户为中心的软件界面设计 5-16[北京]
DoDAF规范、模型与实例 5-23[北京]
信息架构建模(基于UML+EA)5-29[北京]
 
 
最新文章
云原生架构概述
K8S高可用集群架构实现
容器云管理之K8S集群概述
k8s-整体概述和架构
十分钟学会用docker部署微服务
最新课程
云计算、微服务与分布式架构
企业私有云原理与构建
基于Kubernetes的DevOps实践
云平台架构与应用(阿里云)
Docker部署被测系统与自动化框架实践
更多...   
成功案例
北京 云平台与微服务架构设计
通用公司GE Docker原理与实践培训
某军工研究单位 MDA(模型驱动架构)
知名消费金融公司 领域驱动设计
深圳某汽车企业 模型驱动的分析设计
更多...