kubernetes开发运维系列_基础篇-YAML 文件

资源第二篇:bundle 的config.json 文件内容的解析 cocos bundle 目录的config.json 分析 阅读详情
我们在安装 kubernetes 集群的时候使用了一些 YAML 文件来创建相关的资源,
所以我们先来简单看一看 YAML 文件是如何工作的,并使
用 YAML 文件来定义一个 kubernetes pod,然后再来定义一个 kubernetes deployment
 

YAML 基础

它的基本语法规则如下:
  1. 大小写敏感
  2. 使用缩进表示层级关系
  3. 缩进时不允许使用Tab键,只允许使用空格。
  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  5. # 表示注释,从这个字符一直到行尾,都会被解析器忽略。
在我们的 kubernetes 中,你只需要两种结构类型就行了:
  1. Lists
  2. Maps
也就是说,你可能会遇到 Lists 的 Maps 和 Maps 的 Lists,等等。不过不用担心,你只要掌握
了这两种结构也就可以了,其他更加复杂的我们暂不讨论。
 
 

Maps

首先我们来看看 Maps,我们都知道 Map 是字典,就是一个 key:value 的键值对,Maps 可以让
我们更加方便的去书写配置信息,例如:
 
第一行的 --- 是分隔符,是可选的,在单一文件中,可用连续三个连字号 --- 区分多个文件。这
里我们可以看到,我们有两个键: kind 和 apiVersion ,他们对应的值分别是:v1 和Pod。
上面的 YAML 文件转换成 JSON 格式的话,你肯定就容易明白了:
 

{"apiVersion": "v1", "kind": "pod" }

我们在创建一个相对复杂一点的 YAML 文件,创建一个 KEY 对应的值不是字符串而是一个 Maps:

上面的 YAML 文件,metadata 这个 KEY 对应的值就是一个 Maps 了,而且嵌套的 labels 这个
KEY 的值又是一个 Map,你可以根据你自己的情况进行多层嵌套。
上面我们也提到了 YAML 文件的语法规则,YAML 处理器是根据行缩进来知道内容之间的关联性
的。比如我们上面的 YAML 文件,我用了两个空格作为缩进,空格的数量并不重要,但是你得保持一
致,并且至少要求一个空格(什么意思?就是你别一会缩进两个空格,一会缩进4个空格)。
我们可以看到 name 和 labels 是相同级别的缩进,所以 YAML 处理器就知道了他们属于同一个
MAP,而 app 是 labels 的值是因为 app 的缩进更大。
注意:在 YAML 文件中绝对不要使用 tab 键。
 
 
同样的,我们可以将上面的 YAML 文件转换成 JSON 文件:
 
 
1. {
2. "apiVersion": "v1",
3. "kind": "Pod",
4. "metadata": {
5.           "name": "kube100-site",
6.           "labels": {
7.                   "app": "web"
8.            }
9.       }
10. }

 

或许你对上面的 JSON 文件更熟悉,但是你不得不承认 YAML 文件的语义化程度更高吧?
 

Lists

Lists 就是列表,说白了就是数组,在 YAML 文件中我们可以这样定义:

 
你可以有任何数量的项在列表中,每个项的定义以破折号(-)开头的,与父元素直接可以缩进一个空
格。
 
当然,list 的子项也可以是 Maps,Maps 的子项也可以是list如下所示:
 
 
 
比如这个 YAML 文件,我们定义了一个叫 containers 的 List 对象,每个子项都由 name、
image、ports 组成,每个 ports 都有一个 key 为 containerPort 的 Map 组成,
 

使用 YAML 创建 Pod

现在我们已经对 YAML 文件有了大概的了解了,我相信你应该没有之前那么懵逼了吧?我们还是来使
用 YAML 文件来创建一个 Deployment
 
 
API 说明: https://kubernetes.io/docs/reference/generated/kubernetes-
api/v1.10/
 
创建 Pod
 
 
---
apiVersion: v1
kind: Pod
metadata:                           #元数据信息
  name: first-pod                    #kubectl get  pods 和 登陆容器显示的名字
  labels:                           #标签,可以作为查询条件 kubectl get pods -l
    app: tomcat
    node: devops-103
