在Kubernetes实施无停机升级

时间:2017-07-24 23:26:14

标签: deployment kubernetes database-update

我试图将Piwik网站部署到Kubernetes上,我正在努力弄清楚如何在不丢失统计数据的情况下进行热数据库升级。所以过程如下(从Piwik 3.0升级到3.1):

  1. 旋转redis
  2. 在维护模式下启动Piwik 3.0,这将阻止它连接到数据库
  3. 旋转旧的Piwik 3.0(常规模式)
  4. 旋转Piwik 3.1(在维护模式下)
  5. 运行数据库迁移。
  6. 旋转旧的Piwik 3.0(在维护模式下)
  7. 旋转Piwik 3.1(常规模式)
  8. 旋转Piwik 3.1(在维护模式下)
  9. 我可以在Kubernetes中编写脚本,或者我最好的方法是在我的主人内部运行脚本。我的目标是能够反复可靠地进行(因此在步骤5之前的故障被回滚,之后的故障依赖于人为干预)。

    我曾尝试围绕最佳方法进行一些研究,但我找不到有关此类升级过程的大量信息。大多数指南建议离线服务几秒钟/分钟,以进行迁移,在此应用程序中是不可接受的。

1 个答案:

答案 0 :(得分:1)

如果您的Piwik实例是作为部署创建的,那么您很幸运。详情为here。你需要做的是RollingUpdate。

这个过程看起来像这样。语法为" 操作:结果"。

  1. 在Piwik部署中启用维护模式: k8s在维护模式下逐步启动新的Piwik 3.0 Pod,并关闭旧的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。