Skip to content

1.YAML文件概述

​ k8s集群中对资源管理和资源对编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到YAML格式文件中,我们把这种文件叫做资源清单文件,通过kubectl命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署.

2.YAML书写格式介绍

YAML:是一种标记语言,为了强调这种语言以数据做为中心,而不是以标记语言为重点,YAML是一个可读性高,用来表达数据序列的格式

3.Yaml组成部分

  1. apiVersion:指定k8s API的版本,例如v1。
  2. kind:定义要创建的资源对象类型,如Pod、Service、Namespace等。
  3. metadata:提供资源对象的元数据,包括名称、命名空间、标签和注解。
  4. spec:详细描述资源对象的期望状态,包括容器配置、端口设置、存储卷等。

由两部分组成,

(1)控制器定义

(2)被控制对象

image-20240513112714422

  • 查看支持版本
shell
[root@kube-master ~]# kubectl api-versions
admissionregistration.k8s.io/v1
apiextensions.k8s.io/v1
apiregistration.k8s.io/v1
apps/v1
authentication.k8s.io/v1
authorization.k8s.io/v1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1
coordination.k8s.io/v1
crd.projectcalico.org/v1
discovery.k8s.io/v1
discovery.k8s.io/v1beta1
events.k8s.io/v1
events.k8s.io/v1beta1
flowcontrol.apiserver.k8s.io/v1beta1
metrics.k8s.io/v1beta1
networking.k8s.io/v1
node.k8s.io/v1
node.k8s.io/v1beta1
policy/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
scheduling.k8s.io/v1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
[root@kube-master ~]# kubectl api-versions
admissionregistration.k8s.io/v1
apiextensions.k8s.io/v1
apiregistration.k8s.io/v1
apps/v1
authentication.k8s.io/v1
authorization.k8s.io/v1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1
coordination.k8s.io/v1
crd.projectcalico.org/v1
discovery.k8s.io/v1
discovery.k8s.io/v1beta1
events.k8s.io/v1
events.k8s.io/v1beta1
flowcontrol.apiserver.k8s.io/v1beta1
metrics.k8s.io/v1beta1
networking.k8s.io/v1
node.k8s.io/v1
node.k8s.io/v1beta1
policy/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
scheduling.k8s.io/v1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
shell
[root@kube-master ~]# kubectl api-resources
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
bindings                                       v1                                     true         Binding
componentstatuses                 cs           v1                                     false        ComponentStatus
configmaps                        cm           v1                                     true         ConfigMap
endpoints                         ep           v1                                     true         Endpoints
events                            ev           v1                                     true         Event
limitranges                       limits       v1                                     true         LimitRange
namespaces                        ns           v1                                     false        Namespace
nodes                             no           v1                                     false        Node
persistentvolumeclaims            pvc          v1                                     true         PersistentVolumeClaim
persistentvolumes                 pv           v1                                     false        PersistentVolume
pods                              po           v1                                     true         Pod
podtemplates                                   v1                                     true         PodTemplate
replicationcontrollers            rc           v1                                     true         ReplicationController
resourcequotas                    quota        v1                                     true         ResourceQuota
secrets                                        v1                                     true         Secret
serviceaccounts                   sa           v1                                     true         ServiceAccount
services                          svc          v1                                     true         Service
mutatingwebhookconfigurations                  admissionregistration.k8s.io/v1        false        MutatingWebhookConfiguration
。。。。
[root@kube-master ~]# kubectl api-resources
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
bindings                                       v1                                     true         Binding
componentstatuses                 cs           v1                                     false        ComponentStatus
configmaps                        cm           v1                                     true         ConfigMap
endpoints                         ep           v1                                     true         Endpoints
events                            ev           v1                                     true         Event
limitranges                       limits       v1                                     true         LimitRange
namespaces                        ns           v1                                     false        Namespace
nodes                             no           v1                                     false        Node
persistentvolumeclaims            pvc          v1                                     true         PersistentVolumeClaim
persistentvolumes                 pv           v1                                     false        PersistentVolume
pods                              po           v1                                     true         Pod
podtemplates                                   v1                                     true         PodTemplate
replicationcontrollers            rc           v1                                     true         ReplicationController
resourcequotas                    quota        v1                                     true         ResourceQuota
secrets                                        v1                                     true         Secret
serviceaccounts                   sa           v1                                     true         ServiceAccount
services                          svc          v1                                     true         Service
mutatingwebhookconfigurations                  admissionregistration.k8s.io/v1        false        MutatingWebhookConfiguration
。。。。

4.YAML基本语法

  • 缩进:使用空格进行缩进,不同级别的数据使用不同数量的空格进行区分。
  • 键值对:使用冒号:分隔键和值。
  • 列表:使用短横线-加上空格来开始列表中的项
  • 开始用三个--- 开始,代表新的yaml资源开始
  • 使用#标识注释

用空格做为缩进

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

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

4.1 YAML支持的数据结构

对象

  • 键值对的集合
  • 又称为映射(mapping)/哈希(hashes)/字典(dictionary)
yaml
对象类型:对象的一组键值对,使用冒号结构表示
name:Tom
age:18

Yaml 也允许另一种写法,将所有键值对写成一个行内对象
hash:{name:Tom,age:18}
对象类型:对象的一组键值对,使用冒号结构表示
name:Tom
age:18

Yaml 也允许另一种写法,将所有键值对写成一个行内对象
hash:{name:Tom,age:18}

数组

  • 一组按次序排列的值
  • 又称为序列(sequence)/列表(list)
yaml
数组类型:一组连词线开头的行,构成一个数组

People
-  tom
-  han

数组也可以采用行内表示法
People: [tom,han]
数组类型:一组连词线开头的行,构成一个数组

People
-  tom
-  han

数组也可以采用行内表示法
People: [tom,han]

4.2 查看文档

shell
kubectl explain pods
kubectl explain pods