开发者学堂课程【Kubernetes 极速入门:K8S 集群资源清单(YAML)文件书写方法_资源清单描述方法】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/658/detail/10906
K8S 集群资源清单(YAML)文件书写方法_资源清单描述方法
内容介绍:
一、清单描述方法
二、常用字段
三、举例说明
四、总结
五、课程预约
一、清单描述方法
我们使用 YAML 来完成对 k8s 集群当中的资源对象的一个描述方法的介绍。
在 k8s 集群当中,一般使用 YAML 格式的文件来创建符合,我们预期期望的 pod,比如 pod 的标签、pod 里边包含的容器的名称、容器的镜像、容器所打开的端口,容器所使用的存储券等等,这些都要写到 YAML 格式的文件当中,这种格式的文件就叫做资源清单文件。
如何来描述 pod。使用一些常用字段。
二、常用字段
第一个常用字段是 version,意思为版本,它所表示的类型是字符型,这里指的是资源在 k8s 当中所使用的 API 的版本,目前上是 v1,可以通过 kubectl api- versions 命令查询。
在 k8s 当中创建某个资源,需要请求 k8s 当中某一种类型资源的版本及类型。
第二个为 kind,资源,字符串类型,这里指的是yam文件定义的资源类型和角色,比如 pod、控制器、服务。
描述一个资源对象,要起一个名字、加上标签。
即 metadata,对象类型,是元数据对象,固定值就写 metadata。
资源对象的标签、资源对象的名字,都可以在里面写。
如 metadata.name,表示资源对象的名称,即元数据对象的命名空间,由我们自身定义。
metadata.namespace,表示资源对象所处的命名空间。
version、kind、metadata 相当重要。
Spec,用来定义资源对象详细的值,比如资源对象相关的期望、描述,都写到 spec里。
spec.containers,对象类型是 list 列表,表示可以在列表里面定义N多个容器。
定义容器的内容包括:
容器名称 spec.containers[].name
容器所处的镜像 spec.containers[].image
容器的镜像的下载策略 spec.containers[].imagePullPolicy
由于我们经常使用容器,要注意 always 经常下载,never 从不下载,ifnotpresent本地有镜像使用镜像,没有镜像就下载。
下面还有很多:
包括 spec.containers[].command[]在容器当中如何运行命令
spec.containers[].args 在容器当中运行命令所对应的参数
spec.containers[].workDir 在容器中的工作目录
spec.containers[].volumeMountains 券的挂载
spec.containers[].volumeMountains[].name 挂载券的名称等,都可以定义。
定义 spec.containers[].ports.[] 容器所对应的端口
spec.containers[].ports[].name 给容器端口起的名字,便于后续直接使用。
指定 spec.containers[].ports[].containerPort 容器所对应的端口。
如果用主机监听端口,可以定义。spec.containers[].ports[].hostPort主机hostPort这一端口
定义 spec.containers[].ports[].protocol 端口的环境变量。
这些都是在 spec 中定义的,由此可见 spec 可以定义很多的资源。
三、举例说明
·创建一个 namespace
应如下书写:
apiVersion: v1
Kind: Namespace
metadata:
Name: test
apiVersion 指明我们的资源对象 k8s 中,如果请求 k8s 集群来创建,api 的版本为v1
kind 表示类型、种类,创建一个Namespace类型
metadata 是元数据
name:test 前面空两格
后续通过创建 namespace 的方式,便于大家熟练掌握
·创建一个 pod
apiVersion:v1
Kind: Pod
metadata:
name: pod1
spec
containers
- name: nginx-containers
Image: nginx:latest
Kind: Pod 表示资源对象为 pod
metadata:
name:pod1 指的是资源对象名字为 pod1
spec 表示对资源对象的期望,用来标记
containers 下面的值是列表的形式,列表用数组的方式表现
- name: nginx-containers“-”连词符与 containers 对齐,空一格加 name,name 指的是在pod当中所运行的容器的名字 nginx-containers
Image 表示容器启动用到的镜像,latest 是镜像的版本
这就是用 YAML 文件来表述创建一个 pod 资源清单。
四、总结
首先是 YAML 文件的介绍,YAML 是什么,仍是一种标记语言,可读性高,书写较为方便,在很多地方可以用到。
其次是 YAML 的基本语法,记住使用空格作为缩进,缩进空格数目不太终于,只要相同层级的元素对齐就可以,低版本不允许使用 Tab 键,只允许使用空格;使用#标识注释,从这个再次,YAML 支持数据结构,包括对象、数组、纯量型的数据结构。
最后是资源清单的表述方面,介绍常用字段,如 kind、metadata 等,结合实例说明学习。