首页 > 解决方案 > 如何在 Kubernetes 中使用初始数据创建 mysql 容器?

问题描述

我想在容器的 MySQL 上设置初始数据(创建数据库和表的脚本文件)。我有另一个 pod,它将与 mysql pod 对话并将数据插入表中。如果我删除 mysql pod,它会创建另一个 pod,但是以前插入的数据丢失了。我不想丢失在删除 pod 之前插入的数据。如何做到这一点?我创建了 pv 和 pvc,删除 pod 后数据丢失。

kind: PersistentVolume
apiVersion: v1
metadata:
  name: mysql-initdb-pv-volume
  labels:
    type: local
    app: mysql
spec:
  storageClassName: manual
  capacity:
    storage: 1Mi
  accessModes:
    - ReadOnlyMany
  hostPath:
    path: "/home/path to script file/script"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql-initdb-pv-claim
  labels:
    app: mysql
spec:
  storageClassName: manual
  accessModes:
    - ReadOnlyMany
  resources:
    requests:
      storage: 1Mi

这是部署.yaml

       volumeMounts:
    - name: mysql-initdb
      mountPath: /docker-entrypoint-initdb.d
  volumes:
  - name: mysql-initdb
    persistentVolumeClaim:
      claimName: mysql-initdb-pv-claim

标签: mysqlkubernetescontainersdevops

解决方案


编写一个脚本并将其附加到 post start 挂钩。验证数据库是否存在且在线。然后继续运行 sql 命令来创建所需的数据


推荐阅读