K8s部署spring boot应用

一、前言

spring boot是目前比较流行的快速Java web开发工具,笔者最近使用spring boot开发了部分微服务,并使用k8s进行部署,部署过程中遇到了些问题,现将部署方案分享给大家。开发工具:IDEA,JDK:1.8,构建工具: maven。

二、部署步骤

2.1程序打包

在IDEA开发环境打开工程,Terminal下,执行打包命令:

mvn install  

成功后,会在target目录下生成***.jar文件,验证jar文件可用性:

  • 启动:java -jar ***.jar
  • 使用POSTMAN查看接口是否可用。

2.2 镜像制作

镜像制作是在部署了K8s集群环境的系统中进行。本文是在Ubuntu系统中。

  • 编写Dockerfile
FROM java:8
MAINTAINER tc
ADD  ***.jar  app.jar
EXPOSE 31001
ENTRY
# ENTRYPOINT ["java","-jar", "/***.jar"]

文件内容解释:
1、基镜像为JAVA 版本为8
2、作者名字
3、将项目添加到镜像中,并重命名为app.jar
4、运行镜像文件,监听端口为31001
5、启动时运行java -jar app.jar

  • 构建docker镜像
docker build –t **imagename:v1.0** .   

使用如下命令查看镜像是否构建成功:

docker images  

2.3 将镜像编排到k8s集群中

  • 编写 rc.yaml文件:
apiVersion: v1
kind: ReplicationController
metadata:
        name: svrName
spec:
        replicas: 1
        selector:
                  app: svrName
        template:
                metadata:
                        labels:
                                app: svrName
               spec:
                       containers:
                       - name: svrName
                         image: **imagename:v1.0**
                         ports:
                                 - containerPort:  31001


-编写 svc.yaml文件:

apiVersion: v1
kind: Service
metadata:
        name: svrName
spec:
         type: NodePort
         ports:
         - port: 31001
           nodePort: **31001** 
         selector:
                  app: svrName

  • 创建rc:
kubectl create -f rc.yaml .

查看创建结果:

kubectl  get rc
  • 创建svc:
kubectl create -f svc.yaml .

查看创建结果:

kubectl  get svc
  • 查看pod:
kubectl get pod -o wide

2.4 外部访问

浏览器打开:http://192.168.10.11:31001/test/get

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Kubernetes (k8s) 是一个开源容器编排平台,而 Spring Cloud 是一组用于构建分布式系统的服务网格和微服务架构工具。将 Spring Cloud 应用部署到 Kubernetes 上通常包括以下几个步骤: 1. **创建 Docker 映像**: 首先,你需要有一个打包好的 Spring Boot 应用程序,并将其打包为 Docker 映像。这通常包含应用代码、依赖和运行环境。 2. **配置 Dockerfile**: 在 Dockerfile 中指定基础镜像、依赖、启动命令以及暴露的端口等信息。例如: ```Dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp COPY target/my-app.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 3. **编写 Kubernetes 配置文件**: 使用 YAML 或者 JSON 格式(如 deployment.yaml)定义应用程序的部署描述符,包括副本数、服务选择、资源请求/限制等。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-spring-cloud-app spec: replicas: 3 selector: matchLabels: app: my-spring-cloud-app template: metadata: labels: app: my-spring-cloud-app spec: containers: - name: my-app image: your-docker-image-name:latest ports: - containerPort: 8080 ``` 4. **应用k8s 集群**: 将配置文件上传到集群,然后使用 `kubectl apply` 命令部署到 Kubernetes,例如: ``` kubectl apply -f deployment.yaml ``` 5. **配置负载均衡和服务发现**: 可以使用 Spring Cloud Netflix 家族的 Eureka 或 Hystrix 进行服务注册与发现,或使用 Istio 等服务网格解决方案。在 k8s 中,可以选择基于 ClusterIP 的 Service 或者 ingress controller 来提供外部访问。 6. **监控和日志管理**: 设置日志收集和监控策略,比如 Prometheus 和 Grafana 对于 metrics,还有日志服务如 Elasticsearch + Kibana。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oyezitan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值