yaml 数组_【大强哥-k8s从入门到放弃04】Yaml语法解析

2023-11-08

依然小福利

【Python-零基础入门】2020感谢走进我的生命,Python!(已更新至206集)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com

一、K8S名称空间

嗯,名称空间是个小插曲,yaml在下面

1、Yaml文件创建名称空间

1.编写Yaml文件
# vim namespace.yml
---
apiVersion: v1
kind: Namespace
metadata:
 name: ns-monitor
 labels:
name: ns-monitor
uid: 8888

2. 创建资源
# kubectl apply -f namespace.yml
namespace/ns-monitor created

3. 查看资源
# kubectl get namespace
NAME            STATUS   AGE
default         Active   67d
kube-public     Active   67d
kube-system     Active   67d
ns-monitor      Active   14s

2、命令行方式创建名称空间

# kubectl create ns testns

二、Yaml语法解析

1、YAML介绍

除了某些强制性的命令,如:kubectl run或者expose等,会隐式创建rc或者svc,k8s还允许通过配置文件的方式来创建这些操作对象。
通常,使用配置文件的方式会比直接使用命令行更可取,因为这些文件可以进行版本控制,而且文件的变化和内容也可以进行审核,当使用及其复杂的配置来提供一个稳健、可靠和易维护的系统时,这些点就显得非常重要。
在声明定义配置文件的时候,所有的配置文件都存储在YAML或者JSON格式的文件中并且遵循k8s的资源配置方式。
kubectl可以创建、更新、删除和获得API操作对象,当前apiVersion、kind和name会组成一个API Path以供kubectl来调用。
YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。kubernetes中用来定义YAML文件创建Pod和创建Deployment等资源。

2、使用YAML做K8s资源定义的好处

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

3、YAML语法规则

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格
  • 缩进的空格数不重要,只要相同层级的元素左侧对齐即可
  • #表示注释,从这个字符一直到行尾,都会被解析器忽略
  • 在同一个yaml配置文家内可以同时定义多个资源

4、yaml结构类型

在 k8s 中,只需要知道两种结构类型:

  • Lists
  • Maps

4.1、YAML Maps

Map指的是字典,即一个Key:Value 的键值对信息。

例如:

---
apiVersion: v1
kind: Pod
"---"
为可选的分隔符 ,当需要在一个文件中定义多个结构的时候需要使用。上述内容表示有两个键apiVersion和kind,分别对应的值为v1和Pod。

Maps的value既能够对应字符串也能够对应一个Maps

例如:

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

注:上述的YAML文件中,metadata这个KEY对应的值为一个Maps,而嵌套的labels这个KEY的值又是一个Map。实际使用中可视情况进行多层嵌套。

YAML处理器根据行缩进来知道内容之间的关联。上述例子中,使用两个空格作为缩进,但空格的数据量并不重要,只是至少要求一个空格并且所有缩进保持一致的空格数 。例如,name和labels是相同缩进级别,因此YAML处理器知道他们属于同一map;它知道app是lables的值因为app的缩进更大。

4.2、YAML Lists

List即列表,就是数组。例:

args:
    - beijing
    - shanghai
  - shenzhen
  - guangzhou

可以指定任何数量的项在列表中,每个项的定义以连字符(-)开头,并且与父元素之间存在缩进。

在JSON格式中,表示如下:

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

当然Lists的子项也可以是Maps,Maps的子项也可以是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

如上述文件所示,定义一个containers的List对象,每个子项都由name、image、ports组成,每个ports都有一个KEY为containerPort的Map组成,转成JSON格式文件:

{
 "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": [{
        "containerPort": "5000"
      }]
    }]
 }
}

k8s的pod中运行容器,一个包含简单的Hello World容器的pod可以通过YAML文件这样来定义:

apiVersion: v1
kind: Pod  deployment service
metadata:  
  name: hello-world 

spec:  
  restartPolicy: Never
  containers:
  - name: hello
    image: "ubuntu:14.04"   
    command: ["/bin/echo","hello","world"]

创建的pod名为metadata.name的值:hello-world,该名称必须是唯一的。

spec的内容为该pod中,各个容器的声明

