kubernetes - Kubernetes - 为数据库部署初始化持久卷的最佳方式
问题描述
我有一个 Neo4j 服务,但是在部署启动之前,我需要用数据预先填充它(大约 2GB 的数据)。目前,我编写了一个 KubernetesJob
来将数据从 CSV 转换并使用该neo4j-admin
工具为数据库格式化。它将格式化的数据保存到持久卷中。等待作业完成后,我将卷挂载到 Neo4j 容器中,并且容器在其剩余生命周期内有效地只读此数据。
有没有更好的方法可以更自动地做到这一点?
我不想等待作业完成来运行另一个命令来创建 Neo4j 部署。我查看了 initContainers,但这不合适,因为我不想在重新创建 pod 时重做数据填充。我只希望后续的 pod 从同一个持久卷中读取。有没有办法等待作业先完成?
解决方案
由于 Jobs 无法在完成后本地生成新对象(如果正常退出,使用PreStop调用进一步的操作将不起作用),您可能希望改为监视 API 对象。
以编程方式访问 API以确定 Job 何时完成,然后创建 Deployment 对象可能是一种可行的自动化方式。
这样做,您不必担心使用 initContainers 重做数据处理,因为您实际上可以调用部署并重新安装已经存在的卷。
此外,使用官方 Go 库允许您在集群内、pod 中或外部运行。
推荐阅读
- c# - error "String was not recognized as a valid DateTime." in c#
- javascript - 反应:多步骤表单/向导类型错误:动作不是函数
- python - Django AdminDateWidget 显示为 TextInput
- javascript - 将 SSML 与纯 javascript 一起使用
- javascript - 从表格发送大量电子邮件的 Google 脚本停止工作。我没有更改代码
- influxdb - 如何从 influxdb 返回时间戳而不是时间?
- r - R - 使用一种值检查机制将许多列合并为一个
- java - 自定义对话框未显示某些 XML
- javascript - 如何使用 redux 状态更新 React HOC 组件?
- r - 在 ToC 之后删除额外的空白幻灯片,并在 rmarkdown::beamer_presentation 中插入带有自定义投影仪主题的黑色幻灯片