Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用一些默认模式和数据在kubernetes上部署MariaDB?_Kubernetes_Mariadb_Google Kubernetes Engine - Fatal编程技术网

如何使用一些默认模式和数据在kubernetes上部署MariaDB?

如何使用一些默认模式和数据在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-

在某些情况下,我试图在kubernetes上构建一个登台/测试系统,首先在集群上部署一个带有一些模式和数据的mariadb。我有一个来自prod的集群化/clensed db转储来帮助我解决这个问题。让我们调用这个文件:dbdump.sql,它位于路径/home/rjosh/database/script/中的我的本地框中。经过大量研究,这里是我的yaml文件的样子:

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磁盘,然后引用它?