首页 > 其他分享 >K8S:Yaml

K8S:Yaml

时间:2024-09-04 16:25:42浏览次数:7  
标签:Map 缩进 name labels List Yaml Pod K8S

学习自:

​K8s中yaml文件详解(超详细)​_yaml list-CSDN博客

0、前言

YAML文件是一种类似JSON的配置文件,相比JSON,YAML使用起来更简洁、强大、方便。

它实质上是一种通用的数据串行化格式。

1、语法规则

  • 区分大小写
  • 缩进表明层级同一缩进代表同一层级
  • 只允许空格缩进,不允许TAB;
  • 可以缩进任意空格数,只要保证同级的缩进空格数一样
  • #注释
  • 两种结构类型:Map和List

Map:键值对

K:V样式来表示键值对信息,例如:

apiVersion: V1
kind: Pod

其中V也可以是另一个Map

apiVersion: v1
kind: Pod
metadata:
  name: kube100-site
  labels:
    app:web

该Yaml文件中,metadata这个K对应的V为一个Map,嵌套的labels的V也是一个Map。

实际使用中可以根据情况进行多层嵌套。

YAML文件根据缩进数来知道内容间的关联,只要保证同一级内容的缩进空格数一致即可。例如,name和labels是同级缩进,因此YAML处理器知道它们属于同一Map。而app由于在labels下缩进更大,因此app是labels的V。

List:列表、数组

List的标志是缩进的破折号(-),一个破折号就代表一个List中的一个元素:

city:
  -beijing
  -shanghai
  -shenzhen
  -guangzhou

这里的YAML文件在JSON格式下,就表示为:

{
  "args":["beijing","shanghai","shenzhen","guangzhou"]
}

有时候会存在List的元素为Map,Map的V为List的情况。区分依据为:

  • 一个破折号就代表一个List的元素;
  • 一个破折号下边跟了多个K:V,说明这多个K:V共同构成了一个Map,这个Map就是List的这个元素

从一个破折号到下个破折号之间的所有项都属于同一个List元素,新的破折号则代表新的List元素;

例如

apiVersion: v1
kind: Pod
metadata:
  name: kube100-site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
    - name: flaskapp-demo
      image: jcdemo/flaskapp
      ports: 8080

这个YAML文件中,containers的V就是由两个List元素组成的,分别是上图标红、标蓝的部分,而这两个List元素又各是一个Map。

如果用json文件表示,写为:

