利用Kubernetes(K8S)配合Docker部署jar包(JAVA项目)
来源于: https://blog.csdn.net/leaf__yang/article/details/127701473
前言
最近有个JAVA的后台项目需要部署在K8S上,简单记录一下配合Docker打jar包的部署流程,方便以后翻阅。
一、浅显介绍一下war包和jar包的区别
1.1. war包:
其实就是一个web程序进行打包便于部署的压缩包,里面包含我们web程序需要的一些东西,其中包括web.xml的配置文件,前端的页面文件,以及依赖的jar。文件数量对于jar包,这样便于我们部署工程,直接放到tomcat的webapps目录下,直接启动tomcat即可。同时可以使用WinRAR查看war包,直接将后缀.war改成.rar;
1.2. jar包:
jar包就是java的类进行编译生成的class文件就行打包的压缩包。里面是一些class文件。当我们自己使用maven写一些java程序,进行打包生成jar包。同时在可以在其他的工程下使用,但是我们在这个工程依赖的jar包,在其他工程使用该jar包也要导入。
二、JAVA项目打成jar包
2.1 SpringBoot打包,生成一个jar包
(springcloud-help-center-provider-0.0.1-SNAPSHOT.jar)
三、K8S上创建Dockerfile文件
3.1 Dockerfile文件位置如下:
3.2.1 将Dockerfile文件使用 EditPlus打开
3.2.2 在服务器上打开
输入命令:[root@damiapp113 help]# vi Dockerfile
3.3 内容介绍
-
# 拉取jdk8作为基础镜像
-
FROM java:8
-
# log输出位置
-
VOLUME /usr/platform/log
-
# 添加jar到镜像并命名为test_k8s_provider_0001.jar
-
ADD springcloud-help-center-provider-0.0.1-SNAPSHOT.jar test_k8s_provider_0001.jar
-
#运行参数设定(此处也可以不用设定)
-
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-
RUN echo 'Asia/Shanghai' >/etc/timezone
-
RUN bash -c 'touch /test_k8s_provider_0001.jar'
-
# 镜像启动后暴露的端口
-
EXPOSE 8134
-
# jar运行命令,参数使用逗号隔开
-
ENTRYPOINT ["java","-jar","test_k8s_provider_0001.jar"]
四、构建Docker镜像
4.1 构建命令
-
#【末尾有个点,一点要注意】最后的.表示Dockerfile在当前目录
-
docker build -t 镜像名:版本 .
-
#示例如下(-t参数指定构建成后,镜像的仓库、标签等)
-
docker build -t test_k8s_provider_0001.jar:1.0.1 .
镜像构建成功,出现如下(
Successfully built 0d81cf52dba2
Successfully tagged test_k8s_provider_0001.jar:1.0.0):
使用docker images命令查看自己所构建的镜像
[root@damiapp113 test]# docker images
4.2 镜像推送push
[root@testapp113 test]# docker push test_k8s_provider_0001.jar:1.0.0
推送成功之后就可以就可以使用了。
五、附录部分K8S查询/重启/更新命令
5.1 查看K8S上运行的所有pod
命令:[root@damiapp113 ~]# kubectl -n dami get pods
获取SVC信息:
命令:[root@damiapp113 ~]# kubectl -n dami get svc
5.2 查看pod详细信息
命令:[root@damiapp113 ~]# kubectl -n dami describe pod platform-help-96f5ffc9-q8fpd
5.3 查看pod日志
命令:[root@damiapp113 ~]# kubectl -n dami logs platform-help-96f5ffc9-q8fpd
5.4 查看部署的 deployment
命令:[root@damiapp113 ~]# kubectl -n dami get deployment
5.5 查看deployment内运行容器的名
命令:
[root@damiapp113 ~]# kubectl –n dami describe deployment platform-help
5.6 重启pod
当pod出现异常时可以执行delete命令删除pod,系统会自动生成一个新的pod
命令:[root@damiapp113 ~]# kubectl –n dami delete pod platform-help-96f5ffc9-q8fpd
强制关闭pod
命令:
[root@damiapp113 ~]# kubectl delete pod platform-help-96f5ffc9-q8fpd -n dami --force --grace-period=0
5.7 镜像版本更新
当执行以下命令会删除现有的pod,然后使用新的镜像生成一个新的pod
命令:
[root@damiapp113 ~]# kubectl –n dami set image deployment deployment-name container-name=image-name:tag
六、总结
我这里只是K8S上遇到的一点点小内容,有问题大家一起提出,我们共同学习、共同成长!!!
感谢大佬!!!
地址
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理