欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Kubernetes实战教程:基于Vue前端与Java后端的应用部署

Kubernetes实战教程:基于Vue前端与Java后端的应用部署

2025/2/24 16:32:22 来源:https://blog.csdn.net/m0_52537869/article/details/145656235  浏览:    关键词:Kubernetes实战教程:基于Vue前端与Java后端的应用部署

在云原生时代,Kubernetes 已成为管理容器化应用的核心平台。本文不仅详细介绍了 Kubernetes 的背景、架构和核心特性,还将通过一个具体的案例——基于 Vue 前端和 Java 后端的应用部署,带你一步步了解如何在 Kubernetes 集群中构建和运行一个完整的微服务系统。


一、Kubernetes 概述

1.1 Kubernetes 的起源与架构

Kubernetes 是由 Google 发起并开源的容器编排平台,采用主控制平面和工作节点的分布式架构。

  • 主控制平面 包含 API Server、Scheduler、Controller Manager 和 etcd,用于管理集群状态和调度任务。
  • 工作节点 运行 kubelet 和容器运行时(如 Docker、containerd),负责实际运行 Pod。

1.2 核心特性

  • 自愈能力:自动重启失败的容器,保持集群健康。
  • 自动扩展:根据负载自动调整 Pod 副本数。
  • 服务发现与负载均衡:通过 Service 对象为 Pod 提供稳定的访问入口。
  • 声明式配置:所有资源通过 YAML 文件描述,便于版本控制和持续交付。

二、案例概述:Vue 前端 + Java 后端

在本案例中,我们将构建一个包含两个部分的应用:

  • 前端:基于 Vue.js 开发的单页面应用
  • 后端:基于 Spring Boot 的 Java REST API

整个流程包括应用的打包、构建 Docker 镜像、编写 Kubernetes 部署配置文件以及在 Kubernetes 集群中的部署。


三、具体教程

3.1 环境准备

  1. 安装 Kubernetes 集群
    • 可选择使用 Minikube、Kind 在本地搭建测试集群,或使用云服务商提供的托管 Kubernetes 服务(如 AKS、EKS、GKE)。
  2. 安装必要工具
    • kubectl:Kubernetes 命令行工具
    • Docker:用于构建镜像
    • Git:代码管理工具

3.2 构建与打包应用

3.2.1 前端(Vue.js)
  1. 构建 Vue 应用
    在 Vue 项目目录下运行:

    npm install
    npm run build
    

    构建完成后,会在项目根目录生成一个 dist 目录,包含打包好的静态文件。

  2. 编写 Dockerfile
    在 Vue 项目根目录下创建一个 Dockerfile:

    # 使用 Nginx 作为前端服务器
    FROM nginx:alpine
    # 删除默认配置
    RUN rm -rf /usr/share/nginx/html/*
    # 将构建好的文件复制到 Nginx 目录
    COPY dist/ /usr/share/nginx/html
    # 暴露80端口
    EXPOSE 80
    CMD ["nginx", "-g", "daemon off;"]
    
  3. 构建镜像
    在终端中运行:

    docker build -t my-vue-app:latest .
    
3.2.2 后端(Java Spring Boot)
  1. 构建 Spring Boot 应用
    使用 Maven 进行打包:

    mvn clean package
    

    生成的 JAR 文件位于 target/ 目录下(例如 my-java-app.jar)。

  2. 编写 Dockerfile
    在 Spring Boot 项目根目录下创建 Dockerfile:

    FROM openjdk:11-jre-slim
    # 将 JAR 文件复制到容器中
    COPY target/my-java-app.jar /app/my-java-app.jar
    # 设置工作目录
    WORKDIR /app
    # 暴露应用端口
    EXPOSE 8080
    # 运行 Java 应用
    ENTRYPOINT ["java", "-jar", "my-java-app.jar"]
    
  3. 构建镜像
    在终端中运行:

    docker build -t my-java-app:latest .
    

四、编写 Kubernetes 配置文件

4.1 创建命名空间

为了便于管理,我们为应用创建一个命名空间:

apiVersion: v1
kind: Namespace
metadata:name: my-app

保存为 namespace.yaml 并运行:

kubectl apply -f namespace.yaml

4.2 部署前端应用

编写前端的 Deployment 和 Service 文件,保存为 vue-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: vue-deploymentnamespace: my-app
spec:replicas: 2selector:matchLabels:app: vue-apptemplate:metadata:labels:app: vue-appspec:containers:- name: vue-containerimage: my-vue-app:latestports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: vue-servicenamespace: my-app
spec:selector:app: vue-apptype: ClusterIPports:- port: 80targetPort: 80

应用配置:

kubectl apply -f vue-deployment.yaml

4.3 部署后端应用

编写后端的 Deployment 和 Service 文件,保存为 java-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: java-deploymentnamespace: my-app
spec:replicas: 2selector:matchLabels:app: java-apptemplate:metadata:labels:app: java-appspec:containers:- name: java-containerimage: my-java-app:latestports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: java-servicenamespace: my-app
spec:selector:app: java-apptype: ClusterIPports:- port: 8080targetPort: 8080

应用配置:

kubectl apply -f java-deployment.yaml

4.4 配置 Ingress(可选)

如果希望外部访问应用,可以配置 Ingress。以下是一个简单的示例,保存为 ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: my-app-ingressnamespace: my-appannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- host: myapp.example.comhttp:paths:- path: /vuepathType: Prefixbackend:service:name: vue-serviceport:number: 80- path: /javapathType: Prefixbackend:service:name: java-serviceport:number: 8080

应用配置:

kubectl apply -f ingress.yaml

(注意:需要部署 Ingress Controller,如 Nginx Ingress Controller)


五、验证与监控

  1. 验证部署状态
    使用以下命令查看所有 Pod 状态:

    kubectl get pods -n my-app
    
  2. 访问服务
    如果配置了 Ingress,可在浏览器中访问 http://myapp.example.com/vuehttp://myapp.example.com/java 进行验证;否则可通过 NodePort 或 Port Forward 方式测试服务。

  3. 监控集群
    配置 Prometheus、Grafana 等监控工具,可以实时查看应用运行状态、资源使用情况以及日志信息,为后续故障排查和性能优化提供支持。


六、结语

本文通过 Vue 前端和 Java 后端的具体案例,详细演示了如何利用 Kubernetes 构建、部署和管理一个完整的微服务应用。从构建 Docker 镜像到编写 Kubernetes YAML 文件,再到部署 Ingress 实现外部访问,每一步都体现了 Kubernetes 的自动化和灵活性。

通过实践这一教程,你不仅可以掌握 Kubernetes 的基本操作,还能了解如何将应用组件化、服务化,从而为构建高效、弹性和可扩展的云原生应用打下坚实基础。

欢迎在评论区分享你的问题与经验,一起探索 Kubernetes 带来的无限可能!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com