2017-09-04 40 views
2

我正在使用Google Container Engine爲MongoDB副本集(3個副本窗格)運行StatefulSet。我可以在Kubernetes的volumeClaimTemplate中使用現有的GCE持久磁盤Statefulset

這適用於永久存儲的動態配置 - 這是在創建有狀態集時爲每個pod配置的新存儲。

但是,如果我重新啓動StatefulSet,似乎我無法重新綁定舊的持久卷,因爲新的存儲將再次置備。這意味着數據丟失了。理想情況下,持久性存儲應該在刪除Kubernetes集羣本身後繼續存在,數據保留並準備在新集羣中重新使用。

是否有辦法創建GCE永久磁盤並在StatefulSet的持久卷聲明中使用它們?

[更新2017年9月20]

找到了答案: 這是溶液(信貸@RahulKrishnan RA)

  1. 創建存儲類,指定基礎磁盤類型和zone

  2. 創建一個PersistentVolume,指定上面的存儲類創建 ,並引用永久磁盤w ish來安裝

  3. 創建一個PersistentVolumeClaim。命名PVC <pvc template name>-<statefulset name>-<ordinal number>非常重要。 (正確的名稱是 技巧!)指定volumeName作爲上面創建的PV,並存儲 類。
  4. 創建儘可能多的PV和PVC,因爲您擁有 正確名稱的複製品。
  5. 使用PVC模板創建statefulSet。

回答

0

方法1:動態

可以在statefulset.yaml文件一起部署定義

volumeClaimTemplates補充血容量要求的模板如下:
        - 元數據:
           名稱:存儲
           註釋:
                    volume.beta.kubernetes。IO /存儲類:慢
           規格:
                  accessModes:[ 「ReadWriteOnce」]
                 資源:
                       請求:
                       存儲:10Gi

創建存儲類storage.yaml文件

類型:StorageClass
apiVersion:storage.k8s.io/v1beta1
元數據:
     名稱:慢
供應方:kubernetes.io/gce-pd
參數:
     類型: PD-標準
     區:亞太east1-A

方法2靜態PV:

https://github.com/rahulkrishnanfs/percona-xtradb-statefulset-cluster-k8s/blob/master/percona.yml

注:persistentVolumeReclaimPolicy:保留使用,如果你想保留體積

持久卷可以由管理員靜態被提供,或者動態,基於在StorageClass資源上

+0

從現有持久磁盤如何提供此規定,而不指定磁盤名稱?看起來它仍然會動態配置? – conundrum

+0

您是否在尋找手動連接PV?這一個是針對statefulset應用的動態配置。有關手動設置,請參閱 https://github.com/rahulkrishnanfs/percona-xtradb-statefulset-cluster-k8s/blob/master/percona.yml –

+0

我遵循percona.yaml的Github鏈接。這似乎是PVC中的簡單動態配置。你能解釋一下這個PVC如何引用和使用現有的PD磁盤嗎? – conundrum

相關問題