前言:
k8s的yaml文件解释,如何部署一个java,jar包
YAML语法格式:
- 大小写敏感;
- 使用缩进表示层级关系;不支持Tab键制表符缩进,只使用空格缩进;
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格;
- 字符后缩进一个空格,如冒号,逗号,短横杆(-) 等
- “—” 表示YAML格式,一个文件的开始,用于分隔文件; 可以将创建多个资源写在同一个 yaml 文件中,用 —
隔开,就不用写多个 yaml 文件了。 - "#” 表示注释;
文章目录
- 前言:
- 一、具体的yaml
- 1.常用字段说明
- 2.详细的yaml文件
- 二、具体解释
- 2.Deployment解释:
- 2.Service的部分解释:
- 总结
一、具体的yaml
1.常用字段说明
apiVersion #API版本
kind #资源类型
metadata #资源元数据
spec #资源规格
replicas #副本数量
selector #标签选择器
template #pod模板
metadata #pod元数据
sepc #pod规格
containers #容器配置
2.详细的yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:name: javanamespace: sjbz
spec:selector:matchLabels:app: javareplicas: 1template:metadata:labels:app: javaspec:nodeSelector:name: "node-2"containers:- name: javaimage: user-center:sjbzenv:- name: TZvalue: Asia/ShanghaiimagePullPolicy: Neverports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: javanamespace: sjbz
spec:selector:app: javaports:- protocol: TCPport: 8080targetPort: 8080nodePort: 3314type: NodePort
二、具体解释
2.Deployment解释:
apiVersion: apps/v1 #指定使用的Kubernetes API版本,用于Deployment
kind: Deployment #定义资源类型为Deployment
metadata: #元数据部分,包含Deployment的名称和所属命名空间name: java #定义Pod名称,在同一个namespace空间中必须是唯一的namespace: sjbz #Pod所属的命名空间
spec: #规定Deployment的规范selector: #选择器用于标识此Deployment控制的PodmatchLabels: #匹配标签的条件,此处为app: javaapp: java #匹配上面的标签
replicas: 1: #指定要创建的Pod副本数
template: #定义创建Pod的模板metadata: #模板的元数据labels: #Pod的标签,此处为app: javaapp: java #匹配上面的标签,需与上面的标签定义的app保持一致spec: #定义Pod的规范nodeSelector: #Node选择器,使用标签来选择具体的Nodename: "node-2" #选择具有name: "node-2"标签的Node作为Pod的调度目标containers: #容器列表- name: java #容器的名称image: user-center:sjbz #使用的镜像env: #环境变量列表- name: TZ #环境变量的名称value: Asia/Shanghai #环境变量的值,设置时区为亚洲/上海imagePullPolicy: Never #指定不从远程仓库拉取镜像,而是使用本地已有镜像ports: #容器暴露的端口列表- containerPort: 8080 #容器监听的端口号
2.Service的部分解释:
apiVersion: v1 #必选,指定使用的Kubernetes API版本,用于Service
kind: Service #必选,定义资源类型为Service
metadata: #必选,元数据部分,包含Service的名称和所属命名空间name: javanamespace: sjbz
spec: #规定Service的规范selector: #选择器用于标识此Service关联的Podapp: java: #匹配标签的条件,与Deployment中的标签匹配
ports: #定义Service暴露的端口
- protocol: #TCP:端口协议为TCPport: 8080 #Service监听的端口号targetPort: 8080 #指定转发请求到Pod的哪个端口nodePort: 3314 #如果Service的类型为NodePort,则会将请求转发到节点上的该端口
type: NodePort #Service的类型为NodePort,允许通过节点的IP和指定的端口访问Service
总结
这个配置文件实现了在命名空间sjbz中创建一个名为java的Deployment和Service。Deployment使用标签选择器控制一个副本具有app: java的Pod,并在具有`name: "node-2