0

我的 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 中,我可以创建一个存储类来保存 MySQL 数据。

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

更新:如果您有一个小的 init 文件或有权访问 Kubernetes 主机,还有另一个问题解释了如何执行此操作:How to initialize mysql container when created on Kubernetes?

不过,就我而言,我在 AWS EKS 上,我的 init 文件只有几 GB,因此我们将不胜感激。

4

1 回答 1

3

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

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

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

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

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

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

  3. init-script在 mysql 容器中挂载/docker-entrypoint-initdb.d

init-container如果您需要任何带有方法的样品,请告诉我。

UPD-2:我为init-container方法添加了一个示例。你可以在这里找到它。

于 2018-10-30T17:01:36.200 回答