原创

从零到一:轻松将 SpringBoot 应用部署到 Kubernetes

温馨提示:
本文最后更新于 2025年07月23日,已超过 3 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

引言

十年前,“SpringBoot 应用怎么部署到 K8S”或许还是新鲜事,但今天它已经变得像在星巴克点杯美式一样简单。本文将用最直白的语言,手把手带你从打包、容器化,到配置、上线,最后完成滚动更新,让你轻松掌握整个流程。


Step 1:打包 SpringBoot 应用

使用 Maven 或 Gradle 将项目打成可执行的 .jar 包。

# Maven 示例
mvn clean package

这一步相当于你买了个毛坯房,拿到了钥匙,下一步要把它装修(容器化)才能入住。


Step 2:编写 Dockerfile,将应用装进容器

创建 Dockerfile,告诉 Docker 如何装载并运行你的 .jar

FROM openjdk:11-jre-slim
COPY target/your-springboot-app.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
  • FROM:基于瘦身版 JDK11 镜像
  • COPY:把打包好的 .jar 放进镜像
  • ENTRYPOINT:定义容器启动入口
# 构建镜像
docker build -t your-app:v1 .

Step 3:编写 Kubernetes 资源配置

Deployment

定义副本数、镜像等信息,让 K8S 知道要怎么“招人”干活:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: your-app-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: your-app
  template:
    metadata:
      labels:
        app: your-app
    spec:
      containers:
      - name: your-app-container
        image: your-app:v1
        ports:
        - containerPort: 8080

Service

为应用开个“前台”,把外部请求导入到容器内部:

apiVersion: v1
kind: Service
metadata:
  name: your-app-service
spec:
  selector:
    app: your-app
  ports:
    - protocol: TCP
      port: 80        # 外部访问端口
      targetPort: 8080  # 容器内部端口
  type: LoadBalancer

Step 4:使用 kubectl 操作

# 应用配置
kubectl apply -f your-app-deployment.yaml
kubectl apply -f your-app-service.yaml

# 查看 Pod 状态
kubectl get pods

# 查看日志(排查故障)
kubectl logs your-app-pod-name

Step 5:暴露外网

  • LoadBalancer:自动分配外部 IP,使用 kubectl get svc 获取访问地址
  • Ingress:可做更灵活的路由和 TLS 配置(此处略)

遇到访问不到的问题,常见原因是防火墙或云厂商网络安全组限流,需要运维协助开通端口。


Step 6:滚动更新,实现零停机升级

kubectl set image deployment/your-app-deployment \
  your-app-container=your-app:v2

此命令会逐个替换 Pod,保证服务持续可用,必要时可快速回滚。


总结

Kubernetes 并不神秘,它只是一个更高级的调度平台。

  • 本地 Docker 测试通K8S 容器化部署滚动更新
    日志始终是最好的朋友,遇到问题先看日志,再找根因。
    熟能生巧,多跑几次,部署就跟喝美式一样轻松!

正文到此结束
本文目录