初始化部署在 AWS EKS 中的 MySQL 数据库

Initializing a MySQL database deployed in an AWS EKS

我的 AWS EKS 集群中有一个运行 MySQL:5.7 的 pod。我有一个 SQL 文件,用于为它初始化和填充数据。在正常的 docker-compose 中,我将在我的 docker-compose 文件中为其使用一个挂载点:

volumes:
  - ./<path-to-my-config-directory>:/etc/mysql/conf.d
  - ./<path-to-my-persistence-directory>:/var/lib/mysql
  - ./<path-to-my-init.sql>:/docker-entrypoint-initdb.d/init.sql

在 EKS 中,我可以创建一个存储 class 来保存 MySQL 数据。

如何使用我的 init.sql 文件(大约 8GB)来初始化 EKS 集群中的 MySQL pods 运行?

更新: 还有一个问题解释了如果您有一个小的 init 文件或可以访问 Kubernetes 主机时如何做到这一点:

但就我而言,我使用的是 AWS EKS,我的初始文件有几千兆字节,因此我们将不胜感激。

在 Kubernetes 中也很容易。您可以按照以下方式进行,

  1. 将您的 init.sql 文件放入 Kubernetes volume.
  2. 将此卷装载到 mysql pod 的 /docker-entrypoint-initdb.d 目录中。

这是一个示例 yaml 文件:mysql-init-demo.yaml

您还可以使用 init-containerinit.sql 文件下载到安装在 mysql 容器的 /docker-entrypoint-initdb.d 目录中的 Kubernetes 卷中。

UPD: 正如您在更新中指定的那样,您提到的解决方案对您不起作用。我认为 init-container 方法最适合您。以下是您可以执行的操作:

  1. 创建 PVC。让它的名字是 init-script.
  2. 现在,将 init-container 添加到您的 mysql 连播中。将这个 init-script pvc 挂载到这个 init-container 的某个目录。配置您的 init-container 以便将您的 init.sql 文件下载到此目录。

  3. 在 mysql 容器中安装 init-script /docker-entrypoint-initdb.d

如果您需要使用 init-container 方法的任何示例,请告诉我。

UPD-2: 我已经为 init-container 方法添加了一个示例。你可以找到它 here.