Docker Desktop, Kubernetes und MySql: Volume kann nicht auf /var/lib/mysql/ gemountet werden
<p>Ich muss das Verzeichnis /var/lib/mysql als persistentes Volume bereitstellen, damit der Inhalt der Datenbank nicht bei jedem Neustart des Computers verloren geht (ich verwende Docker Desktop und Windows).</p>
<p>但是启动Pod时,出现以下错误:</p>
<pre class="brush:php;toolbar:false;">2023-03-07 21:10:15+00:00 [Hinweis] [Entrypoint]: Entrypoint-Skript für MySQL Server 8.0.32-1.el8 gestartet.
find: '/var/lib/mysql/': Vorgang nicht zulässig
find: '/var/lib/mysql': Vorgang nicht zulässig
chown: Eigentümerwechsel von „/var/lib/mysql/“: Vorgang nicht zulässig
chown: Eigentümerwechsel von „/var/lib/mysql“: Vorgang nicht zulässig</pre>
<p>这是部署文件:</p>
<pre class="brush:php;toolbar:false;">kind: StorageClass
apiVersion: storage.k8s.io/v1
Metadaten:
Name: lokaler Speicher
Provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Behalten
volumeBindingMode: WaitForFirstConsumer
---
APIVersion: v1
Art: PersistentVolume
Metadaten:
Name: mysql-pv
Spezifikation:
Kapazität:
Speicher: 500 MB
volumeMode: Dateisystem
Zugriffsmodi:
- ReadWriteOnce
storageClassName: lokaler Speicher
lokal:
Pfad: /c/data/db
nodeAffinität:
erforderlich:
nodeSelectorBedingungen:
- matchExpressions:
- Schlüssel: kubernetes.io/hostname
Betreiber: In
Werte:
- Docker-Desktop
---
APIVersion: v1
Art: PersistentVolumeClaim
Metadaten:
Name: mysql-pvc
Spezifikation:
Zugriffsmodi:
- ReadWriteOnce
storageClassName: lokaler Speicher
Ressourcen:
Anfragen:
Speicher: 500 MB
---
APIVersion: v1
Art: Service
Metadaten:
Name: MySQL
Spezifikation:
Wähler:
App: MySQL
Häfen:
- Hafen: 3306
ZielPort: 3306
---
APIVersion: v1
Art: Service
Metadaten:
Name: mysql-lb
Spezifikation:
Typ: LoadBalancer
Wähler:
App: MySQL
Häfen:
- Hafen: 3306
ZielPort: 3306
---
apiVersion: apps/v1
Art: StatefulSet
Metadaten:
Etiketten:
App: MySQL
Name: MySQL
Spezifikation:
Dienstname: MySQL
Nachbildungen: 1
Wähler:
matchLabels:
App: MySQL
Vorlage:
Metadaten:
Etiketten:
App: MySQL
Spezifikation:
Behälter:
- Bild: mysql:latest
Name: MySQL
Häfen:
- ContainerPort: 3306
Ressourcen: {}
volumeMounts:
- Name: MySQL-Volume
mountPath: /var/lib/mysql
Umgebung:
- Name: MYSQL_ROOT_PASSWORD
valueVon:
configMapKeyRef:
Schlüssel: MYSQL_ROOT_PASSWORD
Name: mysql-env
- Name: MYSQL_ROOT_USERNAME
valueVon:
configMapKeyRef:
Schlüssel: MYSQL_ROOT_USERNAME
Name: mysql-env
Bände:
- Name: MySQL-Volume
persistentVolumeClaim:
ClaimName: mysql-pvc</pre>
<p>会丢失.</p>
<p>Ich habe auch versucht, den Eigentümer des Verzeichnisses zu ändern, indem ich vor dem Mounten des Volumes den Befehl chown ausgeführt habe: </p>
<pre class="brush:php;toolbar:false;">container:
- Bild: mysql:latest
Name: MySQL
Häfen:
- ContainerPort: 3306
Ressourcen: {}
Befehl:
- Chown
- -R
- 999:999
-/var/lib/mysql
volumeMounts:
- Name: MySQL-Volume
mountPath: /var/lib/mysql</pre>
<p>Aber beim Starten des Pods erhalte ich die folgende Fehlermeldung:
<code>chown: Verzeichnis „/var/lib/mysql“ kann nicht gelesen werden: Vorgang nicht zulässig</code></p>
<p>Vielen Dank für Ihre Hilfe. </p>