k8s部署-22-yaml文件怎么写,规则是什么,在k8s中分别有什么含义

图片

在前面的文章中,我们使用了较多的yaml文件,例如测试kubespary方式搭建的集群可用性,亦或者前文中我们搭建ingress-nginx的时候也是用了yaml文件,那么k8s中的yaml文件到底该如何来写,针对k8s中的yaml又该如何使用呢?

图片

什么是yaml

YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。

YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

YAML 的配置文件后缀为 .yml,亦或者是.yaml,如:nginx.yml 。

基本语法

1、大小写敏感
2、使用缩进表示层级关系
3、缩进不允许使用tab键,只允许使用空格来缩进
4、缩进的空格数不重要,只要相同层级的元素对应即可
5、“#” 表示缩进

数据类型

1、对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
2、数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
3、纯量(scalars):单个的、不可再分的值

根据这三种类型分别举个例子:

1、对象

对象键值对使用冒号结构表示 key: value,冒号后面要加一个空格。
也可以使用 key:{key1: value1, key2: value2, ...}。
还可以使用缩进表示层级关系;

例如:
key: 
    child-key: value
    child-key2: value2

2、数组

以 - 开头的行表示构成一个数组:

例如:
-
 - A
 - B
 - C

3、纯量

字符串
布尔值
整数
浮点数
Null
时间
日期

yaml文件在k8s中的使用

1、查看资源版本标签

YAML文件开头需要编写标签信息,对应不同资源信息,查看方式如下:

[root@node1 ~]# kubectl api-versions
# 会出现很多信息,我们主要关注下面几个常用的
v1  # Kubernetes API的稳定版本,包含很多核心对象:pod、service等
apps/v1  # 应用资源
autoscaling/v1  # 弹性伸缩资源
rbac.authorization.k8s.io/v1  # 权限控制资源
certificates.k8s.io/v1  # 安全相关认证的api组合

2、yaml文件书写

在这里我们使用上一篇中我们使用过的测试ingress-nginx的时候,采用的tomcatdemo文件来做认识吧。

先把这个整体的yaml文件附上:

#deploy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-demo
spec:
  selector:
    matchLabels:
      app: tomcat-demo
  replicas: 1
  template:
    metadata:
      labels:
        app: tomcat-demo
    spec:
      containers:
      - name: tomcat-demo
        image: registry.cn-hangzhou.aliyuncs.com/liuyi01/tomcat:8.0.51-alpine
        ports:
        - containerPort: 8080
---
#service
apiVersion: v1
kind: Service
metadata:
  name: tomcat-demo
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: tomcat-demo

---
#ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tomcat-demo
spec:
  rules:
  - host: tomcat.yunweijia.com
    http:
      paths:
      - path: /
        backend:
          serviceName: tomcat-demo
          servicePort: 80

首先我们看到这个文件分成了三段,每一段是不同的服务类型,例如第一段我们创建的是deployment,第二段创建的是service,第三段是创建的ingress端口映射;

然后再细化第一段:

apiVersion: apps/v1  # 指定api版本标签
kind: Deployment  # 定义资源的类型/角色,deployment为控制器
metadata:   # 定义资源的元数据信息
  name: tomcat-demo  # 定义资源的名称,在同一个namespace空间中必须是唯一的
  # 其实下面还可以打个label,即标签,如下
  labels:  #定义资源标签
    app: tomcat-demo  # 标签的名字
spec:
  selector  # 选择器
    matchLabels:  # 匹配标签
      app: tomcat-demo  # 对应的name
  replicas: 1  # 副本数量
  template:  # 定义模板
    metadata:  # 匹配上面的标签
      labels:
        app: tomcat-demo  # 和上面保持一致
    spec:
      containers:  # 定义容器信息
      - name: tomcat-demo  # 容器名,要和标签/资源名称保持一致
        # 使用什么容器
        image: registry.cn-hangzhou.aliyuncs.com/liuyi01/tomcat:8.0.51-alpine
        ports:
        - containerPort: 8080  # 定义容器对外的端口

细化第二段:
剩余内容请转至VX公众号 “运维家” ,回复 “129” 查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

运维家

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

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

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

打赏作者

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

抵扣说明:

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

余额充值