如何解决如何指定持久卷文件的存储位置 说明hostPath示例
我开始通过创建 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
要访问存储在带有 PVC
的 hostPath
中的文件,您需要直接登录到主机(minikube
的 --driver=docker
实例中(minikube
}}) 例如:$ minikube ssh
并直接访问文件:ls /SOME_PATH
说明
Persistent Volumes
、Storage Classes
的主题和处理整个过程的资源相当广泛,需要逐案调查。
可以从官方文档和所用 Kubernetes 解决方案的文档中获得良好的基线知识来源:
在使用 minikube
(参见 --driver=none
的例外)时,通常使用某种容器化/虚拟化(包围 minikube
的层)来隔离环境并允许为了更容易地创建和销毁实例。这使得所有资源都存储在某个“盒子”(Virtualbox VM
、Docker container
等)中。
在本例中,mysql
创建的文件存储在运行 minikube
的主机上,但存储在 minikube
实例本身中。当您使用 minikube
创建 --driver=docker
时,您将创建一个 Docker
容器,其中包含所有组件。此外,通过将 PVC
与 .spec
的以下部分一起使用:
hostPath:
path: "/lamp/pvstorage"
hostPath
hostPath
卷将文件或目录从主机节点的文件系统装入您的 Pod。
-- Kubernetes.io: Docs: Concepts: Storage: Volumes: hostPath
示例
作为如何访问文件的示例:
- 按照以下指南操作:
- Kubernetes.io: Docs: Tasks: Run application: Run single instance stateful application
- 检查
mysql
是否处于Running
状态 ($ kubectl get pods
) - 运行:
$ minikube ssh
-
ls /mnt/data
(或hostPath
中指定的内容)
docker@minikube:~$ ls /mnt/data/
auto.cnf ib_logfile0 ib_logfile1 ibdata1 mysql performance_schema
其他资源:
如果有将 host 目录安装到 minikube
实例到特定目录的用例,您可以选择:
$ minikube mount SOURCE:DESTINATION
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。