2017-07-24 39 views
0

我试图将一个Piwik站点部署到Kubernetes上,并且我正在努力弄清楚如何在不丢失统计信息的情况下执行热数据库升级。所以,过程如下(升级从Piwik 3.0〜3.1):在Kubernetes中实现不停机升级

  1. 自旋向上的Redis
  2. 旋转起来Piwik 3.0在维护模式下,将无法连接到数据库
  3. 下旋老Piwik停止3.0(在常规模式下)
  4. Spw up Piwik 3.1(在维护模式下)
  5. 运行数据库迁移。
  6. 下旋老Piwik 3.0(在维护模式下)
  7. 旋转起来Piwik 3.1(在正常模式下)
  8. 下旋Piwik 3.1(在维护模式下)

我可以编写脚本这里面Kubernetes,或者是我在主人内部运行脚本的最佳方法。我的目标是能够重复和可靠地进行(因此,在第5步之前的失败被回滚,之后的失败依赖于人为干预)。

我试图围绕最佳方法做一些研究,但是我找不到有关这种升级过程的很多信息。大多数指南只是建议在几秒/分钟的时间内将服务离线进行,以便在此应用程序中执行迁移,这是不可接受的。

回答

1

如果您的Piwik实例是作为Deployment创建的,那么您很幸运。详情为here。你需要做的是一个滚动更新。

该过程将如下所示。语法是“动作:结果”。

  1. 在Piwik部署启用维护模式: K8S在维护模式逐步启动Piwik 3.0的新荚,和自旋向下老Piwik 3.0。这是Pod by Pod发生的情况。
  2. 将Piwik Deployment中的图像标签更新到3.1: k8s逐步启动Piwik 3.1的新Pod,并使Piwik 3.0维护模式停转。这是Pod by Pod发生的情况。
  3. 运行数据库迁移:做你的schtuff。
  4. 在Piwik部署中禁用维护模式: k8s逐步启动Piwik 3.1常规模式的新Pod,并停用Piwik 3.1维护模式。这是Pod by Pod发生的情况。