spec:
  containers:                         #容器
    - name: tomcat                    #容器名称
      image: docker.io/tomcat         #使用的镜像
      ports:
        - containerPort: 8080
    - name: nginx                    #容器名称
      image: docker.io/nginx        #使用的镜像
      ports:
        - containerPort: 80
  # 设置env,登陆到容器中查看环境变量, DEME_GREETING 的值是 "hello from the enviroment"
  env:              
    - name:GREETING
      value: "hello from the environment"                #规格

 

这是我们上面定义的一个普通的 POD 文件,我们先来简单分析下文件内容:
 
apiVersion,这里它的值是 v1,这个版本号需要根据我们安装的 kubernetes 版本和资源
类型进行变化的,记住不是写死的
 
kind,这里我们创建的是一个 Pod,当然根据你的实际情况,这里资源类型可以是
Deployment、Job、Ingress、Service 等待。
 
metadata:包含了我们定义的 Pod 的一些 meta 信息,比如名称、namespace、标签等等信
息。
 
spec:包括一些 containers,storage,volumes,或者其他 Kubernetes 需要知道的参
数,以及诸如是否在容器失败时重新启动容器的属性。你可以在特定 Kubernetes API 找到完
整的 Kubernetes Pod 的属性。
让我们来看一个典型的容器的定义:
 
 
在这个例子中,这是一个简单的最小定义:一个名字(front-end),基于 nginx 的镜像,以及容
器 将会监听的一个端口(80)。在这些当中,只有名字是必需要的,你也可以指定一个更加复杂的
属性,例如在容器启动时运行的命令,应使用的参数,工作目录,或每次实例化时是否拉取映像的新副
本。以下是一些容器可选的设置属性:
 
name
image
command
args

 

workingDir
ports
env
resources
volumeMounts
livenessProbe
readinessProbe
livecycle
terminationMessagePath
imagePullPolicy
securityContext
stdin
stdinOnce
tty
明白了 POD 的定义后,我们将上面创建 POD 的 YAML 文件保存成 first-pod .yaml,然后使
用 kubectl 创建 POD:
 
1. $ kubectl create -f pod.yaml
2. pod "kube100-site" created
 
然后我们就可以使用我们前面熟悉的 kubectl 命令来查看 POD 的状态了:
 
 
 
到这里我们的 POD 就创建成功了,如果你在创建过程中有任何问题,我们同样可以使用
kubectl describe 进行排查。我们先删除上面创建的 POD:
 
1. $ kubectl delete -f first-pod.yaml
2. pod "first-pod“ deleted
 
 

创建 Deployment

现在我们可以来创建一个真正的 Deployment。在上面的例子中,我们只是单纯的创建了一个 POD
实例,但是如果这个 POD 出现了故障的话,我们的服务也就挂掉了,所以 kubernetes 提供了一
个 Deployment 的概念,可以让 kubernetes 去管理一组 POD 的副本,也就是副本集,这样就可
以保证一定数量的副本一直可用的,不会因为一个 POD 挂掉导致整个服务挂掉。我们可以这样定义一
个 Deployment:
 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment        #//部署名称
  labels:
    app: nginx
spec:
  replicas: 3                   #//副本数量
  selector:                     #//Pod选择规则
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:                   #//Pods标签
        app: nginx
    spec:
      containers:
        - name: nginx
          image: docker.io/nginx:1.7.9
          ports:
            - containerPort: 80
      terminationGracePeriodSeconds: 30

注意这里的 apiVersion 对应的值是 app/v1 ,当然 kind 要指定为

Deployment,因为这就是我们需要的,然后我们可以指定一些 meta 信息,比如名字,或者标签之
类的。最后,最重要的是 spec 配置选项,这里我们定义需要3个副本,当然还有很多可以设置的属
性,比如一个 Pod 在没有任何错误变成准备的情况下必须达到的最小秒数。
我们可以在Kubernetes v1beta1 API参考中找到一个完整的 Depolyment 可指定的参数列表。
 
 
看起来是不是和我们上面的 pod.yaml 很类似啊,注意其中的 template,其实就是对 POD 对象的
定义。将上面的 YAML 文件保存为 deployment.yaml,然后创建 Deployment:
 
 
$ kubectl create -f deployment.yaml
 
