我如何指定持久卷文件的存储位置

How do i specify where persistent volume files are stored

我开始通过创建 LAMP 堆栈来学习 Kubernetes。对于我的 MySQL 数据库,我创建了一个持久卷和持久卷声明,但现在我遇到了一个问题,我无法找到我的 PV 文件的存储位置。

这是我目前的配置:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    app: mysql
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  hostPath:
    path: "/lamp/pvstorage"

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
  labels:
    app: mysql
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

然后在我的 MySQL 部署文件的末尾,我有这些行:

          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pvc

我希望 Pod 的 /var/lib/mysql 中的所有内容都将备份到主机的 /lamp/pvstorage 目录中,但这似乎没有发生(但文件已备份到我所在的其他地方可以看到。数据库总是在删除 mysql Pod 后重新创建)。

所以我的问题是我现在做错了什么,我该如何指定那个位置?

TL;DR

要在具有 --driver=dockerminikube 实例中访问存储在具有 hostPathPVC 上的文件,您需要直接登录主机(minikube) 例如:$ minikube ssh 并直接访问文件:ls /SOME_PATH


说明

Persistent VolumesStorage Classes的主题和处理整个过程的资源非常广泛,需要根据具体情况进行调查。

可以从官方文档和所用 Kubernetes 解决方案的文档中获得良好的基线知识来源:

大多数情况下,当使用 minikube(参见 --driver=none 的例外)时,某种 containerization/virtualization(包围 minikube 的层)用于隔离环境,还允许更容易地创建和销毁实例。这使得所有资源都存储在某个“盒子”中(Virtualbox VMDocker container 等)。

如本例所示,mysql 创建的文件存储在主机 运行 minikube 上,但在 minikube 实例本身中。当您使用 --driver=docker 创建 minikube 时,您会创建一个 Docker 容器,其中包含所有组件。此外,通过将 PVC.spec 的以下部分一起使用:

  hostPath:
    path: "/lamp/pvstorage"

hostPath

A hostPath volume mounts a file or directory from the host node's filesystem into your Pod.

-- Kubernetes.io: Docs: Concepts: Storage: Volumes: hostPath


例子

作为如何访问文件的示例:

docker@minikube:~$ ls /mnt/data/
auto.cnf  ib_logfile0  ib_logfile1  ibdata1  mysql  performance_schema

其他资源:

如果有将 host 目录安装到 minikube 实例到特定目录的用例,您可以选择:

  • $ minikube mount SOURCE:DESTINATION