YAML文件格式语法

yaml基础

学习k8s就不得不学习下yaml语法了
yaml是一种简洁的非标记语言,YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。

YAML语法规则:

大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
”#” 表示注释,从这个字符一直到行尾,都会被解析器忽略
字符串可以不用引号标注
列表项,通过减号“-”加一个空格,多个项使用同样缩进级别做为同一列表部分
map结构里面的键值对(key/value)用冒号“:”来分割
数组用“[]”包括起来,hash用“{}”来包括

以上就是yaml的语法

在Kubernetes中,只需要知道两种结构类型即可:

Lists
Maps
scalar  在k8s中不使用此类型

使用YAML用于K8s的定义带来的好处包括:

便捷性:不必添加大量的参数到命令行中执行命令
可维护性:YAML文件可以通过源头控制,跟踪每次操作
灵活性:YAML可以创建比命令行更加复杂的结构

YAML Maps

map,散列表 ,使用冒号(:)表示键值对,同一缩进的所有键值对属于一个map,例如:

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: Reconcile
  name: kubernetes-dashboard
  namespace: kube-system

如果要把多个kind写于一个文件需要用到

--- 为可选的分隔符 ,当在一个文件中定义多个结构时需要

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: Reconcile
  name: kubernetes-dashboard
  namespace: kube-system
  #以上labels,name,namespace为同一级,因为都缩进了相同的空格
---                             #分隔符,因为此yaml文件定义了二个不同的kind类型
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile

YAML Lists

List 数组,使用连字符(-)表示,例如:

 volumeMounts:
    - name: kubernetes-dashboard-certs
      mountPath: /certs
    - name: tmp-volume
      mountPath: /tmp

数据结构嵌套

map嵌套map
apiVersion: v1
kind: ConfigMap
metadata:    #map嵌套map
  labels:       #map嵌套map
    k8s-app: kubernetes-dashboard    #map嵌套map
    # Allows editing resource and makes sure it is created first.
    addonmanager.kubernetes.io/mode: EnsureExists
  name: kubernetes-dashboard-settings
  namespace: kube-system
list嵌套list

在k8s的yaml中比较少见
list嵌套map

volumes:    #map
      - name: kubernetes-dashboard-certs   #list   map嵌套list
        secret:       #map   list嵌套map
          secretName: kubernetes-dashboard-certs
      - name: tmp-volume
        emptyDir: {}
Python的yaml文件格式是一种用于序列化和反序列化数据的文件格式YAML是一种人类可读的数据序列化格式,它使用简洁的语法来表示数据结构。YAML文件可以包含各种数据类型,包括字符串、数字、布尔值、列表和字典等。在Python中,可以使用yaml模块来读取和保存yaml文件。通过导入yaml模块,可以使用官方的导入方法来兼容Windows和Linux平台。使用yaml模块的load函数可以读取yaml文件的内容,并将其转换为Python对象。例如,可以使用以下代码读取一个yaml文件并打印其内容: ```python import yaml with open("test.yaml", "r") as yaml_file: data = yaml.load(yaml_file) print("data_type:", type(data)) print("data_content:\n", data) ``` 这段代码使用了yaml模块的load函数来读取test.yaml文件的内容,并将其转换为Python对象。然后,可以通过打印data的类型和内容来查看读取到的数据。 #### 引用[.reference_title] - *1* [yaml——python数据序列化文件格式解析包的介绍和使用](https://blog.csdn.net/ZH13114130815/article/details/126930216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python基础——python解析yaml类型文件](https://blog.csdn.net/weixin_54696666/article/details/115034027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值