在Windows上安装Kubernetes并部署Spring Boot应用程序的分步指南
这本全面的指南将引导您完成在Windows机器上安装Kubernetes并将SpringBoot应用程序部署到Kubernetes集群的过程。您将学习如何在启用Kubernetes的情况下设置Docker Desktop,构建SpringBoot应用并将其推送到Docker Hub,创建Kubernetes部署和服务配置,最后在Kubernetes集群中访问您的应用。通过遵循这些步骤,您可以利用容器化和编排的强大功能来增强应用程序的可伸缩性和可靠性。
源代码链接链接https://github.com/vinosubi/spring-boot-k8s-demo.git
选项1:使用Docker Desktop与Kubernetes集成
Docker Desktop提供了内置的Kubernetes设置,使其更容易入门。具体操作如下:
要在Windows上安装Docker Desktop,请执行以下步骤:
步骤1:检查系统要求
确保您的系统满足以下要求:
- Windows 10 64位:专业版、企业版或教育版(Build 16299或更高版本)。
- 必须启用Hyper-V和容器Windows功能。
启用虚拟机平台
- 必须在BIOS/UEFI中启用虚拟化。用于BIOS
步骤2:下载Docker Desktop
- 转到Docker Desktop下载页面。
- 单击“下载适用于Windows”按钮。
步骤3:安装Docker Desktop
- 运行下载的安装程序。
- 按照屏幕上的说明完成安装。
步骤4:启用Hyper-V、虚拟机平台和容器
如果尚未启用,则需要启用Hyper-V和容器功能:
- 打开控制面板。
- 转到“程序”“打开或关闭Windows功能”。
- 勾选“Hyper-V”和“容器”。
- 选中“虚拟机平台”框
- 点击“确定”并在出现提示时重新启动计算机。
Step 5:启动Docker桌面
- 安装完成后,从开始菜单启动Docker Desktop。
- Docker Desktop将启动并显示欢迎屏幕。
Docker桌面窗口
步骤6:验证安装
- 打开命令提示符或PowerShell窗口。
- 运行以下命令来验证Docker是否正确安装:
你应该看到Docker版本信息。
Step 7:在Docker Desktop中启用Kubernetes
- 打开Docker Desktop。
- 转到设置 Kubernetes。
- 选中启用Kubernetes并单击应用重新启动。
- Docker Desktop将安装一个单节点Kubernetes集群。这可能需要几分钟时间。
四、通过检查Docker Desktop菜单中的Kubernetes图标确认Kubernetes正在运行。****
步骤8:安装kubectl(Kubernetes CLI)
- 通过运行以下命令,验证
kubectl
是否****
kubectl version --client
如果您看到版本详细信息,则已安装kubectl
;否则,请手动安装。****
2. 要手动安装,请从Kubernetes发布页面下载kubectl
。找到最新的稳定版本并下载Windows版的kubectl.exe
文件。
2.1为kubectl创建一个目录:
- 创建一个新目录,用于存储
kubectl.exe
文件。例如,您可以在kubectl
驱动器中创建一个名为C:
的目录。
mkdir C:\kubectl
2.2将kubectl.exe文件移动到以下目录:
- 将下载的
kubectl.exe
文件移动到C:\kubectl
目录。
2.3步骤3:将kubectl添加到系统路径
- 打开开始菜单并搜索“环境变量”:单击“编辑系统环境变量”。
- 在系统属性窗口中,点击“环境变量“按钮:
- 在“环境变量”窗口的“系统变量”下,找到“路径”变量并选择它。点击“编辑“:
- 在Edit Environment Variable窗口中,点击“New“并添加kubectl目录的路径(例如,
C:\kubectl
)。点击“确定“关闭所有窗口。
2.4:验证安装
- 打开命令提示符或PowerShell:
- 运行以下命令,验证kubectl是否安装正确:
kubectl version
您应该看到输出显示了kubectl的客户端和服务器版本。
Step 9:测试Kubernetes安装
- 运行以下命令检查Kubernetes是否正常运行:
kubectl get nodes
下面是一个包含简单REST API端点的样例SpringBoot项目。该项目将按照提供的步骤进行容器化并部署在Kubernetes上。
1.设置SpringBoot项目
使用Spring Initializr或您首选的IDE创建一个新的SpringBoot项目:
项目元数据:
- 组:
com.example
- 产品编号:
spring-boot-k8s
- 姓名:#1
- 包装:
com.example.springbootk8s
- Java版本:
17
依赖关系:
- Spring Web(用于创建REST API)
- SpringBootDevTools(可选,方便开发)
项目结构
spring-boot-k8s
│
├── src
│ └── main
│ ├── java
│ │ └── com.example.springbootk8s
│ │ └── SpringBootK8sApplication.java
│ │ └── controller
│ │ └── HelloController.java
│ └── resources
│ └── application.properties
├── Dockerfile
└── pom.xml
2.代码实现
SpringBootK8sApplication.java
这是引导SpringBoot应用程序的主应用程序文件。
package com.example.springbootk8s;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootK8sApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootK8sApplication.class, args);
}
}
HelloController.java
package com.example.springbootk8s.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, Kubernetes from Spring Boot!";
}
}
application.properties
spring.application.name=spring-boot-k8s
3. Dockerfile文件
在项目的根目录中创建一个Dockerfile
来容器化SpringBoot应用程序。
# Use a lightweight Java image
FROM openjdk:17-jdk-alpine
# Set the JAR file path
ARG JAR_FILE=target/*.jar
# Copy the JAR file into the container
COPY ${JAR_FILE} app.jar
# Run the application
ENTRYPOINT ["java", "-jar", "/app.jar"]
Dockerfile文件
4.构建项目和Docker镜像
- 将SpringBoot应用程序打包到一个JAR文件中:
mvn clean package
2.构建Docker镜像:
docker build -t my-spring-boot-k8s-app .
终端
验证Docker Desktop
Kubernetes部署配置
在项目根目录中创建Kubernetes部署文件**k8s-deployment.yaml
,** 以定义Kubernetes部署和服务。
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-boot-k8s-app
spec:
replicas: 1
selector:
matchLabels:
app: spring-boot-k8s
template:
metadata:
labels:
app: spring-boot-k8s
spec:
containers:
- name: spring-boot-k8s-app
image: my-spring-boot-k8s-app:latest
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: spring-boot-k8s-service
spec:
type: LoadBalancer
selector:
app: spring-boot-k8s
ports:
- protocol: TCP
port: 8080
targetPort: 8080
文件位置
在Kubernetes上部署应用程序
- 将部署应用于Kubernetes:
kubectl apply -f k8s-deployment.yaml
终端
2.验证部署和服务:
kubectl get deployments
kubectl get services
终端
访问服务:
运行:
kubectl get svc spring-boot-k8s-service
终端
在SpringBoot应用程序中,我们在控制器目录中HelloController.java中创建了endpoint /hello。
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, Kubernetes from Spring Boot!";
}
}
通过Kubernetes提供的外部IP和端口访问/hello
端点:这里e外部IP为localhost,端口为:8080
http://<external-ip>:8080/hello // Kubernetes
http://localhost:8080/hello // access in your window browser
此设置创建了一个示例SpringBoot项目,该项目已容器化并部署到Kubernetes。您可以使用/hello
端点来确认一切都正常运行。
通过执行这些步骤,您已经成功地在Windows机器上安装了Kubernetes,并将SpringBoot项目部署到了Kubernetes集群。此设置允许您利用容器化和编排的好处,为您的应用程序提供可扩展性、容错性和高效的资源管理。