【发布时间】:2019-06-22 04:03:51
【问题描述】:
我正在尝试挂载一个本地目录以供 kubernetes 中的容器使用,但出现此错误:
$ kubectl logs mysql-pd
chown: changing ownership of '/var/lib/mysql/': Input/output error
minikube 版本:v0.33.1
docker for mac 版本:2.0.0.2 (30215)
引擎:18.09.1
Kubernetes:v1.10.11
我正在使用挂载目录启动 minikube:
minikube start --mount-string /Users/foo/mysql_data:/mysql_data --mount
deployment.yml
apiVersion: v1
kind: Pod
metadata:
name: mysql-pd
spec:
containers:
- image: mysql:5.7
name: mysql-container
env:
- name: MYSQL_ROOT_PASSWORD
value: ""
- name: MYSQL_ALLOW_EMPTY_PASSWORD
value: "yes"
ports:
- containerPort: 3306
volumeMounts:
- mountPath: "/var/lib/mysql"
name: host-mount
volumes:
- name: host-mount
hostPath:
path: "/mysql_data"
【问题讨论】:
-
为什么将实际数据库文件存储在 (HFS|APFS) 文件系统上很重要?你以后要运行一个单独的
mysqld指向同一个目录吗?因为明智的做法是忽略--mount业务,让hostPath:做它通常做的事情并写入虚拟机的磁盘,这对你来说仍然是本地,并且受时间限制Machine 等人,但回避了整个辩论 -
到目前为止,hostPath 对我不起作用,PersistentVolume 或我可以在那里找到的任何其他技术或建议也没有。这是我最接近有意义的错误消息。我想将数据库持久化到容器的生命周期之外。
-
你要删除 minikube,因为这是
hostPath:或 PV 在 Pod 生命周期之外删除的唯一结果 -
你说得对,我想我在想它会把它的文件放在我的硬盘上。它们在VM内部。不过,我希望它的行为像 Docker。在 Docker 中,我可以启动 mysql 容器并将数据库文件存储在我的硬盘上
-
我想知道是否有一种方法可以在 VirtualBox 中创建一个也可以由 kubernetes pod 写入的共享文件夹。我猜这将是另一个权限错误
标签: macos kubernetes permissions minikube persistent-storage