概述
apiVersion: apps/v1 #指定api版本,此值必须在kubectl apiversion中
kind: Deployment #指定创建资源的角色/类型
metadata: #资源的元数据/属性
name: {{ include "monitor.fullname" . }} #资源的名字,在同一个namespace中必须唯一
labels: #设定资源的标签
app.kubernetes.io/name: {{ include "monitor.name" . }}
helm.sh/chart: {{ include "monitor.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app.kubernetes.io/name: {{ include "monitor.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "monitor.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }} #pod的名称,必须字段,名称唯一且对象创建后不可以被修改
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" #镜像仓库的路径/镜像的名称:镜像的标签
imagePullPolicy: {{ .Values.image.pullPolicy }} #镜像的下载策略。有三种:Always(总是去仓库下载) ,Never(从不去仓库下载) , IfNotPresent(如果本地没有就去仓库下载)
# command: [sleep]
# args: [100d]
volumeMounts:
- name: common-config
mountPath: /myapp/config #可以被容器挂载的存储卷的路径,路径不能包含':' 符号
- mountPath: {{.Values.public.mountPath}}
name: coredump
ports: #容器公开的端口列表。在这里公开端口可以为系统提供关于容器使用的网络连接的额外信息,但主要是提供信息。在这里不指定端口不会阻止该端口被公开。任何监听容器内默认的“0.0.0.0”地址的端口都可以从网络访问
- name: grpc
containerPort: 80 #pod暴露的端口,此端口仅是额外的信息,对端口是否被暴露没有影响
protocol: TCP
#端口的协议
env: #配置env
- name: MY_NODE_NAME #env名称
valueFrom: #指定env的来源
fieldRef:
fieldPath: spec.nodeName
# livenessProbe:
#
httpGet:
#
path: /
#
port: http
# readinessProbe:
#
httpGet:
#
path: /
#
port: http
resources: #资源的操作(cpu/内存占用管理)
{{- toYaml .Values.resources | nindent 12 }}
volumes:
- name: common-config
configMap:
name: common-config
- name: coredump
hostPath:
path: {{.Values.public.mountPath}}
{{- with .Values.nodeSelector }}
nodeSelector: #节点选择器
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity: #节点亲和性
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations: #污点和耐性
{{- toYaml . | nindent 8 }}
{{- end }}
⚫️部分解析
apiversion----------------版本选择
labels----------------------标签,标注信息,
spec------------------------指定该资源的内容 ,使用一些字段进行描述。
apiversion----------------控制pod部署node
tolerations----------------控制pod部署的条件,允许某些pod在指定的节点上或者不允许指定的pod到指定节点上或者必须要有某些的pod才能调度到指定节点上
参考文献
【K8s之yaml文件详解】--------理论
【K8s yaml文件注释】----------实操
【spec常用字段汇总】----------资源内容的编辑
【关于Affinity和nodeSelector以及Taints与容忍的理解】 —spec中的控制pod运行条件
最后
以上就是花痴胡萝卜为你收集整理的.yaml>初识与解读的全部内容,希望文章能够帮你解决.yaml>初识与解读所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复