K8S 集群资源清单(YAML)文件书写方法 | 学习笔记

简介: 快速学习 K8S 集群资源清单(YAML)文件书写方法

开发者学堂课程【Kubernetes 极速入门:K8S 集群资源清单(YAML)文件书写方法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/658/detail/10905


K8S 集群资源清单(YAML)文件书写方法

 

内容介绍:

一、场景

二、学习目标

三、学习步骤

四、课程内容

 

一、场景

通过前面课程的学习,已经可以使用了 kubect 命令在 k8s 集群中进行简单的操作,操作过程中播仔发现,对于一些基础查询类命令操作起来非常方便,但是对于对 k8s 集群中资源管理及大量资源对象编排部署(创建或删除等)操作,使用简单的命令行工具是无法满足要求的,那么如何满足使用 k8s 集群进行大量的资源管理的需求呢?

在这里我们建议可以去使用 k8s 集群中对资源管理和资源对象编排部署都可以使用的一种方法即通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到 YAML 格式文件中,我们把这种文件叫做资源清单文件,通过 kubectl 命令直接使用资源清单文件对大量的资源对象进行编排部署删除或创建

但是,声明样式的资源清单文件应该如何编写呢?这就是接下来我们要学习的内容。

 

二、学习目标

本次课程的学习目标主要有两个,第一,了解 YAML 文件书写格式,第二,了解通过 YAML 文件实现资源清单描述方法

 

三、学习步骤

学习步骤是按照学习目标进行设置的,也两步,第一步就是 YAML 文件书写格式,第二步就是通过 YAML 文件实现资源清单描述方法并进行举例说明。

1、YAML 文件书写格式

2、通过 YAML 文件实现资源清单描述方法

 

四、课程内容

1、YAML文件书写格式

在这一小节我们将从三个方面进行介绍,第一个使YAML的介绍,第二部分是YAML的基本语法,第三部分使YAML支持的数据结构。

(1) YAML 介绍

l YAML 仍是一种标记语言

l 为了强调这种语言以数据做为中心,而不是以标记语言为重点

l YAML 是一个可读性高,用来表达数据序列的格式。

YAML 仍是一种标记语言,但主要是为了强调这种语言以数据做为中心,即为数据服务,而不是以标记语言为重点。与我们前期所了解的 HTML,包括XML是一样的,它们都是以数据为中心,而不是以标记为中心。另外 YAML 这种编辑语言的可读性比较高,因此我们使用它来完成对资源清单描述,也是非常符合我们的应用逻辑

(2) 基本语法

l 使用空格做为缩进

l 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

l 低版本缩进时不允许使用 Tab 键,只允许使用空格

l 使用#标识注释,从这个字符一直到行尾,都会被解释器忽略

基本语法其实是相当简单的,我们在编写的过程当中使用空格作为缩进,更多其他的语法我们在数据结构中进行讲解,缩进的时候大家需要注意缩进的空格的数目是不重要的,有的时候我们可能会使用两个空格,四个空格,六空格或者八空格有的时候我们可能会使用这三个五个七个的空格一般情况我们使用二、四、六、八个空格来表示,是一非约定成俗的操作方式,只要把相同层级的元素左侧对齐就可以了

YAML分为YAML1.0、YALM2.0、YAML3.0,YAML1.0版本的缩进的是不支持 Tab键的,只允许空格,YAML3.0版本就可以支持 Tab 键了,如果使用 Tab 键,在整个的操作过程中,空格会更多,所以在这里主要取决于大家的操作习惯。另外再提醒大家一点,就是YAML编辑语言中依旧可以使用#来表示相关的注释,如果在一行语言的前面加上#就表示这一行都会被注释掉,会被解释器进行忽略

(3) YAML 支持的数据结构

YAML 支持的数据结构主要有三个,第一个是对象,第二个是数组,第三个是纯量。

l 对象

对象是一种这个键值对的集合,我们有时候也把它称作映射哈西或者字典,字典和python语言中是非常相像的,下面进行举例说明
对象是一组键值对,一般能用冒号进行分隔表示,有键有值,中间需要用冒号进行表示,大家需要注意书写格式,比如说 name:  Tom,大家要注意空格后面的再加value,同样的 age 也是一样的,age:  18,冒号空格以后再进行表示就可以了。还有一种表示方法,先写入一个键 hash,后面用{}把多个键值对放入,作为前面键的值。

l 数组

数组是一组按次序进行排列的值,可以序列或列表,像python语言中的列表用[]来表示,同样这里我们也可以用这种方法来表示。数组的表示方法有两种方式,第一种是以连词开头的行,比如说 People 下有一个连字符,即-,每一个-的后面就对应一个值,这种方法在资源清单文件当中是应用比较多的。还有一种方法也可以用行内表示方法,比如说 People: [Tom,Jack]People后加空格,使用中括号将值写入,值之间使用逗号进行分隔隔开时可以加空格也可以不加空格

l 纯量

纯量指的是单个的不可分割的值,比如说123,如果是纯量就不能将他们分开同样的,ABC 如果是一个字符串,在这里作为一个整体它进行分开。数值直接表示字面量的形式,布尔值用 true 和 false 表示,null 用~表示,还有时间格式采用 ISO8601日期采用 iso8601格式表示的年月日,允许用两个号来进行强烈的表达等都是纯量,不可进行分割。

字符串这种纯量默认不使用引号来表示,python 语言开发当中的字典,它的字符串和它的数值方式是不一样的,字符串需要用引号引起来数值是不需要引号引起的,如果用引号引起之后,表示数值也是字符串了,而在 YAML 中是不需要引号表示的,比如说 str: 表示一行字符串,如果字符串之间包含了空格或特殊字符的话,需要放在引号当中去把它引出来,例如 str:内容。

字符串内容中间有空格,所以需要用单引号引起来,实际上号双号都可以,并且双引号也不会对特殊字符进行转义。如果单引号之中还有单必须要连续使用两个单引号进行转义,比如说:str:labor’’s  day’,中间包含了一个单引号,时再加一个单引号,表示主键是一个单号就可以了

如果字符串比较多的话,我们可以把字符串写成很多行,从第二行开始,必须有一个单空格做一个缩进,换行符也会被转化为一个空格,所以大家要注意

有时候在运维的过程当中可能会遇到一些配置文件,由于配置文件的内容很多,也可以用多的方式在 YAML 中将它定义下来,如果使用行的话,可以使用|管道符,然后进行折叠

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
14 2
|
13天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
1月前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
72 1
|
2月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
2月前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
2月前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
143 17
|
2月前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
204 4
|
2月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
957 1
|
2月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
93 3
|
2月前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
140 1