mysql - 如何在 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
解决方案
编写一个脚本并将其附加到 post start 挂钩。验证数据库是否存在且在线。然后继续运行 sql 命令来创建所需的数据