<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 元件上