mysql - 无法在 kubernetes 数据库中添加 .sql 文件
问题描述
我正在使用“主机路径”将 .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 文档中所读到的:
hostPath 卷将文件或目录从主机节点的文件系统安装到您的 Pod 中。
并进一步:
除了必需的路径属性外,用户还可以选择指定 hostPath 卷的类型。
字段有一些受支持的值type
。您应该在特定情况下使用的是 a File
,其定义如下:
文件 文件必须存在于给定路径
在您的部署定义中,您应该使用文件的完整路径,如下例所示:
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
and 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
推荐阅读
- php - 如何在 Laravel Tastyigniter(在线食品订购)系统中显示管理员特定数据
- c# - 如果 ASP.NET 中的 Task.GetAwaiter().GetResult() 停止所有线程?
- php - 在 php 中检查 3 个条件的更优雅的方法?
- python - Python - 随机化函数的顺序
- github - GitHub Pages 可以作为图片 CDN 使用吗
- sql - 为什么 MAX 总是返回一行?
- laravel - PHP:在 PHP/Laravel 中的“死”函数之后执行代码
- r - 有没有办法在 RcppArmadillo `arma::solve` 中静音警告?
- ios - 如何使用一个 UIImagePickerControllerDelegate 设置 2 个不同的图像?
- vue.js - Vue调用另一个组件文件方法