我需要将 /var/lib/mysql 目录挂载为持久卷,以便每次电脑重新启动时数据库的内容都不会丢失(我使用 Docker 桌面和 Windows)。
但是启动Pod时,出现以下错误:
2023-03-07 21:10:15+00:00 [注意] [入口点]:MySQL Server 8.0.32-1.el8 的入口点脚本开始了。 find: '/var/lib/mysql/': 不允许操作 查找:'/var/lib/mysql':不允许操作 chown:更改“/var/lib/mysql/”的所有权:不允许操作 chown:更改“/var/lib/mysql”的所有权:不允许操作
这是配置文件:
kind: StorageClass api版本:storage.k8s.io/v1 元数据: 名称:本地存储 配置者:kubernetes.io/no-provisioner 回收政策:保留 VolumeBindingMode:WaitForFirstConsumer --- api版本:v1 种类:持久卷 元数据: 名称:mysql-pv 规格: 容量: 存储空间:500M VolumeMode:文件系统 访问模式: - 读写一次 storageClassName:本地存储 当地的: 路径:/c/data/db 节点亲和力: 必需的: 节点选择器条款: - 匹配表达式: - 密钥:kubernetes.io/主机名 运算符:In 价值观: - docker-桌面 --- api版本:v1 种类:持久卷声明 元数据: 名称:mysql-pvc 规格: 访问模式: - 读写一次 storageClassName:本地存储 资源: 要求: 存储空间:500M --- api版本:v1 种类: 服务 元数据: 名称:mysql 规格: 选择器: 应用程序: mysql 端口: - 端口:3306 目标端口:3306 --- api版本:v1 种类: 服务 元数据: 名称:mysql-lb 规格: 类型:负载均衡器 选择器: 应用程序: mysql 端口: - 端口:3306 目标端口:3306 --- api版本:apps/v1 种类:StatefulSet 元数据: 标签: 应用程序: mysql 名称:mysql 规格: 服务名称:mysql 副本:1 选择器: 匹配标签: 应用程序: mysql 模板: 元数据: 标签: 应用程序: mysql 规格: 容器: - 图像:mysql:最新 名称:mysql 端口: - 集装箱端口:3306 资源: {} 体积安装: - 名称:mysql-volume 挂载路径:/var/lib/mysql 环境: - 名称:MYSQL_ROOT_PASSWORD 值来自: 配置映射密钥参考: 键:MYSQL_ROOT_PASSWORD 名称:mysql-env - 名称:MYSQL_ROOT_USERNAME 值来自: 配置映射密钥参考: 键:MYSQL_ROOT_USERNAME 名称:mysql-env 卷: - 名称:mysql-volume 持久卷声明: 声明名称:mysql-pvc
如果我对卷使用另一个装载路径,pod会启动,但是当然,每次重新启动计算机时数据库内容都会丢失。
我还尝试通过在安装卷之前执行 chown 命令来更改目录的所有者:
containers: - image: mysql:latest name: mysql ports: - containerPort: 3306 resources: {} command: - chown - -R - 999:999 - /var/lib/mysql volumeMounts: - name: mysql-volume mountPath: /var/lib/mysql
但是启动 pod 时出现以下错误: chown:无法读取目录“/var/lib/mysql”:不允许操作
感谢您的帮助。
添加
在 StatefulSet 组件上