当前位置: 首页 > news >正文

yaml文件格式说明及编写教程

建议使用3A服务器来搭建好玩的实验,比较方便

1、ymal介绍

k8s是容器编排引擎,使用yaml来编排部署应用

特点:1、缩进表示层级关系

           2、不支持制表符“tab”缩进,需要使用空格缩进

           3、通常开头缩进两个空格

           4、关键词字符后缩进一个空格,比如冒号与逗号后面需要缩进一个字符

           5、“---”表示YAML格式,一个文件的开始

            6、“#”表示注释

以下yaml为例

 

等同于

 kubectl create deployment web --image=lizhenliang/java-demo --replicas=3 -n default

2、编写示例yaml

在使用中我们可能存在API版本不一致导致报错,可以通过命令查看版本

kubectl api-resources |grep Deployment

 

1、其中,标签一般定义两个,由项目与应用组成,#键:值 可任意定义。例如

project:ec

app: portal

2、matchLabels必须与下面的labels保持一致,否则apply会报错

例如下面这个创建deployment的yaml

kind: Deployment

metadata:

  name: web666

  namespace: team-a

spec:

  replicas: 3

  selector:

    matchLabels:

      project: ec

      app: portal

  template:

    metadata:

      labels:

        project: ec

        app: portal

    spec:

      containers:

      - name: web

        image: lizhenliang/java-demo:latest

其中,标签可以为两个,他是以键值对的方式存储,但matchLabels的值必须与labels相等,不相等会创建报错,而service是以标签来控制pod

           replicas为副本数,image为拉取镜像名

2、创建service

apiVersion: v1

kind: Service

metadata:

  name: web666

  namespace: team-a

spec:

  ports:

  - port: 80

    protocol: TCP

    targetPort: 8080

  selector:

    project: ec

    app: portal

  type: NodePort

标签与命名空间要确保与deployment一致

执行两个yaml文件


kubectl apply -f deployment.yaml

kubectl apply -f service.yam

查看服务

 

成功

3、快速生成yaml文件

直接手写yaml比较麻烦,而且容易出错,所以有提供以下方式获取标准yaml文件并修改

3.1生成新yaml

1、通过命令获取yaml,可以通过创建服务的命令后面加 --dry-run=client -o yaml 来提取yaml,再根据获取到的yaml进行修改即可

例如

kubectl create deployment java-demo --image=nginx:1.20 -n team-a --dry-run=client -o yaml

他会输出yaml,加重定向导出即可,其中,creationTimestamp与status: {}可以删除

apiVersion: apps/v1

kind: Deployment

metadata:

  creationTimestamp: null

  labels:

    app: java-demo

  name: java-demo

  namespace: team-a

spec:

  replicas: 1

  selector:

    matchLabels:

      app: java-demo

  strategy: {}

  template:

    metadata:

      creationTimestamp: null

      labels:

        app: java-demo

    spec:

      containers:

      - image: nginx:1.20

        name: java-demo

        resources: {}

status: {}

3.2 将已有的服务yaml导出

k8s支持将正在运行的服务的yaml文件导出,使用get命令加-o yaml即可(xxx为服务名)

kubectl get deployment xxx -o yaml

 注意,此yaml内容不能直接在其他k8s环境中使用,在其他环境中使用的话要进行一些删除,要删除的内容如下:

 

剩余的内容则是一个标准yaml,可以直接使用也可以用作模板修改

3.3关键词提醒

kubectl explain pods.spec.containers

kubectl explain deployment

3.4官网查找

直接在官网搜索关键词,官方会给演示示例

官网地址:

https://kubernetes.io/zh/docs/home/Kubernetes

相关文章:

  • java计算机毕业设计能源类网站平台源码+系统+数据库+lw文档+mybatis+运行部署
  • 个人做量化交易一定不靠谱?
  • 迅为RK3588开发板编译环境Ubuntu20.04编译配置-增加交换内存
  • 申报绿色工厂的条件是什么
  • Android面试官:入职大厂的Android程序员具备怎样的专业素养?
  • 六大设计原则
  • VMware vCenter Server 7 升级
  • Word控件Spire.Doc 【段落处理】教程(十二):如何在 C# 中管理 word 文档的分页
  • 在线批注审片工具有哪些?分秒帧团队版与个人版的主要区别
  • 中国内窥镜行业市场投资战略规划分析报告
  • flink 自定义序列化对象Sink/Source
  • 目前期货开户手续费比较透明
  • 深度跳转-scheme
  • 2022 全球 AI 模型周报
  • mac上使用svn
  • 2017年终总结、随想
  • Android 控件背景颜色处理
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Less 日常用法
  • linux安装openssl、swoole等扩展的具体步骤
  • SpriteKit 技巧之添加背景图片
  • uni-app项目数字滚动
  • vue的全局变量和全局拦截请求器
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 后端_ThinkPHP5
  • 利用DataURL技术在网页上显示图片
  • 微信开源mars源码分析1—上层samples分析
  • 一个SAP顾问在美国的这些年
  • 一文看透浏览器架构
  • elasticsearch-head插件安装
  • ionic异常记录
  • kubernetes资源对象--ingress
  • 容器镜像
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • # Java NIO(一)FileChannel
  • #if和#ifdef区别
  • #QT(一种朴素的计算器实现方法)
  • (0)Nginx 功能特性
  • (11)MATLAB PCA+SVM 人脸识别
  • (11)MSP430F5529 定时器B
  • (13)Hive调优——动态分区导致的小文件问题
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Python) SOAP Web Service (HTTP POST)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (五)MySQL的备份及恢复
  • (一)appium-desktop定位元素原理
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Core 实现 Redis 批量查询指定格式的Key