规则:
大小写敏感
通过缩进表示层级关系
禁止使用tab缩进,只能使用空格键
缩进的空格数目不重要,只要相同层级左对齐
使用#表示注释
引号的区别:
单引号(''): 特殊字符作为普通字符串处理
双引号(""): 特殊字符作为本身想表示的意思
锚点与引用:
使用&定义数据锚点,即要复制的数据
使用*引用锚点数据,即数据的复制目的地
数据类型:
YAML允许使用感叹号(!)强制转换数据类型,单叹号通常是自定义类型,双叹号是内置类型
数据类型分为纯量、数组(用-表示)、对象
apiVersion: group/api-version # 版本信息
kind: # 资源类别
metadata: # 资源元数据
name: # 元数据对应的名称
namespace: # 元数据所属的命名空间
lables: # 对资源打上便签供后续使用
annotations: # 主要目的是方便用户阅读查找
spec: # 资源对象的详细定义
progressDeadlineSeconds #升级过程中的最大时间
replicas: 3 #定义副本数量
revisionHistoryLimit #定义保留的升级记录数目
strategy:
rollingUpdate: #滚动更新
maxSurge: 25% #更新过程中Pod总数超过Pod期望副本数部分的最大值
maxUnavailable: 25% #更新过程中不可用状态的Pod数量的上限
type: RollingUpdate
#strategy:
# Recreate: #杀掉Pod后重建
# maxSurge: 25%
# maxUnavailable: 25%
type: Recreate
selector: #定义选择器
matchLabels: #匹配标签
app: nginx #匹配标签的名称
template: #定义Pod模板
metadata:
labels:
app: nginx
spec: # 资源对象的详细定义
containers: #定义容器信息
- name: nginx #容器名,与标签名要相同
env:[] #容器启动的环境变量
- name:
value:
volumeMounts: #挂载外部文件到容器
- name: #volume的name
mountPath:/home #挂载到容器中的指定路径
image: nginx:1.15.4 #容器使用的镜像以及版本
imagePullPolicy:Always #镜像拉取策略:每次部署时都重新拉取镜像
ports: #定义容器的对外端口
- containerPort: 80
protocol:TCP
workingDir: #指定容器的工作目录
resources:
limits: #资源最大申请量
cpu: '2'
memory: 1G
requests: #资源最小申请量
cpu: 200m
memory: 500M
livenessProbe: #存活探针
httpGet: #http方式
path: #路径
port: #端口
httpHeaders: #请求头设置
- name:
value:
initialDelaySeconds: #开始探针检测的等待秒数
periodSeconds: #执行探测的间隔
timeoutSeconds: #探测超时的时间
successThreshold: #探针成功的阈值
failureThreshold: #探针失败的阈值
readinessprobe: #就绪探针
tcpSocket: #tcp端口探测模式
port: #需要探测的容器端口
terminationMessagePath: /dev/termination-log #容器异常终止消息的存放路径
terminationMessagePolicy: File #异常终止消息存为文件
dnsPolicy: ClusterFirst|Default|None #优先使用k8s的DNS服务|继承Pod所在宿主机的DNS服务|忽略k8s的DNS服务并自定义
restartPolicy: Always #重启策略
schedulerName: default-scheduler #调度器
securityContext: {}
terminationGracePeriodSeconds: 30 #优雅关闭时间,收到SIDTERM停止请求后,进行资源释放的宽限期
status:
availableReplicas: 1
conditions:
- lastTransitionTime: '2019-08-07T03:43:50Z'
lastUpdateTime: '2020-01-13T01:12:14Z'
message: ReplicaSet "rmlistapi-6fbbf8d969" has successfully progressed.
reason: NewReplicaSetAvailable
status: 'True'
type: Progressing
- lastTransitionTime: '2021-04-02T14:59:33Z'
lastUpdateTime: '2021-04-02T14:59:33Z'
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: 'True'
type: Available
observedGeneration: 12
readyReplicas: 1
replicas: 1
updatedReplicas: 1
补充:
Lifecycle字段,定义的是容器生命周期钩子函数Container Lifecycle Hooks。其的作用是在容器状态发生变化时触发一系列钩子函数。如preStart、preStop等
# *********
spec: # 资源对象的详细定义
template: # 定义pod的模板
# *********