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

k8s,部署,yaml,文件,怎么,规则,什么,分别,含义 · 浏览次数 : 0

小编点评

**k8s 中 yaml 文件的语法和使用** k8s 中 yaml 文件用于定义 Kubernetes 集ールの配置。yaml 文件的语法和使用与 YAML 语言相似,但它有特殊的缩进语法和数据类型支持。 **数据类型** * **对象:**键值对的集合,可以用冒号结构表示。 * **数组:**一组按次序排列的值。 * **纯量:**单个的、不可再分的值。 **使用 yaml 文件** 1. 将 yaml 文件保存为 `.yaml` 或 `.yaml` 文件扩展名。 2. 在 k8s 中,使用 `kubectl` 命令访问资源。 3. 访问资源的版本标签以查看其 YAML 文件路径。 4. 使用 `kubectl edit` 命令编辑 YAML 文件。 **示例** 以下是一个 k8s 中的 yaml 文件示例,它定义了一个 `deployment` 对象: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: tomcat-demo 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 ``` **注意** * yaml 文件使用空白符号缩进和大量外观特征,特别适合表达或编辑数据结构。 * yaml 文件的命名必须以 `.yaml` 或 `.yaml` 为扩展名。 * yaml 文件中的数据类型需要按要求进行匹配。

正文

https://www.jianshu.com/p/ba5e3d9ecc1e

 

 

 

在前面的文章中,我们使用了较多的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文件附上:

 

#deployapiVersion: apps/v1kind: Deploymentmetadata:  name: tomcat-demospec:  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---#serviceapiVersion: v1kind: Servicemetadata:  name: tomcat-demospec:  ports:  - port: 80    protocol: TCP    targetPort: 8080  selector:    app: tomcat-demo---#ingressapiVersion: extensions/v1beta1kind: Ingressmetadata:  name: tomcat-demospec:  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” 查看。

与[转帖]k8s部署-22-yaml文件怎么写,规则是什么,在k8s中分别有什么含义相似的内容:

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

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

[转帖]IoT运维 - 如何部署一套高可用K8S集群

https://zhuanlan.zhihu.com/p/579983530 如何部署一套高可用k8s集群,下面直接演示一下 环境 ip角色主机名 192.168.3.20 kubectl、ansible deploy 192.168.3.21 etcd1 etcd1 192.168.3.22 et

[转帖]K8S部署Redis Cluster集群(三主三从模式) - 部署笔记

https://www.cnblogs.com/cheyunhua/p/15619317.html 一、Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理。它可以存储和操作高级数据类型,例如列表,地图,集合和排序

[转帖]k8s部署有状态应用redis-cluster集群踩坑总结

https://segmentfault.com/a/1190000039196137 redis-cluster集群的部署网上一堆,用k8s部署也不在少数,但都是抄来抄去,问题不少,实际操作分享出来的还是太少。 1、redis启动配置文件,使用CofigMap来管理比较方便,redis-confi

[转帖]k8s nginx-ingress上的配置优化

https://cloud.tencent.com/developer/article/1932188?areaSource=&traceId= 自建K8s上,如果部署了Nginx-Ingress,通常一些默认的参数有些可能需要优化下以便提升它的性能(阿里云之类的云厂商提供的Ingress是优化过的

[转帖]k8s-mtu设置不当引发的线上故障

https://www.cnblogs.com/zisefeizhu/p/16611626.html 背景 在部署新的paas平台线上环境时,突发consul和es中间件无法创建。 排查过程 以consul 通过查询k8s集群中pod状态发现原来3pod的consul集群,其中2个pod一直重启。

[转帖]【k8s】1、基础概念和架构及组件

文章目录 一、kubernetes概述1、什么是kubernetes?2、应用程序部署方式的演变3、为什么要用kubernetes? 二、kubernetes 特性三、Kubernetes集群架构与核心组件1、master组件1.1 kube-apiserver(中央枢纽)1.2 kube-cont

[转帖]Kubernetes部署Minio集群存储的选择,使用DirectPV CSI作为分布式存储的最佳实践

Kubernetes部署Minio集群存储的选择,使用DirectPV CSI作为分布式存储的最佳实践 个人理解浅谈 1. 关于在kubernetes上部署分布式存储服务,K8s存储的选择 非云环境部署K8s Pod时存储的选择 在非云环境部署Kubernets时,一般采用的都是本地的直连式存储和文

[转帖]ansible 安装 K8S

作者:山河已无恙链接:https://www.zhihu.com/question/315497851/answer/2898814729来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 写在前面分享一个 k8s 高可用集群部署的 Ansible 剧本以及涉及到的一些工

[转帖]记一次flannel网络调整

https://www.jianshu.com/p/a772e4b951f2 背景 最近给一个子公司部署一套k8s集群,集群搭建完之后有几个新需求需要新增几个node节点,在新增节点时发现添加失败,经过查询发现是网络规划问题导致。 flannel启动失败,报错信息如下:Error registeri