编排部署文件
springboot.yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloud-native
spec:
replicas: 2
selector:
matchLabels:
app: cloud-native
template:
metadata:
labels:
app: cloud-native
spec:
containers:
- name: cloud-native
image: lyzplus/springboot-hello1.0:v1
---
apiVersion: v1
kind: Service
metadata:
name: cloud-native-service
namespace: default
spec:
selector:
app: cloud-native
type: NodePort
ports:
- name: cloud-native
protocol: TCP
port: 80
targetPort: 8085
部署文件说明
这个配置文件的作用是,创建一个名为 cloud-native 的部署,它管理两个 Pod,每个 Pod 运行一个名为 cloud-native 的容器,该容器使用 lyzplus/springboot-hello1.0:v1 镜像,并监听 8085 端口。同时,创建一个名为 cloud-native-service 的服务,它代理这两个 Pod,并将它们暴露为一个 NodePort 类型的服务,该服务使用 80 端口,并转发请求到 Pod 的 8085 端口。这样,外部可以通过访问任意节点的 80 端口,来访问 Pod 中的 Spring Boot 应用程序。
部署文件逐行解释
apiVersion: apps/v1
指定了部署的 API 版本,这是 Kubernetes 资源的一种分类。
kind: Deployment
指定了部署的类型,这是 Kubernetes 资源的一种具体实现。
metadata:
包含了部署的元数据,如名称、标签等。
name: cloud-native
指定了部署的名称,这是部署的唯一标识符。
spec:
包含了部署的规范,描述了部署的期望状态。
replicas: 2
指定了部署要创建的副本集的数量,即 Pod 的数量。
selector:
定义了部署如何选择要管理的 Pod,通过匹配 Pod 的标签。
matchLabels:
指定了要匹配的标签的键值对,这里是app: cloud-native
。
template:
定义了 Pod 的模板,描述了 Pod 的元数据和规范。
labels:
指定了 Pod 的标签,这里也是app: cloud-native
,与部署的选择器一致。
spec:
包含了 Pod 的规范,描述了 Pod 的容器和其他设置。
containers:
定义了 Pod 中的容器列表,可以有多个。
name: cloud-native
指定了容器的名称,这是容器的唯一标识符。
image: lyzplus/springboot-hello1.0:v1
指定了容器的镜像,这是容器运行的软件。
---
表示了配置文件的分隔符,用于定义多个资源。
apiVersion: v1
指定了服务的 API 版本,这是 Kubernetes 资源的一种分类。
kind: Service
指定了服务的类型,这是 Kubernetes 资源的一种具体实现。
metadata:
包含了服务的元数据,如名称、命名空间等。
name: cloud-native-service
指定了服务的名称,这是服务的唯一标识符。
namespace: default
指定了服务所属的命名空间,这是 Kubernetes 资源的一种逻辑分组。
spec:
包含了服务的规范,描述了服务的行为和属性。
selector:
定义了服务如何选择要代理的 Pod,通过匹配 Pod 的标签。
app: cloud-native
指定了要匹配的标签的键值对,这里与部署和 Pod 的标签一致。
type: NodePort
指定了服务的类型,这是一种将服务暴露给外部的方式,通过在每个节点上分配一个端口号。
ports:
定义了服务的端口列表,可以有多个。
name: cloud-native
指定了端口的名称,这是端口的唯一标识符。
protocol: TCP
指定了端口的协议,这是端口的通信方式。
port: 80
指定了端口的号码,这是服务的内部端口号。
targetPort: 8085
指定了目标端口的号码,这是 Pod 的容器端口号。
部署到K8S
1、部署
kubectl apply -f springboot.yaml
2、查看Deployment
kubectl get deployment
可以看到成功部署了两个实例。
3、查看Service服务
kubectl get svc
4、验证服务
我使用的Desktop Docker自带的K8s部署,如果使用127.0.0.1无法访问使用kubectl port-forward 命令将 pod 或 service 的端口映射到本地端口。
kubectl port-forward pod/cloud-native-57fdb49549-z7j7q 31109:8080
© 版权声明
THE END
暂无评论内容