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
相关产品推荐
相关产品推荐