deployment "nginx-deployment" created
 
 
 
同样的,想要查看它的状态,我们可以检查 Deployment的列表:
 
 
我们可以看到所有的 Pods 都已经正常运行了。
到这里我们就完成了使用 YAML 文件创建 Kubernetes Deployment 的过程,在了解了 YAML 文
件的基础后,定义 YAML 文件其实已经很简单了,最主要的是要根据实际情况去定义 YAML 文件,所
以查阅 Kubernetes 文档很重要。
 
可以使用http://www.yamllint.com/去检验 YAML 文件的合法性。
 
 
 
 
 
 
 
 
 
 
 
Kubernetes K8S之通过yaml文件创建Pod与Pod常用字段详解 YAML语法规范;在kubernetes k8s中如何通过yaml文件创建pod,以及pod常用字段详解 阅读详情

相关推荐

K8S之yaml文件详解

文章目录一、概述二、YAML文件优点三、YAML与 JSON 和 XML 的关系四、YAML 文件的结构五、YAML 在 Kubernetes 中的使用六、YAML文件模板生成/导出一、概述只支持YAML和JSON格式创建资源对象JSON格式用于接口之间消息的传递,格式用于配置和管理YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。二、YAML文件优点。

迪之的博客 3546

asp.net core bundleconfig.json合并压缩资源文件

