<p>我需要将 /var/lib/mysql 目录挂载为持久卷,以便每次电脑重新启动时数据库的内容都不会丢失(我使用 Docker 桌面和 Windows)。</p>
<p>但是启动Pod时,出现以下错误:</p>
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”的所有权:不允许操作</pre>
<p>这是配置文件:</p>
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
<p>如果我对卷使用另一个装载路径,pod会启动,但是当然,每次重新启动计算机时数据库内容都会丢失。</p>
<p>我还尝试通过在安装卷之前执行 chown 命令来更改目录的所有者:</p>
<pre class="brush:php;toolbar:false;">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</pre>
<p>但是启动 pod 时出现以下错误:
<code>chown:无法读取目录“/var/lib/mysql”:不允许操作</code></p>
<p>感谢您的帮助。</p>
添加
在 StatefulSet 组件上