首页  >  问答  >  正文

Docker Desktop、Kubernetes 和 MySql:无法在 /var/lib/mysql/ 上挂载卷

<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>
P粉627427202P粉627427202415 天前543

全部回复(1)我来回复

  • P粉103739566

    P粉1037395662023-09-02 09:02:55

    添加

    securityContext:
        runAsUser: 999
        allowPrivilegeEscalation: false

    在 StatefulSet 组件上

    回复
    0
  • 取消回复