{
    ……
    "spec":{
        "containers":[{"name":"front-end","image":"nginx","ports":{["containerPort":0]}},
              {"name":"flaskapp-demo","image":"jcdemo/flaskapp","ports":8080}] }

2、容器Pod的Yaml文件

学习自:[k8s] 常见yml配置和详细解释_容器初始化配置yaml-CSDN博客

apiVersion: v1
kind: Pod
metadata:
  name: my-pod  # Pod 的名称
  labels:
    app: my-app  # Pod 的标签,可用于选择器和服务发现
spec:
  containers:
  - name: my-container  # 容器的名称
    image: nginx  # 使用的容器镜像
    ports:
    - containerPort: 80  # 容器内部暴露的端口号
      protocol: TCP  # 端口的协议类型
    resources:  # 容器所需的资源限制和需求
      limits:
        cpu: "0.5"  # CPU 使用上限
        memory: "256Mi"  # 内存使用上限
      requests:
        cpu: "0.2"  # CPU 最小需求
        memory: "128Mi"  # 内存最小需求
    env:  # 容器的环境变量
    - name: ENV_VAR1
      value: value1
    - name: ENV_VAR2
      valueFrom:
        secretKeyRef:
          name: my-secret  # 引用的 Secret 对象的名称
          key: secret-key  # 从 Secret 对象中获取的键名
    volumeMounts:  # 容器的挂载路径
    - name: data-volume  # 挂载的卷的名称
      mountPath: /data  # 挂载的路径
  volumes:  # Pod 的卷
  - name: data-volume  # 卷的名称
    emptyDir: {}  # 空的卷,生命周期与 Pod 相关联
    
#可以添加 metadata.annotations 字段用于存放其他注释信息
metadata:
  annotations:
    description: This is a sample Pod configuration file.  # 描述该配置文件的注释

 

标签:Map,缩进,name,labels,List,Yaml,Pod,K8S
From: https://www.cnblogs.com/ShineLeBlog/p/18395928

相关文章

  • k8s创建nfs+StorageClass
    什么是StorageClass前置准备nfsservernfsserver地址:192.168.2.152nsfpath:/datak8s集群集群版本:1.22容器:containerd1.6创建rbac参考https://github.com/kubernetes-retired/external-storage/blob/master/nfs-client/deploy/rbac.yamlapiVersion:v1kind:Ser......
  • K8S安装部署
    一、准备工作在vmware中安装,创建三台centos服务器主机ip配置master192.168.42.1884核,6g内存,40g硬盘node1192.168.42.1892核,2g内存,20g硬盘node2192.168.42.1902核,2g内存,20g硬盘二、环境配置1、修改hosts配置(所有节点执行)vim/etc/hosts192.168.42.188master192.168.4......
  • K8s使用cephfs(静态和动态两种)
    一、K8s节点安装ceph-commonCephFS是Ceph中基于RADOS(可扩展分布式对象存储)构建,通过将文件数据划分为对象并分布到集群中的多个存储节点上来实现高可用性和可扩展性。首先所有k8s节点都需要安装ceph-common工具:yum-yinstallepel-releaseceph-common二、静态供给方......
  • k8s核心组件etcd备份与恢复
    etcd在k8s集群中的身份以及重要性介绍在Kubernetes(K8s)集群中,etcd扮演着至关重要的角色,它是集群状态存储的核心组件。以下是etcd在K8s集群中的角色、作用及其重要性的详细说明:角色:etcd是K8s集群的“大脑”,存储和管理了整个集群的状态信息。重要性:etcd是K8s集群中不可或缺......
  • 七,Spring Boot 当中的 yaml 语法使用
    七,SpringBoot当中的yaml语法使用文章目录七,SpringBoot当中的yaml语法使用1.yaml的介绍2.yaml基本语法3.yaml数据类型4.学习测试的准备工作4.1yaml字面量4.2yaml数组4.3yaml对象5.yaml使用细节和注意事项6.总结:7.最后:1.yaml的介绍yaml......
  • 常见的数据交换格式:JSON、Proto、XML和YAML
    原创控制工程研习proto、json、xml和yaml是四种常见的数据交换格式,它们的全称分别是:ProtocolBuffers(Proto)、JSON(JavaScriptObjectNotation)、XML(ExtensibleMarkupLanguage)和YAML(YAMLAin'tMarkupLanguage)。ProtocolBuffers(Proto)ProtocolBuffers......
  • 批量维护工具ansible之yaml与剧本playbook
    一.简介ansible的剧本playbook采用yaml语法,通过yaml语法可以轻松地表示和定义复杂的任务和配置,无论是单台还是多台服务器的管理,ansible都能够提供统一的语法来描述和执行操作,能快速地应对变更、部署和升级。二.yaml语法基本0.运行AnsiblePlaybookansible-playbookdeploy.yml1.YAM......
  • k8s 配置管理中心Configmap 和 Secret 实现微服务配置管理
    一、Configmap1.1关于ConfigmapConfigmap是k8s中的资源对象,用于保存非机密性的配置的,数据可以用key/value键值对的形式保存,也可以使用文件的形式保存。 k8s中的pod(服务)都有自己的配置文件,如果需要扩容时,为保证服务的一致性,可以将Configmap做成volume,并挂载到新扩容的服务上。1.2......
  • 【K8s】专题十二(4):Kubernetes 存储之 StorageClass
    本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口Linux专栏 | Docker专栏 | Kubernetes专栏往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决方法【Docker】(全网首发)Kyli......
  • k8s中pod获取宿主机IP地址
    在Pod内部的Java环境中,你可以通过KubernetesAPI或KubernetesDownwardAPI来获取节点的IP地址。以下是几种方法来实现这一点:个人使用的第一种方法1:使用KubernetesDownwardAPI如果你已经在Pod配置中使用了DownwardAPI,将节点的IP地址注入到环境变量中,你可......