k8s部署jar后端包
一、jar包介绍
Jar 包(Java Archive)是 Java 平台中用于打包和分发 Java 相关资源的归档文件格式,本质是一种基于 ZIP 压缩的文件,主要用于整合多个 Java 类文件、资源文件(如配置文件、图片等)、元数据等,方便 Java 程序的存储、传输和运行。
核心作用
- 整合资源:将一个 Java 项目的多个
.class文件(编译后的字节码)、依赖库、配置文件等打包成单一文件,避免文件零散管理的麻烦。 - 便于分发:一个 Jar 包即可包含完整的 Java 程序或类库,简化传输和部署流程(比如第三方框架、工具类库通常以 Jar 包形式提供)。
- 支持运行:通过指定入口类,Jar 包可直接作为可执行程序运行(无需手动逐个加载类文件)。
二、镜像制作
在IDEA使用maven打包的jar包是无法直接使用k8s执行的,需要先将jar包制作成镜像,再上传至harbor仓库管理,k8s则是拉取对应镜像创建deployment、pod、service完成启动。
jar包需要使用docker制作镜像,需要先创建Dockerfile文件,具体如下
# 指使用jdk1.8的java镜像,在容器中安装java
from dockerhub.kubekey.local/tiangang/java:1.8
#作者
MAINTAINER author
VOLUME /tmp
ADD api-monitor-1.0.0-SNAPSHOT.jar api-monitor.jar
RUN touch /api-monitor.jar
#容器暴露端口
EXPOSE 8000
#自定义环境变量
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#应用启动命令
ENTRYPOINT [ "java","-Xmx512m","-Xms512m","-jar","api-monitor.jar","--spring.cloud.nacos.config.namespace=stand"]
完成Dockerfile文件之后,执行build命令完成镜像制作
docker build -t dockerhub.kubekey.local/tiangang/api-monitor:1.0 .
#结尾的 . 表示当前路径
再执行push命令将镜像推送到harbor仓库具体的目录
docker push dockerhub.kubekey.local/tiangang/api-monitor:1.0
三、创建deployment.yaml和service.yaml
deployment.yaml文件,用于创建jar的控制器和对应的pod容器,在文件中指明了控制器deployment的资源大小、标签、创建的容器镜像、启动命令等,后续对容器水平扩容时可对deployment.yaml文件进行修改。
service.yaml文件,用于负责负载均衡和服务发现,暴露jar的端口号和访问模式,其中,端口号可分pod容器对service暴露的端口,service对k8s集群暴露的端口,以及访问模式。
apiVersion: apps/v1
kind: Deployment
metadata:
name: zhongchuan141-monitor
namespace: zhongchaun141
labels:
app: zhongchuan141-monitor
spec:
replicas: 1
selector:
matchLabels:
app: zhongchuan141-monitor
template:
metadata:
labels:
app: zhongchuan141-monitor
spec:
containers:
- name: zhongchuan141-monitor
image: dockerhub.kubekey.local/tiangang/api-monitor:1.0
command: ["java",
"-Xms256m",
"-Xmx512m",
"-Dspring.cloud.nacos.config.namespace=stand",
"-Dspring.cloud.nacos.config.server-addr=zhongchuan141-nacos:8848",
"-jar",
"/api-monitor.jar"]
ports:
- containerPort: 8000
resources:
requests:
memory: "1Gi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "1000m"
# 健康检查(可选,确保服务存活)
livenessProbe: # 存活探针(检测服务是否崩溃,失败则重启容器)
httpGet:
path: /actuator/health # 需Jar包内有健康检查接口(如Spring Boot Actuator)
port: 8080
initialDelaySeconds: 60 # 启动后延迟60秒开始检查
periodSeconds: 10 # 每10秒检查一次
readinessProbe: # 就绪探针(检测服务是否可接收请求,失败则从Service移除)
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 30
periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: zhongchuan141-monitor
namespace: zhongchuan141
spec:
selector:
app: zhongchuan141-monitor
ports:
- port: 8000
targetPort: 8000
nodePort: 31800
type: NodePort
四、注意事项
jar后端包需要nacos做配置管理时,需要再deployment文件中用command指定nacos的命名空间、IP地址、端口以及jar包在镜像中的具体位置,这里的IP地址和端口可以直接写nacos的service名称和对集群内部暴露的端口号。
nacos中的yaml文件,记录存储的是工作节点的IP和服务对外暴露的端口,即java服务连接数据库、redis、nginx所用的均为对外暴露的端口。
更多推荐

所有评论(0)