2017-01-16 38 views
9

我有一個在CloudSQL數據庫上進行數據庫遷移的Kubernetes JOB
從GKE訪問CloudSQL數據庫的一種方法是使用CloudSQL代理容器,然後通過localhost進行連接。太好了 - 這是迄今爲止的工作。但是因爲我在K8s JOB中執行此操作,所以作業未標記爲已成功完成,因爲代理繼續運行。Kubernetes:在多個容器中停止CloudSQL代理邊車容器Pod/Job

$ kubectrl get po 
NAME      READY  STATUS  RESTARTS AGE 
db-migrations-c1a547  1/2  Completed 0   1m 

即使輸出顯示'已完成',最初兩個容器之一仍在運行 - 代理。

如何讓代理退出完成容器1內部的遷移?

+0

downvote沒有評論?將是有益的添加一個筆記有什麼可以改進... – pkyeck

+0

嗨@Phillip,你在此期間找到解決方案,或任何其他方法來做移民? –

+0

@MarkVincze我用Christian的方法創建了一個獨立的代理服務,該工作可以連接到 - 不需要邊車 – pkyeck

回答

8

一個可能的解決方案將是一個單獨的與匹配服務的cloudsql代理部署。然後,您只需要在連接到代理服務的作業內部安裝遷移容器。

這帶有一些缺點:

  • 更高的網絡延遲,無莢本地MySQL通信
  • 可能出現的安全問題,如果你提供的SQL端口到你的整個kubernetes集羣

如果您想要將cloudsql-proxy打開到整個羣集,您必須在cloudsql-proxy的-instance參數中將tcp:3306替換爲tcp:0.0.0.0:3306

+0

是的,也試過了。但花了我一段時間來確定'0.0.0.0'的部分;) – pkyeck