我正在使用“hostpath”将 .sql 文件访问到卷中。
当我们进入mysql pod时,我们可以看到.sql文件
(“laravel/laravel.sql”给定路径在卷安装部分定义)
但它已成为目录而不是文件,我无法将 .sql 文件添加到数据库中。 目前.sql 文件的大小为50Mi,因此无法使用configmap。
请提供此问题的正确解决方案
mysql.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /home/paradise/lara_k8s/docker_qa-laravel
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.6
name: mysql
env:
- name: "MYSQL_ROOT_PASSWORD"
value: "root"
- name: "MYSQL_USERNAME"
value: "root"
- name: "MYSQL_PASSWORD"
value: "root"
- name: "MYSQL_DATABASE"
value: "homestead"
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /laravel
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
最佳答案
正如您在 Kubernetes 中所读到的那样 documentation :
A hostPath volume mounts a file or directory from the host node’s filesystem into your Pod.
以及进一步:
In addition to the required path property, user can optionally specify a type for a hostPath volume.
type
字段有一些受支持的值。您在特定情况下应该使用的文件是 File
,其定义如下:
File A file must exist at the given path
在部署定义中,您应该使用文件的完整路径,如下例所示:
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test/file.sql
name: test-volume
volumes:
- name: test-volume
hostPath:
path: /data/file.sql
type: File
要使用这种类型的卷,您不需要单独定义 persistentVolume
和 persistentVolumeClaim
。如果您只需将其添加到部署定义中就完全足够了。
如果出于某种原因您有兴趣创建一个 hostPath PersistentVolume
,它有很好的描述 here .
编辑:
部署定义的最后几行可能如下所示:
volumeMounts:
- name: mysql-volume
mountPath: /laravel/your_file.sql
volumes:
- name: mysql-volume
hostPath:
path: /path/to/file/your_file.sql
type: File
关于mysql - 无法在 kubernetes 数据库中添加 .sql 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691295/