gpt4 book ai didi

docker - 如何最好地在 Kubernetes 集群中运行一次性迁移任务

转载 作者:IT老高 更新时间:2023-10-28 12:38:32 25 4
gpt4 key购买 nike

在将我的应用程序的新版本部署到 Kubernetes 集群之前,我想运行这些数据库迁移。我希望这些迁移作为持续交付管道的一部分自动运行。迁移将被封装为容器镜像。实现这一目标的最佳机制是什么?

解决方案的要求:

  • 能够确定迁移是否失败,这样我们就不会随后尝试将新版本的应用部署到集群中。
  • 如果迁移失败,请放弃 - 不要继续重试。
  • 能够访问日志以诊断失败的迁移。

我曾认为 Kubernetes 中的 Jobs 功能会让这一切变得简单,但似乎存在一些挑战:

使用“裸 pod ”会是更好的方法吗?如果是这样,它会如何工作?

最佳答案

blocking while waiting on the result of a queued-up job seems to require hand-rolled scripts

感谢 kubectl wait 命令,这不再是必需的。

这是我在 CI 中运行数据库迁移的方式:

kubectl apply -f migration-job.yml
kubectl wait --for=condition=complete --timeout=60s job/migration
kubectl delete job/migration

在失败或超时的情况下,前两个 CLI 命令之一返回错误的退出代码,然后强制 CI 管道的其余部分终止。

migration-job.yml 描述了一个配置了 restartPolicy: Never 和相当低的 activeDeadlineSeconds 的 kubernetes Job 资源>.

您也可以使用 spec.ttlSecondsAfterFinished attribute而不是手动运行 kubectl delete 但在撰写本文时仍处于 alpha 阶段,至少 Google Kubernetes Engine 不支持。

关于docker - 如何最好地在 Kubernetes 集群中运行一次性迁移任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37058812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com