1.YAML文件概述
k8s集群中对资源管理和资源对编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到YAML格式文件中,我们把这种文件叫做资源清单文件,通过kubectl命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署.
2.YAML书写格式介绍
YAML:是一种标记语言,为了强调这种语言以数据做为中心,而不是以标记语言为重点,YAML是一个可读性高,用来表达数据序列的格式
3.Yaml组成部分
- apiVersion:指定k8s API的版本,例如v1。
- kind:定义要创建的资源对象类型,如Pod、Service、Namespace等。
- metadata:提供资源对象的元数据,包括名称、命名空间、标签和注解。
- spec:详细描述资源对象的期望状态,包括容器配置、端口设置、存储卷等。
由两部分组成,
(1)控制器定义
(2)被控制对象
- 查看支持版本
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