mysql - Persistent Volume 的 Kubernetes 存储位置在哪里?

标签 mysql docker kubernetes storage persistent-volumes

我正在学习 Kubernetes 并尝试按照以下教程创建 Mysql 数据库:
https://kubernetes.io/docs/tasks/run-application/run-single-instance-stateful-application/#:~:text=Deploy%20MySQL,MySQL%20and%20references%20the%20PersistentVolumeClaim .
到目前为止,我一直在使用 Docker 和 Docker-compose 来完成我所有的开发和生产工作。
使用 Docker Desktop(在 Mac 上)的 Kubernetes 单主节点集群,我能够使示例正常工作并与 Mysql 交互,创建表并填充一些数据。删除资源并重试后,数据仍然存在,我能够在重新安装部署、服务、PV 和 PVC 后立即访问数据。连接应用程序的成功先决条件。
但是,我终生无法找到数据实际存储在笔记本电脑本地文件系统上的位置。这些示例中仅列出了 2 个文件路径。部署中的一个(我假设它是容器的内部文件系统,类似于 Docker 的容器内部路径):

volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql 
以及持久卷路径(我假设它是 docker 的主机系统等效文件路径):
hostPath:
    path: "/mnt/data" 
我的问题是:在我的笔记本电脑上,我找不到这些路径中的任何一个。/mnt/data 不直接从我的笔记本电脑的根目录存在(我本来希望它存在的地方),尽管 PV 仍然处于事件状态,而且我看不到 kubernetes 集群、节点或 pod 安装在我的文件系统上的任何位置。这些数据存储在我的笔记本电脑上的什么位置?这不一定是一个实际有用的知识,但为了更好地理解 kubernetes 及其工作原理,了解这一点至关重要,而且我不愿意也无法继续学习 kubernetes,直到我能弄清楚 body 在哪里数据存储在主机文件系统上。
我看到另一个问题是“SSH 到运行 PV 资源的节点”,但我觉得这是在引用分布式云系统,其中节点存在于单独的服务器上,并且如上所述我找不到我的挂载路径一个本地运行的主节点。其他一切似乎都指向关于 PV 和 PVC 的无用官方文档。
谁能向我解释这个mysql数据应该在哪里?

最佳答案

Mac 上的 Docker Desktop 运行 a virtual machine to run docker inside .当您查看 hostPath.path 时,您是正确的- 那是它存储的地方。但是因为 docker/Kubernetes 在虚拟机内部,所以路径是相对的。
自己看这个有点棘手,Docker Desktop 没有提供进入 VM 的指南。社区有some options though .一个简单的方法是docker run -it --rm --privileged --pid=host justincormack/nsenter1 .该命令在 docker 内运行一个容器,该容器会在包含 docker 守护程序的 VM 上为您提供一个 shell。
至于它在你的笔记本电脑上的位置,你可以关注 docs about the disk image for the VM . 首选项 > 资源 > 高级 将显示磁盘镜像文件在笔记本电脑上的物理位置。

关于mysql - Persistent Volume 的 Kubernetes 存储位置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63389447/

相关文章:

mysql删除相同日期时间的记录

php - 根据文本输入字段填充省份下拉菜单

docker-compose主机名以在容器之间通信与postgres一起使用,但不适用于app

php - docker-up 时出现 mysql 连接错误

kubernetes - 如何基于Helm Chart中的参数动态获取值

mysql - 从多个列中获取两个最大值

mysql - 安装 Drupal 7 时出错

git - Jenkins:运行构建不提供 docker slave

kubernetes - K8s 部署的插值

kubernetes - 无法覆盖部署 k8s 的 `replicas`