首页 > 编程语言 >k8s Java 项目替换 jar 中的 class 文件

k8s Java 项目替换 jar 中的 class 文件

时间:2024-04-24 11:55:06浏览次数:26  
标签:Java image xxx jar path docker k8s class

背景

  • 紧急需求,客户需要立马上线
  • docker 包体积过大,远程不稳定,文件发不过去
  • 单点修改,风险低

步骤

1. 获取 pod 所在宿主机 podonhost

kubectl -n $namespance get pods -owide | grep $podname | grep Running

2. 获取 pod 的容器 cid

kubectl -n $namespance describe po $podname | grep "Container ID"

3. 进入pod 所在宿主机 podonhost 修改容器内容

将本地打包提取出 class,copy 到服务器容器内

docker cp xxx.class $cid_short:/
docker exec -it $cid_short bash

4. 进入到 jar 所在目录重新替换 jar 包

# 解压 jar 包
jar -xvf xxx.jar
# 替换内容
cp /xxx.class BOOT_INF/class/
# 重新打 jar 包
jar -cfM0 xxx.jar ./
# 退出容器
exit

5. 重新打镜像

docker commit $cid_short $image_path

6. 镜像打包

docker push $image_path
# 如果没有 docker 仓库,可以选择保存 tar 包,copy 到 k8s 服务器上
# docker save -0 1.tar $image_path
# docker load -i 1.tar

7. 更新镜像

# 也可以修改 yaml 文件的 image 版本
 kubectl -n  $namespance set image deployment/$deployment_name  $deployment_name= $image_path

结论

运行正常,修改生效,后续并整理了shell脚本,简化了操作

注意事项

  1. 这种方式打包出来的 docker 镜像包含运行时文件,不纯净
  2. 步骤4中 jar -cfM0 末尾的0不能省,否则会压缩导致无法加载

标签:Java,image,xxx,jar,path,docker,k8s,class
From: https://www.cnblogs.com/jietang64/p/18154747

相关文章

  • 服务器部署jar包执行命令编写
    服务器部署jar包执行命令编写新建deploy.sh文件,并编写内容SERVER_NAME=demo-server-8.2.0.15.jar#服务jar包名称#根据服务名称查询对应的pidpid=$(ps-ef|grep$SERVER_NAME|grep-vgrep|awk'{print$2}');#判断进程是否存在,存在则杀死if[-n"$pid"];thenkill......
  • java线程池
    java线程池 一、线程池的7个核心参数 1.corePoolSize 核心线程数 corePoolSize是线程池中保持活动状态的最小线程数。即使线程是空闲的,它们也会一直保持在池中。当有新任务提交时,线程池会优先创建核心线程来处理任务。 2.maximumPoolSize 最大线程数 maximu......
  • 「Java开发指南」如何利用MyEclipse启用Spring DSL?(二)
    本教程将引导您通过启用SpringDSL和使用ServiceSpringDSL抽象来引导Spring和Spring代码生成项目,本教程中学习的技能也可以很容易地应用于其他抽象。在本教程中,您将学习如何:为SpringDSL初始化一个项目创建一个模型包创建一个服务和操作实现一个服务方法启用JAX-WS和DWR......
  • 修改jar里的.xml等文件内容
    修改jar里的.xml等文件内容将jar文件解压。修改解压后的xml文件。替换修改的文件或重新打包jar文件。#解压jar文件jar-xfexample.jar#修改需要更改的xml文件内容后#替换修改的文件jar-ufexample.jar./mapper/example.xml#或者#删除原始的jar文件后......
  • Java 断言 Assert 使用教程与最佳实践
    本文收录于Github.com/niumoo/JavaNotes,Java系列文档,数据结构与算法!本文收录于网站:https://www.wdbyte.com/,我的公众号:程序猿阿朗作为一个Java开发者,如果要问你Java中有哪些关键字,你可能会随口说出一串,如果问你Java有哪些最不常使用的关键字,或许你还能说出几个。但是......
  • K8S安装
    1、基础设置1.1关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld1.2关闭selinuxsetenforce0#这个是临时关闭1.3关闭swapswapoff-a#这个是临时关闭2、安装docker2.1卸载旧版本sudoyumremovedockerdocker-clientdocker-client-lates......
  • 挑战前端基础120题--JavaScript 中如何实现链式调用的函数?
    一.何为链式调用?链式调用是一种简化过程的编码方式,使代码看起来更加简洁~它允许你通过在方法调用之间返回对象本身,从而连续地调用多个方法;比较常见的链式调用:jQuery,Promise等,通过多次书写.或()操作来调用。二.实现的原理?每次执行完成后返回自己/新的自己,这样可以确保后续的......
  • JavaImprove--Lesson10--IO流-字符流,缓冲流,转换流,打印流,数据流
    一.IO流-字符流上期在字节流的学习中,了解到字节流写字符操作表现很不好,随时面临乱码的情况,一下写完全部数据的,内存可能不足,所以对于文本操作还需要专业的操作 而字符流就非常适合操作文本字符FileWirte文件字符输入流作用:以内存为基准,可以把文件的数据以字符的形式输入到......
  • k8s使用存活(liveness)和就绪(readiness)探针的场景
    k8s使用存活(liveness)和就绪(readiness)探针的场景原创 zhuhb 运维笔谈 2024-04-2214:13 上海 听全文存活探针(liveness)主要用于检测容器是否仍然运行正常。如果存活探针检测到容器已经停止运行或者陷入死锁状态,Kubernetes会根据配置的重启策略来决定是否重启该容器。......
  • Java SE 笔记搬运
    本科过过两遍JavaSE,但是由于考研等不可抗力因素很久未接触代码,因工作需求这里将四年前的Java笔记重新整理搬运,方便Java学习。——————————————————————————————————————————————————————————————继承/*私有化的......