如何使用一些默认模式和数据在kubernetes上部署MariaDB?
在某些情况下,我试图在kubernetes上构建一个登台/测试系统,首先在集群上部署一个带有一些模式和数据的mariadb。我有一个来自prod的集群化/clensed db转储来帮助我解决这个问题。让我们调用这个文件:dbdump.sql,它位于路径/home/rjosh/database/script/中的我的本地框中。经过大量研究,这里是我的yaml文件的样子:如何使用一些默认模式和数据在kubernetes上部署MariaDB?,kubernetes,mariadb,google-kubernetes-engine,Kubernetes,Mariadb,Google Kubernetes Engine,在某些情况下,我试图在kubernetes上构建一个登台/测试系统,首先在集群上部署一个带有一些模式和数据的mariadb。我有一个来自prod的集群化/clensed db转储来帮助我解决这个问题。让我们调用这个文件:dbdump.sql,它位于路径/home/rjosh/database/script/中的我的本地框中。经过大量研究,这里是我的yaml文件的样子: apiVersion: v1 kind: PersistentVolume metadata: name: m3ma-pv-
apiVersion: v1
kind: PersistentVolume
metadata:
name: m3ma-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 30Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: m3ma-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
---
apiVersion: v1
kind: Service
metadata:
name: m3ma
spec:
ports:
- port: 3306
selector:
app: m3ma
clusterIP: None
---
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: m3ma
spec:
selector:
matchLabels:
app: m3ma
strategy:
type: Recreate
template:
metadata:
labels:
app: m3ma
spec:
containers:
- image: mariadb:10.2
name: m3ma
env:
# Use secret in real usage
- name: MYSQL_ROOT_PASSWORD
value: password
ports:
- containerPort: 3306
name: m3ma
volumeMounts:
- name: m3ma-persistent-storage
mountPath: /var/lib/mysql/
- name: m3ma-host-path
mountPath: /docker-entrypoint-initdb.d/
volumes:
- name: m3ma-persistent-storage
persistentVolumeClaim:
claimName: m3ma-pv-claim
- name: m3ma-host-path
hostPath:
path: /home/smaikap/database/script/
type: Directory
MariaDB实例即将出现,但没有出现在/home/rjosh/database/script/dbdump.sql中的模式和数据
基本上,安装不起作用。如果我连接到pod并选中/docker-entrypoint-initdb.d/则什么都没有。我该怎么办
再详细一点。目前,我正在minikube上测试它。但是,很快它将不得不在GKE集群上工作。查看文档,对于GKE来说,hostPath不是选择。那么,正确的方法是什么呢?你确定你的主目录对Kubernetes可见吗?Minikube通常会创建一个小VM来运行一些东西,它不会包含您的home目录。更常见的处理方法是自己制作一个非常小的新Docker图像,如:
FROM mariadb:10.2
COPY dbdump.sql /docker-entrypoint-initdb.d/
然后将它推到某个注册表中,然后改用该图像。有可能,我可以试试!!这是在这种情况下的最佳实践吗?我偶然发现了这个线程,它正在为AWS做类似的事情:这取决于文件有多大。如果我们讨论的只是几十行内容,那么将其放在ConfigMap中并将其装载为卷肯定很好。否则,您可以使用卷,但将很难在其中获取数据,这是一个问题,因为无法将其保存在映像中。目前.sql文件的大小约为8GB。将来,尺寸可能会有很大的变化。嗯,这很难。您可以手动将其加载到gcp磁盘,然后引用它?