在asp.net core中则可以使用BuildBundlerMinifier来进行css,js的压缩合并 1、使用NuGet安装 BuildBundlerMinifier(也可以在vs中下载安装扩展Bundler & Minifier,手动压缩文件) 2、新建:bundleconfig.json 绑定和缩减 [ { // 要输出的捆绑文件名称。 可以包含中的相对路径bundleconfig.json文件。 必填 "outputFileName": "wwwroot/css/si

极客神殿 1293

【K8S系列】Kubernetes 资源对象的 YAML 文件示例及其详细介绍

在 Kubernetes 中,YAML 文件用于定义各种资源对象的配置,包括 Pods、Deployments、Services 等。以下是一些常见 Kubernetes 资源对象的 YAML 文件示例及其详细介绍。

颜淡慕潇 2万+

ASP.NET Core 中的捆绑和缩小静态资产

最近在B站上看到杨旭老师的ASP.NET Core 3.x 入门视频(完结)的第三节的ASP.NET视频教程,里面提到到ASP.NET Core 中的捆绑和缩小静态资产,可以在微软官方文档ASP.NET Core 中的捆绑和缩小静态资产,特此记录一下,感兴趣的可以直接查看官方文档。 参考资料 ASP.NET Core 中的捆绑和缩小静态资产 ASP.NET Core 3.x 入门视频(完结) 编程入门 (完结)深入浅出ASP.NET Core 入门新手教程合集 ASP.NET Core 3.x 构建 RE

ccf19881030的专栏 711

不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧

不会写K8S资源编排yaml文件?一文教会你如何掌握编写yaml文件的技巧 本文分为两个章节:首先熟悉下K8S指令以及资源的类型、然后开始进入正文传授经验 K8S YAML推荐文章 K8S资源编排YAML文件详解 Kubernetes集群使用yaml文件创建资源报错经验总结 一、熟悉下K8S常用命令参数以及资源管理 1.K8S集群常用命令 1.1.查询资源状态 kubectl get cs # 查看集群状态 kubectl get nodes

江晓龙的博客 7027

MCGS 昆仑通态触摸屏 modbus TCP 数据转发

MCGS触摸屏数据转发modbus TCP数据转发

m0_63451859的博客 2万+

asp.net core2.1 bundleconfig.json合并压缩资源文件

在asp.net core中则可以使用BuildBundlerMinifier来进行css,js的压缩合并 1、使用NuGet安装 BuildBundlerMinifier(也可以在vs中下载安装扩展Bundler & Minifier,手动压缩文件) 2、新建:bundleconfig.json 绑定和缩减 [ { // 要输出的捆绑文件名称。 可以包含中的相对路径bundleconfig.json文件。 必填 "outputFileName": "wwwroot/css/si

极客神殿 1007

让 AI 自己“画施工图”——基于扩散模型的智能 CAD 管线生成

AI驱动CAD管线设计革命:Layout2CAD实现30秒自动化出图 针对设计院70%时间耗费在管线绘制的问题,研究团队基于Stable Diffusion开发了Layout2CAD系统,实现建筑草图到DWG施工图的智能转换。该系统采用三阶段流程:语义分割建筑底图→扩散生成多通道Heatmap(含管径/标高信息)→矢量化输出DWG实体,结合129M参数的多模块模型(Diffusion UNet+GraphRefiner)及规范判别器,确保1mm精度并自动满足GB50015-2019标准。

qq_74383080的博客 2013

Net core学习系列(二)——Net Core项目文件简介

一、 ASP.NET Core 项目文件夹解读 ASP.NET Core 1.0 发布以来,相较于传统项目编码发布的行为,新项目中的操作已经有了很大的变化,如解析依赖,选择运行平台和Runtime等等,就连项目结构也有了比较大的改变,越来越多的配置选项由编辑器转交给了开发者手动决定,这一点在新的各类配置文件中体现得尤为明显,这里就来简单解读一下。 (一) 项目文件夹总览 (二)...

anbixu9818的博客 730

SAP LSMW保姆级操作文档

SAP LSMW(Legacy System Migration Workbench)是一个强大的工具,旨在简化旧系统数据向SAP系统的迁移过程。它允许用户通过多种方式导入数据,包括直接输入、批处理输入和BAPI。LSMW支持数据映射和转换,确保数据在迁移过程中保持一致性,减少手动输入的需求,从而提高效率,适用于新系统实施和数据更新项目。在日常运维过程中我们经常会遇到用户要求我们批量改一写数据,通常这些字段的信息有些SAP是提供程序可以批量进行更改的比如主数据的MM17、通用更改数据的MASS。

我小时候很黑的博客 4917

保姆级教程:在Jetson Nano上从零移植OV5647 CSI摄像头驱动(附完整调试记录)

本文提供了一份详细的Jetson Nano OV5647 CSI摄像头驱动移植教程,涵盖硬件准备、驱动框架分析、设备树配置、驱动移植核心修改点及调试技巧。通过V4L2框架和Tegra平台适配,开发者可快速实现摄像头驱动的移植与优化,适用于边缘计算和嵌入式视觉应用。

weixin_27869497的博客 518

K8S集群中Yaml文件详解

K8S集群中对资源管理和资源对象编排部署都可以通过声明YAML文件来解决,也就是可以把需要对资源对象操作编辑到 YAML 格式文件中,我们把这种文件叫做资源清单文件,通过kubectl命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署了。YAML 文件 : 就是资源清单文件,用于资源编排。

YUEAwb的博客 3053

LoveSQL

LoveSQL(SQL注入详解) 1、根据题目,显然想到的是sql注入漏洞,直接尝试万能密码 2、此时url构造,查看字段数 /check.php?username=admin' order by 3%23&password=1 # 存在 /check.php?username=admin' order by 4%23&password=1 # 报错 因此,得到总共有三个字段数 注意:url中不能用#,应该用url编码%23 3、用union来查询测试注入点,查看回显点

lunan的博客 1561

K8S中 yaml 文件详解

K8S中 yaml 文件详解一、K8S中的 yaml 文件二、写一个 yaml 文件,通过声明式创建pod创建 Deployment 资源 - kind: Deployment创建 Service 资源 - kind-Service导出 yaml 格式方式例子:deployment.yaml 文件详解例子:Service yaml 文件详解 一、K8S中的 yaml 文件 Kubernetes 支持 YAML 和 JSON格式 管理资源对象 JSON 格式:主要用于 api 接口之间消息的传递 YAML

kele_baba 1万+

Allegro如何设置走线自动删除重复走线操作指导

Allegro如何设置走线是自动删除重复走线操作指导在PCB布线的时候,点到点需要重复走一段线的时候,希望原来的线段自动被删除,Allegro设计的时候支持这个操作如下图,重复走中间的线段的时候,希望下方的走线自动删除具体操作如下This section is describe what the function allegro have ,helpfully could let user know more about allegroAllegro Design and Analysis includes

weixin_54787054的博客 4497

个人顶级AI助手OpenClaw(Clawdbot) - 新手快速入门指南

本文详细介绍了个人顶级AI助手OpenClaw(Clawdbot) 的快速入门指南,包括安装部署和使用配置及注意事项

program哲学 5302

【k8s】Kubernetes(K8s)YAML 配置文件

Kubernetes(K8s)YAML 配置文件讲解,Kubernetes(K8s)YAML 配置文件编写教程,Kubernetes

DreamSun的博客 1807

matlab数学建模练习(2)练习电子科技大学数学实验

【代码】matlab数学建模练习(2)练习电子科技大学数学实验。

c_wrj_的博客 1435

干货!K8S之yaml文件详解

文章目录一、概述二、YAML文件优点三、YAML与 JSON 和 XML 的关系四、YAML 文件的结构五、YAML 在 Kubernetes 中的使用六、YAML文件模板生成/导出 一、概述 Kubernetes只支持YAML和JSON格式创建资源对象 JSON格式用于接口之间消息的传递,YAML格式用于配置和管理 YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。 二、YAML文件优点 YAML 文件易于人类阅读,具有表达性和可扩展性。

时光慢旅的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

K8S:Yaml文件详解

详解k8s中的port:●portport 是 k8s 集群内部访问service的端口,即通过 clusterIP: port 可以从 Pod 所在的 Node 上访问到 service●nodePortnodePort 是外部访问 k8s 集群中 service 的端口,通过 nodeIP: nodePort 可以从外部访问到某个 service。

m0_71493671的博客 6359

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

​K8s中yaml文件详解(超详细)​

上述例子中,使用两个空格作为缩进,但空格的数据量并不重要,只是至少要求一个空格并且所有缩进保持一致的空格数。除了上述的基本属性外,还能够指定复杂的属性,包括容器启动运行的命令、使用的参数、工作目录以及每次实例化是否拉取新的副本。注:上述的YAML文件中,metadata这个KEY对应的值为一个Maps,而嵌套的labels这个KEY的值又是一个Map。上述例子只是一个简单的最小定义:一个名字(front-end)、基于nginx的镜像,以及容器将会监听的指定端口号(80)。YAML对用户更加友好。

Java后端技术栈 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

k8s——Kubernetes配置yaml文件详解

Kubernetes配置yaml文件 一:Yaml文件详解 1.介绍 YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。 kubernetes中用来定义YAML文件创建Pod和创建Deployment等资源。 2.使用YAML用于K8s的定义的好处 便捷性: 不必添加大量的参数到命令行中执行命令 可维护性:YAML文件可以通过源头控制,跟踪每次操作 灵活性: YAML可以创建比命令行更加复杂的结构 3.YAML语法规则 大小写敏感 使用缩

weixin_55985097的博客 4862

kubernetes(k8s) Yaml 文件详解

没有相关资源,使用run命令--dry-run选项已有相关资源,使用get命令--export选项httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。

weixin_56270746的博客 7657

Kubernetes 中 YAML 文件详解

一个 YAML 文件中可以定义多个资源,使用 — 分隔不同的资源定义。

zhangyongze_z的博客 2641

k8s之yaml文件详解

没有相关资源,使用run命令--dry-run选项#已有相关资源,使用get命令导出。

2301_81272194的博客 3556

Kubernetes(k8s) YAML文件详解

一、yaml文件简介 Kubernetes只支持YAML和JSON格式创建资源对象,JSON格式用于接口之间消息的传递,适用于开发;YAML格式用于配置和管理,适用于云平台管理,YAML是一种简洁的非标记性语言。 1)yaml的语法规则: 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tal键,只允许使用空格 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 ”#” 表示注释,从这个字符一直到行尾,都会被解析器忽略 注:- - - 为可选的分隔符 ,当需要在一个文件中定义多个结构的时候需要使用

匠人精神,持之以恒! 4161
上一篇: 分布式高并发设计案例 之秒杀系统设计
下一篇: kubernetes开发运维系列_基础篇-容器化开发基础
Coder_Boy_
博客等级 码龄10年 2804粉丝 819原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值