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

Minikube挂载本地目录存储Jenkins数据失败求助

问题:Minikube mount 连接超时,无法挂载本地目录到集群

我需要在Minikube集群上运行Jenkins并持久化工作区数据,执行minikube mount "/home/sourabh/jenkins_data:/jenkins_data"时失败,报错连接超时。

环境信息

  • 操作系统:Ubuntu 22.04.1 LTS (Jammy Jellyfish)
  • Minikube版本:1.28
  • Kubernetes版本:1.23

错误详情及日志

$ minikube mount "\/home\/sourabh\/jenkins_data:\/jenkins_data"
📁  Mounting host path /home/sourabh/jenkins_data into VM as /jenkins_data ...
    ▪ Mount type:
    ▪ User ID:      docker
    ▪ Group ID:     docker
    ▪ Version:      9p2000.L
    ▪ Message Size: 262144
    ▪ Options:      map[]
    ▪ Bind Address: 172.19.196.135:38837
🚀  Userspace file server: ufs starting

❌  Exiting due to GUEST_MOUNT_COULD_NOT_CONNECT: /bin/bash -c "sudo mount -t 9p -o dfltgid=$(grep ^docker: /etc/group | cut -d: -f3),dfltuid=$(id -u docker),msize=262144,port=38837,trans=tcp,version=9p2000.L 172.19.196.135 /jenkins_data": Process exited with status 32
stdout:

stderr:
mount: /jenkins_data: mount(2) system call failed: Connection timed out.

💡  Suggestion:

    If the host has a firewall:

    1. Allow a port through the firewall
    2. Specify "--port=<port_number>" for "minikube mount"

详细日志

Binary: Built with gc go1.19.2 for linux/amd64
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I0109 16:36:07.842613    2616 out.go:296] Setting OutFile to fd 1 ...
I0109 16:36:07.842751    2616 out.go:348] isatty.IsTerminal(1) = true
I0109 16:36:07.842754    2616 out.go:309] Setting ErrFile to fd 2...
I0109 16:36:07.842757    2616 out.go:348] isatty.IsTerminal(2) = true
I0109 16:36:07.842890    2616 root.go:334] Updating PATH: /home/sourabh/.minikube/bin
W0109 16:36:07.842980    2616 root.go:311] Error reading config file at /home/sourabh/.minikube/config/config.json: open /home/sourabh/.minikube/config/config.json: no such file or directory
I0109 16:36:07.843091    2616 mustload.go:65] Loading cluster: minikube
I0109 16:36:07.843369    2616 config.go:180] Loaded profile config "minikube": Driver=docker, ContainerRuntime=docker, KubernetesVersion=v1.25.3
I0109 16:36:07.843676    2616 cli_runner.go:164] Run: docker container inspect minikube --format={{.State.Status}}
I0109 16:36:07.914497    2616 host.go:66] Checking if "minikube" exists ...
I0109 16:36:07.914672    2616 cli_runner.go:164] Run: docker container inspect -f "'{{(index (index .NetworkSettings.Ports \"8443/tcp\") 0).HostPort}}'" minikube
I0109 16:36:07.978854    2616 mount.go:141] Selecting IP for WSL. This may be incorrect...
I0109 16:36:07.983207    2616 out.go:177] 📁  Mounting host path /home/sourabh/jenkins_data into VM as /jenkins_data ...
I0109 16:36:07.987688    2616 out.go:177]     ▪ Mount type:
I0109 16:36:07.992029    2616 out.go:177]     ▪ User ID:      docker
I0109 16:36:07.996174    2616 out.go:177]     ▪ Group ID:     docker
I0109 16:36:08.000666    2616 out.go:177]     ▪ Version:      9p2000.L
I0109 16:36:08.005048    2616 out.go:177]     ▪ Message Size: 262144
I0109 16:36:08.009032    2616 out.go:177]     ▪ Options:      map[]
I0109 16:36:08.012980    2616 out.go:177]     ▪ Bind Address: 172.19.196.135:46487
I0109 16:36:08.017007    2616 out.go:177] 🚀  Userspace file server:
I0109 16:36:08.016686    2616 ssh_runner.go:195] Run: /bin/bash -c "[ \"x$(findmnt -T /jenkins_data | grep /jenkins_data)\" != \"x\" ] && sudo umount -f /jenkins_data || echo \"
I0109 16:36:08.017091    2616 cli_runner.go:164] Run: docker container inspect -f "'{{(index (index .NetworkSettings.Ports \"22/tcp\") 0).HostPort}}'" minikube
I0109 16:36:08.087038    2616 sshutil.go:53] new ssh client: &{IP:127.0.0.1 Port:61875 SSHKeyPath:/home/sourabh/.minikube/machines/minikube/id_rsa Username:docker}
I0109 16:36:08.127492    2616 mount.go:168] unmount for /jenkins_data ran successfully
I0109 16:36:08.127507    2616 ssh_runner.go:195] Run: /bin/bash -c "sudo mkdir -p /jenkins_data"
I0109 16:36:08.135776    2616 ssh_runner.go:195] Run: /bin/bash -c "sudo mount -t 9p -o dfltgid=$(grep ^docker: /etc/group | cut -d: -f3),dfltuid=$(id -u docker),msize=262144,port=46487,trans=tcp,version=9p2000.L 172.19.196.135 /jenkins_data"
I0109 16:37:31.315966    2616 out.go:177] 🔥  Unmounting /jenkins_data ...
I0109 16:37:31.322056    2616 ssh_runner.go:195] Run: /bin/bash -c "[ \"x$(findmnt -T /jenkins_data | grep /jenkins_data)\" != \"x\" ] && sudo umount -f /jenkins_data || echo \"
Log file created at: 2023/01/09 16:38:06
Running on machine: Sourabh_PC
Binary: Built with gc go1.19.2 for linux/amd64
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I0109 16:38:06.875663    2694 out.go:296] Setting OutFile to fd 1 ...
I0109 16:38:06.875853    2694 out.go:348] isatty.IsTerminal(1) = true

