【问题标题】:minikube hostpath mount permissionsminikube 主机路径挂载权限
【发布时间】: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


【解决方案1】:

正如@Matthew L Daniel 在 cmets 中提到的,使用hostPath 的主要目的是将本地文件夹从托管 minikube 的机器上挂载到嵌套 Pod,因此没有必要将本地目录挂载到迷你库。另外,请查看article,它解释了有关 minikube 中特定 VM 驱动程序的主机文件夹安装的一些限制。

【讨论】:

  • 如果它可以工作,我很好。我已经尽一切努力让数据库文件持久存在,但到目前为止绝对没有任何效果。这是我最接近有意义的错误消息的地方。我希望它会带来一些有用的东西。
猜你喜欢
  • 2021-11-19
  • 2019-04-22
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
相关资源
最近更新 更多