K8S Spring Boot

2025-05-23 18:38
80
0

Kubernetes实战:从零开始部署Spring Boot应用

一、Kubernetes简介

Kubernetes(简称K8S)是Google开源的容器编排系统,用于自动化部署、扩展和管理容器化应用。它提供了...

二、准备Spring Boot应用

首先我们需要一个可容器化的Spring Boot应用。以下是一个简单的REST API示例:

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

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

}

创建Dockerfile将应用容器化:

FROM openjdk:11-jre-slim
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

三、Kubernetes部署配置

我们需要创建几个关键的Kubernetes资源文件:

1. Deployment配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: spring-boot-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: spring-boot-app
  template:
    metadata:
      labels:
        app: spring-boot-app
    spec:
      containers:
      - name: spring-boot-app
        image: your-docker-repo/spring-boot-app:latest
        ports:
        - containerPort: 8080
        resources:
          limits:
            cpu: "500m"
            memory: "512Mi"

2. Service配置

apiVersion: v1
kind: Service
metadata:
  name: spring-boot-service
spec:
  selector:
    app: spring-boot-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

四、实际部署步骤

  1. 构建Docker镜像并推送到镜像仓库
docker build -t your-docker-repo/spring-boot-app:latest .
docker push your-docker-repo/spring-boot-app:latest
  1. 应用Kubernetes配置
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
  1. 验证部署
kubectl get pods
kubectl get services

五、常见问题与解决方案

1. 镜像拉取失败

解决方案:检查镜像名称是否正确,确保有访问镜像仓库的权限...

2. Pod处于Pending状态

解决方案:检查资源配额和节点可用性...

3. 服务无法访问

解决方案:检查Service类型和端口映射...

六、总结

本文详细介绍了如何使用Kubernetes部署Spring Boot应用的全过程...

全部评论