解决方案尝试

1. 调整防火墙规则

防火墙拦截是这类超时问题的常见原因,执行以下操作:

  • 临时开放日志中出现的端口(以46487为例):
    sudo ufw allow 46487/tcp
    
  • 或者直接开放Minikube常用的端口范围:
    sudo ufw allow 30000-32767/tcp
    sudo ufw allow 10250-10259/tcp
    
  • 重启防火墙生效:
    sudo ufw reload
    

2. 指定固定端口执行mount

手动指定端口避免Minikube随机选择被拦截的端口:

minikube mount "/home/sourabh/jenkins_data:/jenkins_data" --port=30001

注意先开放这个指定端口的防火墙规则。

3. 修正Minikube网络IP选择

日志提示IP选择可能有误,重新指定Minikube的API服务器IP后再尝试:

minikube stop
minikube start --apiserver-ips=192.168.49.1 --apiserver-name=minikube
minikube mount "/home/sourabh/jenkins_data:/jenkins_data"

4. 改用HostPath卷替代mount命令

如果mount命令持续失败,直接在Jenkins的Deployment中使用HostPath卷映射本地目录:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
      - name: jenkins
        image: jenkins/jenkins:lts
        ports:
        - containerPort: 8080
        volumeMounts:
        - name: jenkins-data
          mountPath: /var/jenkins_home
      volumes:
      - name: jenkins-data
        hostPath:
          path: /home/sourabh/jenkins_data
          type: DirectoryOrCreate

应用该配置:

kubectl apply -f jenkins-deployment.yaml

5. 检查Docker与Minikube的连通性

测试Minikube容器和主机的网络连通性:

docker exec minikube ping 172.19.196.135 -c 3

如果ping不通,重启Docker和Minikube:

sudo systemctl restart docker
minikube stop
minikube start

内容的提问来源于stack exchange,提问作者Sy-py

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:25:22