应前一段时间夸下的海口:[Kubernetes]如何使用yaml文件使得可以向外暴露服务,说过要写一篇关于yaml文件详解的文章出来的,今天来总结一下.yaml文件用在很多地方,但是这里以介绍在Kubernetes中的应用为主.

YAML基础

YAML(Yet Another Markup Language)不是一种标志语言.它的应用很广泛,在这里着重讲一讲,在Kubernetes中的一些内容.

使用YAML用于k8s的定义将给你一些好处,包括:

  • 便捷性:你将不再需要添加大量的参数到命令行中执行命令
  • 可维护性:YAML文件可以通过源头控制,可以跟踪每次的操作
  • 灵活性:通过YAML你将可以创建比命令行更加复杂的结构
  • YAML是一个JSON的超集,意味着任何有效JSON文件也都是一个YAML文件.关于Kubernetes中YAML的使用,只有两种类型你需要知道:

  • Maps
  • Lists
  • YAML Maps

    咱们先来看看YAML Maps这种类型.Maps可以将键值组合,从而可以更加方便的去配置信息.像下面这样,你可能会有这样一个配置信息:

    ---
    apiVersion: v1
    kind: Service

    第一行是分隔符,并且是可选的.如果在单个文件中只定义了一个服务,那么这种情况下,第一行的分隔符就可以忽略不计.

    在上面的例子中,可以看出有两个值:v1和Service,对应它们的键是apiVersion和kind

    YAML Lists

    接下来介绍一下YAML Lists.其实它就是一个序列的对象,例如:

    args
    - sleep
    - "1000"
    - message

    我们可以看到,可以有任何数量的项在列表中,项的定义以破折号(-)开头,并且和父元素之间存在缩进.但是要注意一点:在YAML文件中绝对不要使用tab键来进行缩进.

    实际中的运用

    基本上,不管我们想要什么样的结构,都可以通过这两个结构去组合实现.接下来我就以我在项目中使用的yaml文件为例来进行讲解一下(#后面内容为注释内容):

    apiVersion: v1
    kind: ReplicationController #类型是一个RC
    metadata:
    name: nginx-controller
    spec:
    replicas: 2 #我想要2个RC
    selector:
    name: mynginx
    template:
    metadata:
    labels:
    name: mynginx
    spec:
    containers:
    - name: mynginx
    image: reg.zll.com/web/nginx:1.12.2 #前端需要部署在nginx上,这里是对应的nginx的镜像。
    volumeMounts:
    - name: httpd-storage
    mountPath: /etc/nginx/nginx.conf #镜像中nginx的配置文件地址,用下面的path:/home/nginx.conf去代替此路径。
    - name: httpd-storag
    mountPath: /usr/local/dist
    ports:
    - containerPort: 80
    volumes:
    - name: httpd-storage
    hostPath:
    path: /home/nginx.conf #自定义的nginx的配置文件,挂载到服务器上的这一路径下,去代替镜像中nginx的配置
    - name: httpd-storag
    hostPath:
    path: /usr/local/dist #前端打包好的文件,放置的路径,去代替上放的mountPath:/usr/local/dist ---
    apiVersion: v1
    kind: Service #类型是个service
    metadata:
    name: nginx-service-nodeport
    spec:
    ports:
    - port: 8000
    targetPort: 80
    nodePort: 30080 #暴露出来可供访问的IP.
    protocol: TCP
    type: NodePort
    selector:
    name: mynginx

    就我目前知识,研究到了这种程度,感谢您的阅读~

    [Kubernetes]yaml文件详解的更多相关文章

    1. Kubernetes (yaml 文件详解)

      # yaml格式的pod定义文件完整内容:apiVersion: v1       #必选,版本号,例如v1kind: Pod       #必选,Podmetadata:       #必选,元数据 ...

    2. k8s之yaml文件详解

      k8s之yaml文件详解 目录 k8s之yaml文件详解 1. k8s支持的文件格式 2. YAML语言格式 3. 查看api资源版本标签 4. 编写nginx-test.yaml资源配置清单 4.1 ...

    3. K8s创建pod yaml文件详解

      kubernetes创建pod的yaml文件,参数说明 apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 ...

    4. dart系列之:元世界pubspec.yaml文件详解

      目录 简介 pubspec.yaml支持的字段 一个例子 字段详情 总结 简介 pubspec.yaml是所有dart项目的灵魂,它包含了所有dart项目的依赖信息和其他元信息,所以pubspec.y ...

    5. 6.YAML文件详解、PyYaml操作

        YAML简介: yaml是一种数据格式,支持注释,换行,多行字符串,裸字符串(正序,字符串)   YAML作用: 用于全局的配置文件 用于测试用例编写   YAML语法规则: 区分大小写 使用缩进 ...

    6. k8s yaml文件详解

      1.yaml格式的Pod配置文件内容及注解 深入Pod之前,首先我们来了解下Pod的yaml整体文件内容及功能注解. 如下: # yaml格式的pod定义文件完整内容: apiVersion: v1 ...

    7. Kubernetes YAML 文件全字段详解

      Kubernetes YAML 文件全字段详解 Deployment yaml 其中主要参数都在podTemplate 中,DaemonSet StatefulSet 中的pod部分一样. apiVe ...

    8. Kubernetes 部署策略详解-转载学习

      Kubernetes 部署策略详解 参考:https://www.qikqiak.com/post/k8s-deployment-strategies/ 在Kubernetes中有几种不同的方式发布应 ...

    9. 附005.Docker Compose文件详解

      一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...

    随机推荐

    1. java8 Lambda表达式的新手上车指南(1)--基础语法和函数式接口

      背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...

    2. Linux内存管理 (2)页表的映射过程

      专题:Linux内存管理专题 关键词:swapper_pd_dir.ARM PGD/PTE.Linux PGD/PTE.pgd_offset_k. Linux下的页表映射分为两种,一是Linux自身的 ...

    3. .net 信息采集ajax数据

      .net 信息采集ajax数据 关于.net信息采集的资料很多,但是如果采集的网站是ajax异步加载数据的模式,又如何采集呢?今天就把自己做信息采集时,所遇到的一些问题和心得跟大家分享一下. 采集网站 ...

    4. 随心测试_软测基础_002_<测试工程师_核心技能体系>

      测试工程师核心技能体系构成 测试基础体系:[对象——>方法——>流程].[测试活动类型——>质量] 测试分析体系:[测试对象分析]——>[测试设计(计划.数据.用例.文档)] ...

    5. Django缓存和内置信号

      缓存 简单概括就是将对数据库操作查询所得到的数据放入另外一台机器上(缓存)中,当用户再次请求时,直接去缓存中拿,避免对数据库的频繁操作,加快数据的显示时间,需要知道的是,缓存里面的数据一般都设置有超时 ...

    6. flask(二)之Jinja2模板与Flask-WTF

      01-文档 官方文档:http://docs.jinkan.org/docs/jinja2/ 02-基本语义 Jinja2做构成的模板文件中,文本内容大致可以分成几个种类.比如特殊文本(不进行转义,比 ...

    7. Centos7 利用crontab定时执行任务及配置方法

      crond是什么? crond 和crontab是不可分割的.crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于 ...

    8. @Valid注解的使用(转)

      原文地址:http://blog.csdn.net/xzmeasy/article/details/76098188 @Valid注解用于校验,所属包为:javax.validation.Valid. ...

    9. Photoshop合成雪景天使美女照片

      一.新建一个800 * 426的文件,打开人物素材把不要的东西删除掉,因为白雪景色很白,就直接涂上白色就可以了,然后把人像移动到我要的角度. 二.对人物图层按Ctrl + M 调整曲线,参数设置如下图 ...

    10. block,inline,inline-block区别

      block:多個元素豎直排列,每個元素單獨占一行,寬高可以設置,padding.margin可以設置: inline:多個元素占一行,一行放不下了,才轉入下一行,寬高不能設置,水平的padding.m ...