将mysql数据导入kubernetes pod

mon*_*ich 1 mysql containers docker kubernetes google-kubernetes-engine

是否有人知道如何将我的dump.sql文件中的数据导入到kubernetes pod中?

直接地,与处理Docker容器的方式相同:

docker exec -i container_name mysql -uroot --password=secret database < Dump.sql
Run Code Online (Sandbox Code Playgroud)

或者使用存储在现有docker容器卷中的数据并将其传递到pod。

Cam*_*cbr 8

就算其他人正在搜寻:

kubectl -n namespace exec -i my_sql_pod_name -- mysql -u user -ppassword < my_local_dump.sql
Run Code Online (Sandbox Code Playgroud)

  • 有点令人惊讶……这对于将数据库从本地导入到远程集群上的随机 pod 非常有用。 (2认同)

Ani*_*han 5

要回答您的具体问题:

您可以kubectl exec进入容器以在其中运行命令。您可能需要首先确保容器可以访问该文件,方法可能是将其存储在集群可以访问的位置(网络?),然后在容器内使用 wget/curl 使其可用。甚至可以打开一个交互式会话kubectl exec

但是,在增加通用性方面这样做的方法是:

  1. 创建一个服务,让您可以从集群外部访问在 pod 上运行的 mysql 实例,并将您的本地 mysql 客户端连接到它。

  2. 如果每次启动此类 mysql pod 时都执行此初始化操作,则它可以存储在持久卷上,并且可以在启动时在 pod 中执行脚本。

  3. 如果您在启动 Pod 时通常需要复制多条数据,请查看用于获取该数据的init 容器