查看k8s下Jenkins的插件在宿主机的路径

配置文件如下:

复制代码
StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: jenkins-statefulset
  namespace: devops
spec:
  serviceName: "jenkins-hl"
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      nodeSelector:
        devops: "true"
      serviceAccount: jenkins-sa
      volumes:
        - name: volume-localtime
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
      containers:
        - name: jenkins-container
          image: jenkins/jenkins:2.492.3-lts
          imagePullPolicy: IfNotPresent
          securityContext:     # 添加参数启用容器root权限
            privileged: true
            runAsUser: 0        # root身份运行
          env:
          - name: JAVA_OPTS
            value: "-Xms2048m -Xmx2048m -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"
          ports:
            - name: http
              containerPort: 8080
            - name: agent
              containerPort: 50000  #jenkins通讯需要设置8080,50000两个端口
          resources:
            limits:
              cpu: 500m
              memory: 2Gi
          livenessProbe:        # 存活探针
            httpGet:
              path: /login
              port: 8080
            initialDelaySeconds: 60
            timeoutSeconds: 5
            failureThreshold: 12
          readinessProbe:        # 就绪探针
            httpGet:
              path: /login
              port: 8080
            initialDelaySeconds: 60
            timeoutSeconds: 5
            failureThreshold: 12
          volumeMounts:
            - name: data
              mountPath: /var/jenkins_home
            - name: volume-localtime
              mountPath: /etc/localtime
 
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: ["ReadWriteOnce"]
      storageClassName: "nfs-client"
      resources:
        requests:
          storage: 35Gi

怎么查看宿主机存放Jenkins插件所在的地址?

在你提供的这个 StatefulSet 配置中,Jenkins 下载的插件、jobs 配置、用户数据等全部内容都存储在下面这个挂载路径对应的持久卷里:

volumeMounts: - name: data mountPath: /var/jenkins_home

也就是说:
容器内路径/var/jenkins_home
实际存放位置 :由 volumeClaimTemplates 动态创建的 PVC(PersistentVolumeClaim)

插件等文件最终在宿主机上的位置

最终位置取决于你集群使用的 StorageClass nfs-client 具体把 PV 绑定到了哪个 NFS 共享目录。

大多数情况下,使用 nfs-client StorageClass 的实际文件位置有以下几种常见情况(按概率从高到低排序):

序号 存储方式 宿主机大概率路径示例 如何确认具体路径
1 集群内统一 NFS 服务器 /data/nfs/jenkins/data-jenkins-statefulset-0-pvc-xxxxx 最常见方式,看 NFS 服务器导出目录
2 nfs-subdir-external-provisioner /nfs-data/devops-data-jenkins-statefulset-0-pvc-xxxxx 看 provisioner 命名规则(通常带 namespace+名称)
3 每个节点本地目录(较少见) 某个节点上的 /mnt/nfs/jenkins/... 看节点上 nfs 挂载点
4 Longhorn / Rook Ceph 等分布式存储 基本看不到真实路径,通常在 Longhorn UI 或 Ceph 里查看 通过存储系统 UI 查看

如何一步步找到插件文件在宿主机上的真实位置(推荐操作流程)

  1. 先找到对应的 PVC

    kubectl get pvc -n devops | grep jenkins # 通常会看到类似: # data-jenkins-statefulset-0 Bound pvc-xxx-xxx 35Gi RWO nfs-client 2d

  2. 查看 PVC 绑定的 PV

    kubectl describe pvc data-jenkins-statefulset-0 -n devops

重点看这几行:

Volume: pvc-3a4b5c6d-.... VolumeMounts: /var/jenkins_home from data (rw)

  1. 查看 PV 的详细信息(最关键一步)

    kubectl describe pv pvc-3a4b5c6d-... # 把上面看到的 pv 名字填进来

你会看到类似这样的信息:

NFS: Server: 192.168.10.200 Path: /kubernetes/nfs/devops/data-jenkins-statefulset-0-pvc-3a4b5c6d-...

此时你就已经找到答案了: 宿主机上(或 NFS 服务器上)的真实路径 就是:

/kubernetes/nfs/devops/data-jenkins-statefulset-0-pvc-3a4b5c6d-...

  1. 登录到 NFS 服务器(或挂载了该 NFS 的节点),直接进入该目录:

    cd /kubernetes/nfs/devops/data-jenkins-statefulset-0-pvc-3a4b5c6d-... ls -la # 你会看到熟悉的 jenkins 目录结构 plugins/ jobs/ users/ config.xml hudson.model.UpdateCenter.xml secret.key ...

总结一句话

Jenkins 下载的插件文件在宿主机上的位置 = NFS 服务器(或挂载点)上 PVC 对应的目录

最常见的路径形式为:

复制代码

/你的NFS导出根目录/命名空间_资源名称_序号_pvc-xxxxx/plugins/

执行上面第 1→2→3 步,你基本 2 分钟内就能定位到具体目录。

建议把这个路径记录下来,后续备份、迁移、排查插件问题都会非常方便。

相关推荐
孤岛悬城2 小时前
58 k8s之pod
云原生·容器·kubernetes
可爱又迷人的反派角色“yang”2 小时前
k8s(五)
linux·运维·docker·云原生·容器·kubernetes
oMcLin2 小时前
如何在Ubuntu 22.10上通过配置K3s轻量级Kubernetes集群,提升边缘计算环境的资源管理能力?
ubuntu·kubernetes·边缘计算
m0_471199633 小时前
【自动化】前端开发,如何将 Jenkins 与 Gitee 结合实现自动化的持续集成(构建)和持续部署(发布)
前端·gitee·自动化·jenkins
oMcLin3 小时前
如何在 CentOS 8 上部署并优化 Jenkins 2.x 流水线,提升 CI/CD 流程的自动化与高效性
ci/cd·centos·jenkins
optimistic_chen3 小时前
【Docker入门】容器技术
linux·运维·服务器·docker·容器
小明_GLC3 小时前
理解Docker、镜像Images、容器Container
docker·容器
努力搬砖的咸鱼3 小时前
用 Docker 部署你的第一个微服务
docker·微服务·云原生·容器
水上冰石3 小时前
如何查看k8s按照的jenkins插件的路径
容器·kubernetes·jenkins