Kubernetes YAML 编写 讲解

简介: Kubernetes YAML 编写 讲解

Kubernetes YAML 编写 讲解

网络异常,图片无法展示
|

YAML 是一种非常简洁/强大/专门用来写配置文件的语言!

YAML 全称是 ”YAML Ain’t a Markup Language” 的递归缩写,该语言的设计参考了 JSON / XML 和 SDL 等语言,强调以数据为中心,简洁易读,编写简单。

YAML 语法特性

学过编程的人理解起来应该非常容易

语法特点

  • 大小写敏感
  • 通过缩进表示层级关系
  • 禁止使用 tab 缩进,只能使用空格键
  • 缩进的空格数目不重要,只要相同层级左对齐
  • 使用 #表示注释
# yamllanguages:    - Ruby    - Perl    - Pythonwebsites:    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: !!str123
date: !Booleantrue


YAML 中的纯量

纯量是最基本的且不可再分的值

字符串

# 不适用引号name: Tom
# 使用单引号name: 'Tom'
# 使用双引号name: "Tom"

布尔值

debug: truedebug: 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: > helloworld!
# 输出结果# hello 空格 world!

锚点与引用

# 复制代码注意*引用部分不能追加内容# 使用&定义数据锚点,即要复制的数据# 使用*引用锚点数据,即数据的复制目的地name: &a yamlbook: *abooks:   - java   - *a   - python
# 输出结果book: yamlbooks:[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



相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes 安全 网络协议
Kubernetes实用指令:通过dry-run生成部署与服务的YAML配置
总结起来, 使用 ` -- dry—run = client `- o yam l' 参数能够帮助用户预览 Kubernetes 资源定义并且确保它们符合预期效果且没有立即影响现有集群断层结构. 这种做法对于新手学习 K8s 资源规范、测试新策略或者审核现有策略都非常有效率与安全.
873 4
|
JSON Kubernetes API
深入理解Kubernetes配置:编写高效的YAML文件
深入理解Kubernetes配置:编写高效的YAML文件
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
676 2
k8s学习--YAML资源清单文件托管服务nginx
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
611 3
|
Kubernetes Docker Perl
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
897 1
|
Kubernetes API 容器
在K8S中,deployment的yaml文件如何编写呢?
在K8S中,deployment的yaml文件如何编写呢?
|
Kubernetes 应用服务中间件 nginx
在K8S中,deploy的yaml如何编写?
在K8S中,deploy的yaml如何编写?
|
Kubernetes API 容器
Kubernetes(K8S) yaml 介绍
Kubernetes(K8S) yaml 介绍
288 0
|
12月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
917 1
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
647 89

推荐镜像

更多