2017-09-27 135 views
1

我想要在啓用local PV的情況下在裸露的元kubernetes 1.7中設置預定義的PostgreSQL集羣。我有三個工作節點。我在每個節點上創建本地PV併成功部署有狀態集(使用一些複雜的腳本來設置Postgres複製)。我可以依靠volumeClaimTemplates命名約定嗎?

但是我注意到volumeClaimTemplates和PersistentVolumeClaim之間有一種命名約定。 例如

apiVersion: apps/v1beta1 
kind: StatefulSet 
    metadata: 
    name: postgres 
    volumeClaimTemplates: 
    - metadata: 
     name: pgvolume 

創建的PVC是pgvolume-postgres-0pgvolume-postgres-1pgvolume-postgres-2

對於一些tricky,我手動創建PVC並通過選擇器綁定到目標PV。我再次測試有狀態集。看起來,有狀態組非常樂意使用這些PVC。

我完成了我的測試,但我仍然有這個問題。我可以依靠volumeClaimTemplates命名約定嗎?這是一個無證的功能嗎?

回答

1

基於該statefulset API reference

volumeClaimTemplates是莢允許參考權利要求中的一個列表。 StatefulSet控制器負責以保持pod身份的方式將網絡身份映射到聲明。此列表中的每個聲明必須在模板中的一個容器中至少有一個匹配的(按名稱)volumeMount。此列表中的聲明優先於模板中的任何卷,且名稱相同。

所以我想你可以依靠它。

此外,您可以定義一個存儲類來利用持久性卷的動態配置,因此您不必手動創建它們。

volumeClaimTemplates: 
    - metadata: 
     name: www 
    spec: 
     accessModes: [ "ReadWriteOnce" ] 
     storageClassName: my-storage-class 
     resources: 
     requests: 
      storage: 1Gi 

詳情請參閱Dynamic Provisioning and Storage Classes in Kubernetes