【问题标题】:access minikube folder's data from host machine从主机访问 minikube 文件夹的数据
【发布时间】:2022-01-21 13:04:39
【问题描述】:

我正在使用 minikube 来运行我的 Kubernetes 部署:

聚氯乙烯:

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pipeline
spec:
  storageClassName:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

吊舱:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: test1
  name: test1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test1
  template:
    metadata:
      labels:
        app: test1
    spec:
      containers:
      - env:
        - name: SHARED_FOLDER_PATH
          value: /data/shared
        image: docker.io/foo/test1:st3
        imagePullPolicy: Always
        name: test1
        ports:
        - containerPort: 8061
          name: protobuf-api
        - containerPort: 8062
          name: webui
        volumeMounts:
        - mountPath: /data/shared
          name: test1
      imagePullSecrets:
      - name: acumos-registry
      volumes:
      - name: test1
        persistentVolumeClaim:
          claimName: pipeline

我已检查 pod 和 pvc 是否正在运行:

$ kubectl describe pv,pvc

Name:            pvc-34bbd532-9c55-45cc-ab96-1accd08ded6e
Labels:          <none>
Annotations:     hostPathProvisionerIdentity: c6eeb812-6b82-4546-bc5a-8917cf0d3d6b
                 pv.kubernetes.io/provisioned-by: k8s.io/minikube-hostpath
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    standard
Status:          Bound
Claim:           test/pipeline
Reclaim Policy:  Delete
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        1Gi
Node Affinity:   <none>
Message:         
Source:
    Type:          HostPath (bare host directory volume)
    Path:          /tmp/hostpath-provisioner/test/pipeline
    HostPathType:  
Events:            <none>

我正在尝试从主机访问 minikube 文件夹中的数据:/tmp/hostpath-provisioner/test/pipeline。为此,我正在安装本地卷:

$ minikube mount /tmp/hostpath-provisioner/test/pipeline:/tmp/hostpath-provisioner/test/pipeline

我已经通过 ssh 检查了 minikube 文件夹中是否有任何数据:

docker@minikube:/tmp/hostpath-provisioner/test/pipeline$ ls -a

.  ..  classes.json

但我在本地文件夹中看不到此信息

【问题讨论】:

    标签: kubernetes minikube kubernetes-pvc


    【解决方案1】:

    您创建的本地挂载将指定目录挂载到 minikube 中,但不会像您希望的那样从 guest 挂载到 host。

    根据您的主机操作系统,您必须使用主机文件夹共享或基于网络的文件系统设置适当的文件共享。

    通过一些工作,可以在主机和来宾 VM 之间设置 Syncthing,以实现持久的文件同步。

    为您的操作系统获取最新版本的 Syncthing 并解压(如果您使用 Debian/Ubuntu,您可能需要使用 Debian 存储库)

    此时 Syncthing 还将在您的主目录中名为 Sync 的目录中为您设置一个名为 Default Folder 的文件夹(Windows 上为 %USERPROFILE%)。您可以将此作为起点,然后将其删除或稍后添加更多文件夹。

    管理 GUI 会自动启动并在 http://localhost:8384/ 上保持可用。 Cookie 对 GUI 的正确运行至关重要;请确保您的浏览器接受它们。

    左侧是“文件夹”列表,或要同步的目录。您可以看到为您创建的默认文件夹,并且它当前标记为“未共享”,因为它尚未与任何其他设备共享。右侧是设备列表。目前只有一个设备:您正在运行它的计算机。

    为了使 Syncthing 能够与另一台设备同步文件,必须告知该设备。这是通过交换“设备 ID”来实现的。设备 ID 是唯一的、加密安全的标识符,在您首次启动 Syncthing 时作为密钥生成的一部分生成。它打印在日志中,您可以通过选择“操作”(右上角)和“显示 ID”在 Web GUI 中查看它。

    只有在两个设备都配置了彼此的设备 ID 时,它们才会相互连接和通信。由于配置必须是相互的才能发生连接,因此设备 ID 不需要保密。它们本质上是公钥的一部分。

    要让您的两台设备相互通信,请单击两台设备右下角的“添加远程设备”,然后输入对方的设备 ID。您还应该选择要共享的文件夹。设备名称是可选的,纯粹是装饰性的。如果需要,您可以稍后更改它。 单击“保存”后,新设备将出现在 GUI 的右侧(尽管已断开连接),然后在大约一分钟后连接到新设备。请记住对其他设备重复此步骤。

    此时两个设备共享一个空目录。将文件添加到任一设备上的共享目录都会将这些文件同步到另一端。

    什么是同步: https://syncthing.net/

    安装指南: https://docs.syncthing.net/intro/getting-started.html

    syncthing 的最新版本: https://github.com/syncthing/syncthing/releases/tag/v1.18.5

    Debian 回购: https://apt.syncthing.net/

    【讨论】:

      【解决方案2】:

      问题出在防火墙上。问题帖子中详细说明的过程以及此答案中提出的解决方案(在 Ubuntu 上)对我有用:

      How to mount a Host folder in minikube VM

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-16
        • 2017-05-08
        • 2019-10-23
        • 1970-01-01
        • 2019-07-07
        • 1970-01-01
        相关资源
        最近更新 更多