You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes Pod部署后如何保存修改?Jenkins场景答疑

问题原因解析

为什么kubectl exec的修改会丢失,GUI修改能持久化?

  • Jenkins官方镜像的持久化数据目录是/var/jenkins_home,你挂载的存储卷应该绑定到了这个路径。所有通过GUI完成的配置(插件安装、全局设置、任务配置等)都会自动保存到该目录下,因此Pod重启后数据不会丢失。
  • 你通过kubectl exec安装Maven时,大概率是将其安装到了容器的非挂载路径(比如/usr/local/bin、/opt这类镜像自带的系统目录)。Pod重启时,容器会基于原始Jenkins镜像重新创建,这些非挂载路径的修改不会被存储卷保留,自然就丢失了。
持久化Pod部署后修改的解决方案

方案1:将工具安装到存储卷挂载路径

直接把Maven安装到/var/jenkins_home下的自定义目录(比如/var/jenkins_home/tools/maven),步骤如下:

  1. 进入Pod执行安装操作:
    kubectl exec -it <jenkins-pod-name> -- mkdir -p /var/jenkins_home/tools/maven
    kubectl exec -it <jenkins-pod-name> -- wget https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz -P /var/jenkins_home/tools/maven
    kubectl exec -it <jenkins-pod-name> -- tar -zxvf /var/jenkins_home/tools/maven/apache-maven-3.9.6-bin.tar.gz -C /var/jenkins_home/tools/maven
    
  2. 在Jenkins全局工具配置中,指定该路径的Maven作为全局工具,后续构建即可直接使用。

方案2:自定义Jenkins镜像(推荐长期使用)

基于官方Jenkins镜像构建包含Maven的自定义镜像,这样每次启动Pod都会自带配置好的Maven:

  1. 编写Dockerfile:
    FROM jenkins/jenkins:lts
    USER root
    # 安装Maven
    RUN apt-get update && apt-get install -y maven
    USER jenkins
    
  2. 构建并推送镜像到你的镜像仓库,然后更新Deployment的镜像字段:
    docker build -t your-registry/jenkins-with-maven:lts .
    docker push your-registry/jenkins-with-maven:lts
    kubectl set image deployment/jenkins jenkins=your-registry/jenkins-with-maven:lts
    

方案3:使用Jenkins自带的工具自动安装

利用Jenkins的全局工具配置自动下载管理Maven,无需手动exec操作:

  1. 进入Jenkins GUI → 系统管理 → 全局工具配置
  2. 找到“Maven”选项,点击“新增Maven”,勾选“自动安装”,选择需要的Maven版本后保存配置
  3. Jenkins会自动将Maven下载到/var/jenkins_home/tools目录下,该路径属于挂载的存储卷,重启后不会丢失。

内容的提问来源于stack exchange,提问作者gurdalc19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:45:29