Kubernetes YAML 学习,提升编写能力
DevOps技术栈
共 12325字,需浏览 25分钟
· 2021-04-29
YAML 是一种非常简洁/强大/专门用来写配置文件的语言!
YAML 全称是 ”YAML Ain’t a Markup Language” 的递归缩写,该语言的设计参考了 JSON / XML 和 SDL 等语言,强调以数据为中心,简洁易读,编写简单。
YAML 语法特性
学过编程的人理解起来应该非常容易
语法特点
大小写敏感
通过缩进表示层级关系
禁止使用tab缩进,只能使用空格键
缩进的空格数目不重要,只要相同层级左对齐
使用#表示注释
# yaml
languages:
- Ruby
- Perl
- Python
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
# Json
{
languages: [
'Ruby',
'Perl',
'Python'
],
websites: {
YAML: 'yaml.org',
Ruby: 'ruby-lang.org',
Python: 'python.org',
Perl: 'use.perl.org'
}
}
数据结构
对象: 键值对的字典
数组: 一组按次序排列的列表
纯量: 单个的且不可再分的值
# 纯量
hello
# 数组
- Cat
- Dog
- Goldfish
# 对象
animal: pets
引号区别
单引号(''): 特殊字符作为普通字符串处理
双引号(""): 特殊字符作为本身想表示的意思
# 单引号
name: 'Hi,\nTom'
# 双引号
name: "Hi,\nTom"
内置类型列表
# YAML允许使用个感叹号(!)强制转换数据类型
# 单叹号通常是自定义类型,双叹号是内置类型
money: !!str
123
date: !Boolean
true
对应编号 | 内置类型 | 解释说明 |
---|---|---|
1 | !!int | 整数类型 |
2 | !!float | 浮点类型 |
3 | !!bool | 布尔类型 |
4 | !!str | 字符串类型 |
5 | !!null | 空值 |
6 | !!set | 集合 |
7 | !!seq | 列表 |
8 | !!map | 键值表 |
9 | !!binary | 字符串类型 |
10 | !!timestamp | 日期时间类型 |
11 | !!omap /!!pairs | 键值列表 |
YAML 中的纯量
纯量是最基本的且不可再分的值
字符串
# 不适用引号
name: Tom
# 使用单引号
name: 'Tom'
# 使用双引号
name: "Tom"
布尔值
debug: true
debug: false
数字
12 # 十进制整数
014 # 八进制整数
0xC #十六进制整数
13.4 #浮点数
1.2e+34 #指数
.inf #无穷大
Null
date: ~
date: null
时间
# 使用iso-8601标准表示日期
date: 2018-01-01t16:59:43.10-05:00
YAML 特殊类型
日常使用中基本不会用到的类型
文本块
# 注意“|”与文本之间须另起一行
# 使用|标注的文本内容缩进表示的块,可以保留块中已有的回车换行
value: |
hello
world!
# 输出结果
# hello 换行 world!!
# +表示保留文字块末尾的换行
# -表示删除字符串末尾的换行
value: |
hello
value: |-
hello
value: |+
hello
# 输出结果
# hello\n hello hello\n\n
# 注意“>”与文本之间的空格
# 使用>标注的文本内容缩进表示的块,将块中回车替换为空格最终连接成一行
value: > hello
world!
# 输出结果
# hello 空格 world!
锚点与引用
# 复制代码注意*引用部分不能追加内容
# 使用&定义数据锚点,即要复制的数据
# 使用*引用锚点数据,即数据的复制目的地
name: &a yaml
book: *a
books:
- java
- *a
- python
# 输出结果
book: yaml
books:[java, yaml, python]
YAML 实例说明
光说不练假把式 => JS-Yaml 官网实例地址 https://nodeca.github.io/js-yaml
# Collection Types #############################################################
################################################################################
# http://yaml.org/type/map.html -----------------------------------------------#
map:
# Unordered set of key: value pairs.
Block style: !!map
Clark: Evans
Ingy: döt Net
Oren: Ben-Kiki
Flow style: !!map { Clark: Evans, Ingy: döt Net, Oren: Ben-Kiki }
# http://yaml.org/type/omap.html ----------------------------------------------#
omap:
# Explicitly typed ordered map (dictionary).
Bestiary: !!omap
- aardvark: African pig-like ant eater. Ugly.
- anteater: South-American ant eater. Two species.
- anaconda: South-American constrictor snake. Scaly.
# Etc.
# Flow style
Numbers: !!omap [one: 1, two: 2, three: 3]
# http://yaml.org/type/pairs.html ---------------------------------------------#
pairs:
# Explicitly typed pairs.
Block tasks: !!pairs
- meeting: with team.
- meeting: with boss.
- break: lunch.
- meeting: with client.
Flow tasks: !!pairs [meeting: with team, meeting: with boss]
# http://yaml.org/type/set.html -----------------------------------------------#
set:
# Explicitly typed set.
baseball players: !!set
? Mark McGwire
? Sammy Sosa
? Ken Griffey
# Flow style
baseball teams: !!set { Boston Red Sox, Detroit Tigers, New York Yankees }
# http://yaml.org/type/seq.html -----------------------------------------------#
seq:
# Ordered sequence of nodes
Block style: !!seq
- Mercury # Rotates - no light/dark sides.
- Venus # Deadliest. Aptly named.
- Earth # Mostly dirt.
- Mars # Seems empty.
- Jupiter # The king.
- Saturn # Pretty.
- Uranus # Where the sun hardly shines.
- Neptune # Boring. No rings.
- Pluto # You call this a planet?
Flow style: !!seq [
Mercury,
Venus,
Earth,
Mars, # Rocks
Jupiter,
Saturn,
Uranus,
Neptune, # Gas
Pluto,
] # Overrated
# Scalar Types #################################################################
################################################################################
# http://yaml.org/type/bool.html ----------------------------------------------#
bool:
- true
- True
- TRUE
- false
- False
- FALSE
# http://yaml.org/type/float.html ---------------------------------------------#
float:
canonical: 6.8523015e+5
exponentioal: 685.230_15e+03
fixed: 685_230.15
sexagesimal: 190:20:30.15
negative infinity: -.inf
not a number: .NaN
# http://yaml.org/type/int.html -----------------------------------------------#
int:
canonical: 685230
decimal: +685_230
octal: 02472256
hexadecimal: 0x_0A_74_AE
binary: 0b1010_0111_0100_1010_1110
sexagesimal: 190:20:30
# http://yaml.org/type/merge.html ---------------------------------------------#
merge:
- &CENTER { x: 1, y: 2 }
- &LEFT { x: 0, y: 2 }
- &BIG { r: 10 }
- &SMALL { r: 1 }
# All the following maps are equal:
- # Explicit keys
x: 1
y: 2
r: 10
label: nothing
- # Merge one map
<<: *CENTER
r: 10
label: center
- # Merge multiple maps
<<: [*CENTER, *BIG]
label: center/big
- # Override
<<: [*BIG, *LEFT, *SMALL]
x: 1
label: big/left/small
# http://yaml.org/type/null.html ----------------------------------------------#
null:
# This mapping has four keys,
# one has a value.
empty:
canonical: ~
english: null
~: null key
# This sequence has five
# entries, two have values.
sparse:
- ~
- 2nd entry
-
- 4th entry
- Null
# http://yaml.org/type/str.html -----------------------------------------------#
string: abcd
# http://yaml.org/type/timestamp.html -----------------------------------------#
timestamp:
canonical: 2001-12-15T02:59:43.1Z
valid iso8601: 2001-12-14t21:59:43.10-05:00
space separated: 2001-12-14 21:59:43.10 -5
no time zone (Z): 2001-12-15 2:59:43.10
date (00:00:00Z): 2002-12-14
# JavaScript Specific Types ####################################################
################################################################################
# https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp
regexp:
simple: !!js/regexp foobar
modifiers: !!js/regexp /foobar/mi
# https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/undefined
undefined: !!js/undefined ~
# https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
function: !!js/function >
function foobar() {
return 'Wow! JS-YAML Rocks!';
}
# Custom types #################################################################
################################################################################
# JS-YAML allows you to specify a custom YAML types for your structures.
# This is a simple example of custom constructor defined in `js/demo.js` for
# custom `!sexy` type:
#
# var SexyYamlType = new jsyaml.Type('!sexy', {
# kind: 'sequence',
# construct: function (data) {
# return data.map(function (string) { return 'sexy ' + string; });
# }
# });
#
# var SEXY_SCHEMA = jsyaml.Schema.create([ SexyYamlType ]);
#
# result = jsyaml.load(yourData, { schema: SEXY_SCHEMA });
foobar: !sexy
- bunny
- chocolate
- END -
公众号后台回复「加群」加入一线高级工程师技术交流群,一起交流进步。
推荐阅读 小团队如何从零搭建一个自动化运维体系? 让运维简单高效,轻松搞定运维管理平台 通过Nginx来实现禁止国外IP访问网站 2021年的DevOps趋势预测 Kubernetes+Helm+Jenkins 自动化发布项目 5个面试的关键技巧,助你拿到想要的offer! 搭建一套完整的企业级 K8s 集群(v1.20,kubeadm方式) 搭建一套完整的企业级 K8s 集群(v1.20,二进制方式)
点亮,服务器三年不宕机
评论
科普:深度学习训练,不同预算GPU选购指南
以下文章来源于微信公众号:DeepHub IMBA作者:Mike Clayton本文仅用于学术分享,如有侵权,请联系后台作删文处理导读购买显卡第一个要考虑的问题是什么?当然是预算。本文提供了不同预算的显卡选购指南,希望能对各位读者有所帮助。在进行机器学习项目时,特别是在处理深度学习和神经网络时,最好
机器学习初学者
0
【深度学习】人人都能看懂的LSTM
熟悉深度学习的朋友知道,LSTM是一种RNN模型,可以方便地处理时间序列数据,在NLP等领域有广泛应用。在看了台大李宏毅教授的深度学习视频后,特别是介绍的第一部分RNN以及LSTM,整个人醍醐灌顶。本文就是对视频的记录加上了一些个人的思考。0. 从RNN说起循环神经网络(Recurrent Neur
机器学习初学者
0
学习开放日:开放复杂科学、AI+X 海量学习资源!
Datawhale干货 学习开放日:4月27-28日1. 什么是学习开放日?以AI为代表的技术突飞猛进,人类知识森林快速扩张,仅凭一人之力不仅难以覆盖,更是难以串联知识线索。唯有像蚂蚁探索最优路径一样,我们才能在信息爆炸的知识森林中探索出更好的方向!因此,今年集智斑图联合国内最
Datawhale
1
只写后台管理的前端要怎么提升自己
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群本人写了五年的后台管理。每次面试前就会头疼,因为写的页面除了表单就是表格。抱怨过苦恼过也后悔过(虽然我现在已经心安理得的摆烂),但是站在现在的时间点
程序员成长指北
1
【深度学习】图解自注意力机制(Self-Attention)
一、注意力机制和自注意力机制的区别Attention机制与Self-Attention机制的区别传统的Attention机制发生在Target的元素和Source中的所有元素之间。简单讲就是说Attention机制中的权重的计算需要Target来参与。即在Encoder-Decoder 模型中,At
机器学习初学者
0
【第128期】提升编程效率VSCode变量命名插件推荐
概述 在编程的世界里,一个好的变量名不仅能够提升代码的可读性,还能反映出程序员的专业水平。Visual Studio Code(VSCode)作为一个广受欢迎的代码编辑器,拥有丰富的插件生态系统,其中不乏能够帮助我们高效命名变量的工具。今天,我们就来介绍几款VSCode上能够提升变量命名效率的插件
前端微服务
0
提升思维,格局就打开了
每个人,都需要打破困住自己的牢笼不是因为很厉害才会变得快乐和自由而是要首先勇于冲破那个困住你的牢笼先让自己自由了才会渐渐变得快乐才会找回真正的自己才会变得越来越厉害.🌿哲学家叔本华说:世界上最大的监狱,是人的思维。回想我们过往犯过的错误,或者失去的机会,你会发现:绝大多数都是“思维牢笼”带来的,人一
小Q聊产品
1
文末送书 | 大模型时代下如何学习云原生
《containerd 原理剖析与实战》新书内购中,点击阅读原文,限时 69.9 元购买。文末免费赠书大模型与云原生近年来,大语言模型的热度可谓是愈发高涨,尤其是今年年初 Sora 的出现,更是让全球再次看到了AIGC 的巨大威力。Sora 生成实例视频---几头巨大的长毛猛犸踏着积雪的草地而来在当
云原生实验室
10