Springboot项目部署到K8s

在上一篇文章中,实现了Springboot项目打包为镜像推送到Docker远程仓库。

今天把Springboot项目部署到K8s

编排部署文件

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

图片[1]|Springboot项目部署到K8s|LYZ-ling云智

可以看到成功部署了两个实例。

3、查看Service服务

kubectl get svc

图片[2]|Springboot项目部署到K8s|LYZ-ling云智

4、验证服务

图片[3]|Springboot项目部署到K8s|LYZ-ling云智

kubectl port-forward pod/cloud-native-57fdb49549-z7j7q 31109:8080

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容