从零到一:轻松将 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 容器化部署 → 滚动更新
日志始终是最好的朋友,遇到问题先看日志,再找根因。
熟能生巧,多跑几次,部署就跟喝美式一样轻松!
正文到此结束
- 本文标签: Kubernetes
- 本文链接: https://code.itptg.com/article/116
- 版权声明: 本文由老魏原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权