如何访问 Spring Boot 应用程序的 Minikube 服务

KubernetesKubernetesBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程将指导你完成访问适用于Spring Boot应用程序的Minikube服务的过程。你将学习如何在本地机器上设置Minikube环境,部署Spring Boot应用程序,以及使用Kubernetes命令(包括有用的“minikube service hello-spring-boot --url”命令)来公开和管理服务。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/ConfigurationandVersioningGroup(["Configuration and Versioning"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/run("Run") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/config("Config") subgraph Lab Skills kubernetes/initialization -.-> lab-392848{{"如何访问 Spring Boot 应用程序的 Minikube 服务"}} kubernetes/get -.-> lab-392848{{"如何访问 Spring Boot 应用程序的 Minikube 服务"}} kubernetes/create -.-> lab-392848{{"如何访问 Spring Boot 应用程序的 Minikube 服务"}} kubernetes/run -.-> lab-392848{{"如何访问 Spring Boot 应用程序的 Minikube 服务"}} kubernetes/config -.-> lab-392848{{"如何访问 Spring Boot 应用程序的 Minikube 服务"}} end

Minikube与Kubernetes简介

Kubernetes是一个强大的开源容器编排平台,已成为大规模管理和部署容器化应用程序的事实上的标准。另一方面,Minikube是一个工具,它允许你在本地机器上运行单节点Kubernetes集群,使其成为开发和测试基于Kubernetes的应用程序的理想环境。

在深入了解Minikube之前,理解Kubernetes的基本概念至关重要。Kubernetes提供了一种管理和编排容器化应用程序的方法,包括部署、扩展和网络等任务。它采用声明式方法,你只需定义应用程序的期望状态,Kubernetes会负责将该状态变为现实。

作为本地Kubernetes实现,Minikube允许开发人员在其机器上轻松设置Kubernetes环境,而无需完整的Kubernetes集群。这使其成为学习、测试和开发基于Kubernetes的应用程序的绝佳选择,因为它提供了一个自包含且隔离的环境。

graph TD A[Kubernetes] --> B[Minikube] B --> C[本地开发] B --> D[测试] B --> E[学习]

Minikube支持多种Kubernetes功能,包括:

功能 描述
插件 Minikube提供了一组预配置的插件,如仪表板、注册表和指标服务器,可以轻松启用和禁用。
驱动程序 Minikube支持多种虚拟化驱动程序,包括VirtualBox、VMware和Docker,允许你选择最适合你开发环境的驱动程序。
网络 Minikube为你的Kubernetes集群设置一个虚拟网络,为你的服务提供IP地址和DNS解析。
存储 Minikube提供持久存储选项,包括使用本地目录或基于云的存储解决方案。

通过了解Kubernetes的基础知识和Minikube的功能,你可以有效地利用这个工具来开发、测试和学习基于Kubernetes的应用程序,包括Spring Boot应用程序。

在本地机器上设置Minikube环境

前提条件

在本地机器上设置Minikube之前,你需要确保已安装以下前提条件:

  • Docker:Minikube可以使用Docker作为其虚拟化驱动程序,因此你需要在系统上安装Docker。
  • 虚拟化软件:如果你不使用Docker作为驱动程序,则需要安装虚拟化软件,如VirtualBox或VMware。
  • Kubectl:Kubectl是Kubernetes命令行工具,你将使用它与Minikube集群进行交互。

安装Minikube

  1. 从官方Minikube GitHub仓库为你的操作系统下载Minikube二进制文件:https://github.com/kubernetes/minikube/releases
  2. 将下载的二进制文件移动到系统路径中的一个目录,如/usr/local/bin
sudo mv minikube /usr/local/bin/
  1. 使二进制文件可执行:
sudo chmod +x /usr/local/bin/minikube

启动Minikube

安装好Minikube后,你可以使用以下命令启动Minikube集群:

minikube start --driver=docker

此命令将使用Docker驱动程序启动一个Minikube集群。如果你使用的是不同的虚拟化驱动程序,请将docker替换为相应的驱动程序(例如,virtualboxvmware)。
集群启动后,你可以使用以下命令验证Minikube集群的状态:

minikube status

这将输出Minikube集群的当前状态,包括Kubernetes组件的运行状态。

访问Minikube仪表板

Minikube附带了一个基于Web的仪表板,为管理Kubernetes资源提供了用户友好的界面。你可以通过运行以下命令访问仪表板:

minikube dashboard

这将在你的默认Web浏览器中打开Minikube仪表板,使你能够查看和管理Kubernetes资源。
通过在本地机器上设置Minikube,你现在拥有了一个功能齐全的Kubernetes环境,可用于开发、测试和学习基于Kubernetes的应用程序,包括Spring Boot应用程序。

将Spring Boot应用程序部署到Minikube

构建Spring Boot应用程序

让我们先创建一个可以部署到Minikube的简单Spring Boot应用程序。你可以使用Spring Initializr(https://start.spring.io/)来生成一个基本的Spring Boot项目,也可以手动创建一个。

以下是一个简单Spring Boot应用程序的示例:

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/")
    public String hello() {
        return "Hello from Spring Boot!";
    }
}

创建Docker镜像

要将Spring Boot应用程序部署到Minikube,你需要将其打包成一个Docker镜像。你可以通过在Spring Boot项目的根目录中创建一个Dockerfile来实现:

FROM openjdk:11-jdk-slim
COPY target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

这个Dockerfile使用openjdk:11-jdk-slim基础镜像,将Spring Boot应用程序的JAR文件复制到容器中,并设置入口点来运行应用程序。

使用以下命令构建Docker镜像:

docker build -t your-spring-boot-app.

your-spring-boot-app替换为你喜欢的Docker镜像名称。

部署到Minikube

现在你已经有了Spring Boot应用程序的Docker镜像,可以将其部署到Minikube集群。首先,确保你的Minikube集群正在运行:

minikube status

接下来,使用kubectl命令行工具为你的应用程序创建一个Kubernetes部署和一个服务:

kubectl create deployment spring-boot-app --image=your-spring-boot-app
kubectl expose deployment spring-boot-app --type=NodePort --port=8080

这将创建一个名为spring-boot-app的Kubernetes部署,它使用你之前构建的Docker镜像,以及一个在随机端口上公开应用程序的服务。

你可以使用以下命令检查部署和服务的状态:

kubectl get deployment spring-boot-app
kubectl get service spring-boot-app

输出将显示已部署应用程序的详细信息,包括你可以用来访问它的URL。

通过遵循这些步骤,你已成功将Spring Boot应用程序部署到Minikube集群,使其可以进行进一步的开发、测试和探索。

在Minikube中公开和访问Spring Boot服务

公开Spring Boot服务

当你将Spring Boot应用程序部署到Minikube时,该应用程序在Kubernetes Pod中运行。要使该应用程序在Minikube集群外部可访问,你需要公开该服务。
Kubernetes提供了不同的方式来公开服务,例如NodePortLoadBalancerIngress。在本示例中,我们将使用NodePort服务类型,它会在Minikube节点上的随机端口公开服务。

kubectl expose deployment spring-boot-app --type=NodePort --port=8080

此命令创建一个NodePort类型的Kubernetes服务,该服务在随机端口公开spring-boot-app部署。

访问Spring Boot服务

要访问在Minikube中运行的Spring Boot服务,你可以使用以下步骤:

  1. 获取公开服务的URL:
minikube service spring-boot-app --url

此命令将输出你可用于访问Spring Boot应用程序的URL,其格式为http://<minikube-ip>:<node-port>。2. 在你的Web浏览器中打开该URL:

http://<minikube-ip>:<node-port>

<minikube-ip>替换为你的Minikube节点的IP地址,将<node-port>替换为上一条命令返回的端口号。
你应该会在Web浏览器中看到“Hello from Spring Boot!”消息,这表明你的Spring Boot应用程序正在Minikube集群中成功运行并可访问。

graph TD A[Minikube集群] --> B[Spring Boot Pod] B --> C[Kubernetes服务] C --> D[外部访问]

通过在Minikube中公开和访问你的Spring Boot服务,你可以轻松地在Kubernetes环境中测试和验证应用程序的行为,为进一步的开发和部署奠定基础。

使用Kubernetes命令管理Minikube服务

既然你已经将Spring Boot应用程序部署到了Minikube集群,那么你可以使用各种Kubernetes命令来管理服务并与之交互。

列出Kubernetes资源

你可以使用kubectl get命令来列出Minikube集群中的不同Kubernetes资源,例如Pod、部署和服务:

kubectl get pods
kubectl get deployments
kubectl get services

这将为你提供Kubernetes资源当前状态的概述。

检查Kubernetes资源

要获取特定资源的更详细信息,可以使用kubectl describe命令:

kubectl describe pod <pod名称>
kubectl describe deployment <部署名称>
kubectl describe service <服务名称>

<pod名称><部署名称><服务名称>替换为你的资源的相应名称。

扩展部署

你可以通过调整部署中的副本数量轻松扩展Spring Boot应用程序:

kubectl scale deployment spring-boot-app --replicas=3

此命令会将spring-boot-app部署扩展到3个副本,确保你的应用程序能够处理增加的流量或负载。

更新部署

如果你需要更新Spring Boot应用程序,可以通过构建新的Docker镜像并更新部署来实现:

docker build -t your-spring-boot-app:v2.
kubectl set image deployment/spring-boot-app spring-boot-app=your-spring-boot-app:v2

这将更新部署以使用新的Docker镜像版本,触发应用程序的滚动更新。

故障排除

如果你在Minikube中运行Spring Boot应用程序时遇到任何问题,可以使用以下命令来帮助进行故障排除:

kubectl logs <pod名称>
kubectl exec -it <pod名称> -- /bin/bash

这些命令分别允许你查看应用程序的日志并访问容器的 shell,帮助你诊断和解决任何问题。

通过掌握这些Kubernetes命令,你可以有效地管理和维护部署到Minikube环境中的Spring Boot应用程序,确保开发和测试体验顺畅。

总结

在本教程中,你已经学习了如何设置Minikube环境、部署Spring Boot应用程序以及访问在Minikube中运行的服务。通过使用“minikube service hello-spring-boot --url”命令,你可以轻松访问Spring Boot服务并在本地测试应用程序。借助从本教程中学到的知识,你将能够利用Minikube和Kubernetes的强大功能来简化Spring Boot应用程序的开发和部署过程。