2017-07-24 58 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發生的情況。