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

时间:2018-10-30 13:55:53

标签: mysql kubernetes amazon-eks aws-eks

我的AWS EKS集群中有一个运行MySQL:5.7的容器。我有一个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?

更新:还有一个问题,说明了如果您的初始化文件很小或可以访问Kubernetes主机的方法:How to initialize mysql container when created on Kubernetes?

但是,就我而言,我在AWS EKS上,并且我的init文件只有几GB,因此任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在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. 现在,向您的mysql pod中添加一个init-container。将此init-script pvc挂载到此init-container的某个目录。配置您的init-container,使其将您的init.sql文件下载到此目录中。

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

让我知道您是否需要使用init-container方法的样本。

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