永久卷的Kubernetes存储位置在哪里?

问题描述

我正在学习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桌面(在Mac上)的Kubernetes单主节点集群,我可以使示例工作并与Mysql交互以创建表并填充一些数据。删除资源并重试之后,数据仍然存在,重新安装Deployment,Service,PV和PVC后,我能够立即访问数据。成功连接应用程序的前提条件。

但是,我终生无法得知数据实际上存储在笔记本电脑的本地文件系统中。这些示例中仅列出了2个文件路径。部署中的一个(我假设是容器的内部文件系统,类似于Docker的容器内部路径):

volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql 

持久卷路径(我假设是Docker的主机系统等效文件路径):

hostPath:
    path: "/mnt/data" 

我的问题是:在笔记本电脑上我找不到任何路径。尽管PV仍然处于活动状态,但/ mnt / data从我的笔记本电脑的根目录直接存在(我本来希望它不存在),而且我看不到在文件系统上安装kubernetes集群,节点或pod的位置。我的笔记本电脑在哪里存储这些数据?这不一定是一门实用的知识,但要掌握一个很好的理解kubernetes及其工作方式的知识,至关重要的是,我不愿意也不能够继续学习kubernetes,直到我能弄清物理位置。数据存储在主机文件系统上。

我已经看到另一个问题,说“ SSH进入运行PV资源的节点”,但是我感觉那是指该节点位于单独服务器上的分布式云系统,如上所述,我找不到安装我的一个在本地运行的主节点的路径。其他所有内容似乎都指向了关于PV和PVC的无用的官方文档。

有人可以向我解释这个mysql数据应该在哪里吗?

解决方法

Mac上的Docker桌面运行a virtual machine to run docker inside。当您查看hostPath.path时,是正确的-它就是存储位置。但是因为docker / Kubernetes位于VM内,所以路径是相对的。

要亲自了解这一点,Docker Desktop并没有提供有关进入虚拟机的指南。社区有some options though。一种简单的方法是docker run -it --rm --privileged --pid=host justincormack/nsenter1。该命令在docker内部运行一个容器,可为您提供包含docker守护程序的VM上的外壳。

关于笔记本电脑上的位置,您可以遵循docs about the disk image for the VM首选项>资源>高级将向您显示磁盘映像文件在笔记本电脑上的物理位置。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...