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

K8s环境Jenkins重启后插件及配置丢失问题求助

问题根源

你的Jenkins配置和插件丢失的核心原因是持久化卷挂载路径错误。Jenkins官方镜像的核心数据目录是/var/jenkins_home,但你当前挂载的是containerd的临时快照路径(/opt/containerd_workspace/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/284/fs/var/jenkins_home),这个路径是Pod运行时的临时路径,Pod重启或重建后会被重置,导致所有数据丢失。

修复步骤

1. 修正Deployment.yaml的卷挂载配置

修改volumeMounts的mountPath为Jenkins的标准数据目录/var/jenkins_home,同时修正原YAML中的缩进错误(缩进错误会导致部署失败)。

修正后的Deployment.yaml完整内容:

apiVersion: apps/v1
kind: Deployment
metadata:
    name: jenkins
    namespace: jenkins
spec:
  replicas: 1
  selector:
     matchLabels:
         app: jenkins-server
  template:
    metadata:
      labels:
        app: jenkins-server
    spec:
       securityContext:
            fsGroup: 1000
            runAsUser: 1000
       serviceAccountName: jenkins-admin
       containers:
        - name: jenkins
          image: jenkins/jenkins:lts
          resources:
             limits:
               memory: "3Gi"
               cpu: "1500m"
             requests:
               memory: "500Mi"
               cpu: "500m"
          ports:
          - name: httpport
            containerPort: 8080
          - name: jnlpport
            containerPort: 50000
          livenessProbe:
            httpGet:
              path: "/login"
              port: 8080 
            initialDelaySeconds: 90
            periodSeconds: 30
            timeoutSeconds: 10
            failureThreshold: 5
          readinessProbe:
            httpGet:
              path: "/login"
              port: 8080
            initialDelaySeconds: 300
            periodSeconds: 30
            timeoutSeconds: 10
            failureThreshold: 3
          volumeMounts:
          - name: jenkins-data
            mountPath: /var/jenkins_home  # 修正为Jenkins标准数据目录
       volumes:
          - name: jenkins-data
            persistentVolumeClaim:
                claimName: jenkins-pv-claim

2. 修复宿主机存储目录权限

确保宿主机的/mnt/jenkins-vol目录权限符合Jenkins运行用户(UID 1000)的读写要求:

chown -R 1000:1000 /mnt/jenkins-vol
chmod -R 755 /mnt/jenkins-vol

3. 重新部署Jenkins

删除旧的Deployment并重新应用修正后的配置:

kubectl delete deployment jenkins -n jenkins
kubectl apply -f Volume.yaml -n jenkins
kubectl apply -f Deployment.yaml -n jenkins

4. 验证持久化效果

重新配置Jenkins插件和设置后,手动删除Pod触发重建,检查配置是否保留:

kubectl delete pod -l app=jenkins-server -n jenkins

Pod重启后访问Jenkins,若无需重新初始化,说明持久化生效。

额外注意事项
  • Volume.yaml中PV的claimRef配置是合理的,确保该PV专属Jenkins使用;
  • 确认StorageClass的volumeBindingMode: WaitForFirstConsumer配置正确,避免PV提前绑定导致Pod调度失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:01:12