restartPolicy:Never 表示启动后运行一次就终止这个pod。
containers[0].name 为容器的名字。
containers[0].image 为该启动该容器的镜像。
containers[0].command 相当于Dockerfile中定义的Entrypoint,可以通过下面的方式来声明cmd的参数:
command: ["/bin/echo"]
args: ["hello","world"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

yaml 数组_【大强哥-k8s从入门到放弃04】Yaml语法解析 的相关文章

  • win11系统激活修复

    打开终端 输入以下代码 irm https massgrave dev get iex 在弹出的窗口中 选择1即可
  • jquery 中 $(".XXX") 和 $("#XXX")的区别

    XXX 为获取类名为XXX的类 XXX 为获取id为XXX的标签
  • cesium 申请秘钥(Cesium.Ion.defaultAccessToken/access_token)

    https cesium com ion signin tokens 然后注册 登录 复制使用 Cesium Ion defaultAccessToken 你的 token 案例
  • Delphi TIdTCPClient的使用问题

    开发环境Delphi10 3 3 使用TIdTCPClient写了一个客户端小例子 使用网络调试助手作为服务端 设置接收到客户端信息会自动返回数据 通讯模式 短连接 客户端连接 发送 等待数据 接收 断开 此例子中客户端不知道返回信息长度是
  • Android动态界面开发框架Tangram使用完整教程(转载)

    原文链接 https blog csdn net u013541140 article details 89517186 Github地址 https github com jimmysuncpt TangramDemo
  • Unity3D设置天空盒skybox

    由于又忘记了 就写一篇博客做下笔记 此方法适用于5 X版本和2017版本 之后是否可行未测试 设置天空盒有两种方式 一 在当前相机上添加skybox 二 在当前场景上添加skybox 两种方式的结果是一样的 第一种方式的优势在于 如果 世界
  • elementUI +vue表单验证 后台请求动态验证

    elementUI vue表单验证 后台请求动态验证 在
  • grub 配置文件

    DO NOT EDIT THIS FILE It is automatically generated by grub mkconfig using templates from etc grub d and settings from e
  • Python刷题记录(91-95)

    Python刷题记录 91 95 题目来源PTA平台 PAT Basic Level Practice 中文 TOC 1091 N 自守数 如果某个数 K 的平方乘以 N 以后 结果的末尾几位数等于 K 那么就称这个数为 N 自守数 例如
  • C++socket编程(三):3.1 TCP/IP协议特点

    1 TCP是面向连接的 就是当你想要开始传递数据的时候 之前应该先把连接建立起来 它不像UDP协议 可以直接发送数据 2 TCP提供可靠的数据传输 实现了丢失重传 RTT的估算 3 TCP通过给所发送数据的每一个段管理一个序号进行排列 每一
  • int a 和int*a = new int 的区别

    int a 是分配在栈上的 会自动地释放 int a new int 分配在堆上面的 需要程序员手动地释放不然会造成内存的泄漏
  • 【git】在删除某一commit时出现error: The following untracked working tree files would be overwritten by checkou

    问题 error The following untracked working tree files would be overwritten by checkout test1 gitignore test1 matplotlib pl
  • redis学习04-jedis和redisson

    jedis是什么 jedis是为了方便在java代码中让java程序员操作redis命令而产生的 redisson是什么 redisson是为了更好的让java程序员能够按照正常书写java代码中的那些集合类的思维去操作redis 离开re
  • react搭建websocket通信架构

    前言 随着跨端技术的发展 前端开发职能不再局限于浏览器 而是具备了很多客户端开发的能力 比如桌面应用框架Electorn 移动App框架React native 一般而言 前端同学对http协议非常熟悉 在平时的工作中使用http与后端通信
  • MySQL主从自增列AUTO_INCREMENT不同步

    环境信息 MySQL版本 5 7 32 架构 一主 192 168 1 110 3306 一从 192 168 1 111 3306 binlog on binlog row image full binlog format row gti
  • 《面试准备》C++工厂模式

    工厂模式 参考 https www cnblogs com huiz p 8232783 html 简单工厂模式 在工厂类做判断 从而创建相应的产品 当增加产品时需要修改工厂类 include
  • 购物车按钮

    先看效果 再看代码
  • Java-Pattern和Matcher

    一 Pattern 有经验的小伙伴们肯定知道 我们的字符串提供了matches reg 方法用来判断该字符串是否满足正则表达式 而Pattern只是创建了一个正则表达式 那么为什么选择用Pattern而不是字符串的matches呢 1 1使

随机推荐

  • 查看进程对应的所有线程绑核情况

    1 top gt 键盘f F gt 上下键选中P nTH 空格确认选中 esc退出 2 终端输入top H p pid
  • 【golang开发中的常见错误】【配置 .gitconfig,让go mod tidy速度飞起】

    问题一 invalid pseudo version preceding tag v1 0 0 not found 远端GIT仓库删除tag后的报错 invalid pseudo version preceding tag v1 0 0 n
  • 基于LabVIEW的PID算法解读

    记录一下 方便以后翻阅 下图是基本的PID算法实现方式 以及实现PID控制器所需的假设和转换 为实现PID控制器 LabVIEW要求算法对输入信号进行采样并离散积分和微分操作 一 误差计算 e k SP k PV k 上式中 e k 表示当
  • 循环语句 Python 输入十个数 统计正数 负数 o 的个数(while&for)

    while num 1 positive 0 negative 0 zero 0 while num lt 10 a int input num 1 if a gt 0 positive 1 elif a lt 0 negative 1 e
  • 解决keil “No such file or directory”编译时找不到文件的方法

    记录遇到的一个关于Keil使用过程中的一个BUG 不知道大家有没有听说过keil工程中的文件包含路劲是不能太深的 如果没有听说过 使用过程中可能会遇到这个错误 其错误提示为 xx x error A1023E File Libraries
  • 【CES遇见人工智能】人工智能行李箱问世!用人脸识别锁定跟随用户,但引争议

    来源 环球网 出品 遇见人工智能 公众号 GOwithAI gt gt gt gt 昨日全平台阅读量 7万4000余次 gt gt gt gt 拖着沉重的行李箱旅行的日子 可能很快就会成为过去 这要归功于一种人工智能行李箱 它会像一只训练有
  • 【算法】到底什么是动态规划?

    动态规划 dynamic programming DP 是运筹学的一个分支 是求解决策过程 decision process 最优化的数学方法 动态规划的本质不在于是递推或是递归 动态规划是对于某一类问题的解决方法 重点在于如何鉴定 某一类
  • PBR Step by Step(二)辐射度

    PBR Step by Step 二 辐射度 https zhuanlan zhihu com p 21376124 转载请注明出处 http www cnblogs com jerrycg p 4929119 html 基于物理的渲染要尽
  • 详解Boost电路的基本原理

    Boost电路是一种开关直流升压电路 它能够使输出电压高于输入电压 在电子电路设计当中算是一种较为常见的电路设计方式 本篇文章针对新手 将为大家介绍Boost升压电路的工作原理 首先我们需要知道 电容阻碍电压变化 通高频 阻低频 通交流 阻
  • Unity 关卡跳转——开始界面切换到游戏场景的实现

    1 在已有关卡的基础上 另外新建一个关卡 将其命名为start并进行保存 2 在新建立的start关卡中创建TitleScreen cs脚本 代码如下 using System Collections using System Collec
  • ubuntu装指定分区_Ubuntu安装时怎样分区

    1 swap交换分区 一般为你机器内存的两倍 少于这个容量 系统无法进入休眠 实质是硬盘上的交换空间而非分区 所以没有格式 默认休眠将数据储存于此 能够取消 如不用swap必须再设定方可休眠 多数有1GB内存的桌面用户仅仅要1 5GB sw
  • Spring Boot 项目介绍

    Spring Boot 源码学习系列 Spring Boot 项目介绍 引言 项目介绍 1 设计理念 2 设计目标 3 源代码的目录结构 4 整体架构 总结 参考 引言 作为学习过 Java 的软件开发者 相信都知道 Spring 这一伟大
  • Linux基本命令的使用和服务器的部署

    1 云服务器的部署 以腾讯云为例 下载终端工具 Xshell 2 Linux常见命令 1 ls 2 pwd 3 cd 4 clear 清屏 5 touch 6 cat 查看文件内容 7 mkdir 创建目录 8 rm 删除文件 目录 9 c
  • TIMESAT提取物候信息操作流程

    TIMESAT提取物候信息操作流程 软件环境 Matlab R2014a TIMESAT3 2 数据介绍 MODIS A3或Q1的NVI NDVI 均测试过这个流程 可行 大拇指 TIMESAT输入n年数据 提取n 1年的物候参数 通常用三
  • MTK/联发科MT6877 5G智能手机应用处理器功能规格书/datasheet

    MT6877 设备 见图 1 1 具有集成的蓝牙 FM WLAN 和 GPS 模块 是一个高度集成的基带平台 结合了调制解调器和应用处理子系统 以支持 LTE 5G NR 和 C2K 智能手机应用 该芯片集成了两个运行频率高达 2 4 GH
  • 图像搜索引擎1

    图像搜索引擎1 使用Python颜色直方图在数据集中搜索视觉上相似的图像 这篇博客将介绍如何从头到尾创建图像搜索引擎 第一步是选择一个图像描述符 使用3D RGB直方图来表征图像的颜色 然后通过提取特征向量 即直方图 使用描述符对数据集中的
  • MATLAB学习笔记_Day10_摘要、问题假设、灵敏度分析

    学习视频 零基础教程 老哥 数学建模算法 编程 写作和获奖指南全流程培训 文章目录 1 摘要的重要性 摘要分析 2 假设的重要性 举例 3 灵敏度分析 灵敏度分析及适用参数类型 举例分析 敏感性分析总结 1 摘要的重要性 摘要分析 2 假设
  • android 调用另一个activity 简单做法

    懒了一下午 终于用不到一个小时的时间 实现了一个activity调用另一个activity 的宏远 哈哈哈哈 本做法纯属我这菜鸟的入门 本小教程不提供新建activity 的办法哈 百度一大把的 目的 我想在主窗口中调用另一个activit
  • PowerDesigner 反向工程,生成ER图

    建立好一个完整的oracle数据库之后 昨天老师让我用PL SQL Developer导出表结构的PDM文件 显示该数据库的ER图 仔细研究了一个晚上 决定放弃使用PL SQL Developer生成Oracle的ER图 捣弄了好久都没找到
  • yaml 数组_【大强哥-k8s从入门到放弃04】Yaml语法解析

    依然小福利 Python 零基础入门 2020感谢走进我的生命 Python 已更新至206集 哔哩哔哩 干杯 bilibili www bilibili com 一 K8S名称空间 嗯 名称空间是个小插曲 yaml在下面 1 Yaml文件