如何访问 docker-for-desktop 上的 PersistentVolume 文件?

a.b*_*eri 5 docker kubernetes docker-volume persistent-volumes

我想在本地计算机 (macOS) 上访问和编辑 Kubernetes PersistentVolume 中的文件,但我不知道在哪里可以找到这些文件!

我指着我的hostPath/tmp/wordpress-volume但我无法在任何地方找到它。我想念的隐藏秘密是什么

我在docker-for-desktop cluster上使用以下配置Version 2.0.0.2 (30215)

持久卷

kind: PersistentVolume
metadata:
  name: wordpress-volume
spec:
  # ...
  hostPath:
    path: /tmp/wordpress-volume
Run Code Online (Sandbox Code Playgroud)

持久卷声明

kind: PersistentVolumeClaim
metadata:
  name: wordpress-volume-claim
# ...
Run Code Online (Sandbox Code Playgroud)

部署

kind: Deployment
metadata:
  name: wordpress
# ...
spec:
  containers:
  - image: wordpress:4.8-apache
    # ...
    volumeMounts:
    - name: wordpress-volume
      mountPath: /var/www/html
  volumes:
  - name: wordpress-volume
    persistentVolumeClaim:
      claimName: wordpress-volume-claim
Run Code Online (Sandbox Code Playgroud)

a.b*_*eri 8

感谢 @aman-tuladhar 和在互联网上浪费了几个小时,我发现您只需要确保storageClassName为您设置了PersistentVolumePersistentVolumeClaim

根据文档,如果您想避免Kubernetes 在不考虑静态声明的情况下动态生成PersistentVolumes,您可以只设置一个空字符串" "

就我而言,我已经设置了storageClassName: manual.

持久卷

kind: PersistentVolume
metadata:
  name: wordpress-volume
spec:
  # ...
  storageClassName: manual
  hostPath:
    path: /tmp/wordpress-volume
Run Code Online (Sandbox Code Playgroud)

持久卷声明

kind: PersistentVolumeClaim
metadata:
  name: wordpress-volume-claim
spec:
  storageClassName: manual
  # ...
Run Code Online (Sandbox Code Playgroud)

这与docker-for-desktop集群一起开箱即用(只要mountPath设置为绝对路径)。

参考:

  • 纠正我部分不正确的评论。该解决方案有效,但不适用于任何非用户拥有的目录。如果 Docker Desktop 不是用户拥有的目录链(例如:/tmp/xyz),则会以静默方式挂载 Docker VM 中的文件夹。但是,适用于 /Users/$(whoami)/。令人极其沮丧的是,这种机制没有在任何地方记录下来。 (2认同)