2017-06-01 102 views
0

所以有:模板PersistentVolumeSelector標籤

  • StatefulSet來控制波德的多個副本在一個有序的方式。
  • the PersistentVolumeClaim將數量提供給Pod
  • statefulset.spec.volumeClaimTemplate[]將前兩者綁定在一起。
  • PersistentVolumeSelector控制哪些PersistentVolume滿足其PersistentVolumeClaim

假設我有一個名爲PV0PV1持久卷,並用2個副本的statefulset稱爲CouchDB的。具體而言,是statefulset:

apiVersion: apps/v1beta1 
kind: StatefulSet 
metadata: 
    name: couchdb 
spec: 
    ... 
    replicas: 2 
    template: 
    ... 
    spec: 
     containers: 
     - name: couchdb 
      image: klaemo/couchdb:1.6 
      volumeMounts: 
      - name: db 
       mountPath: /usr/local/var/lib/couchdb 
     volumes: 
     - name: db 
      persistentVolumeClaim 
      claimName: db 
    volumeClaimTemplates: 
    - metadata: 
     name: db 
     spec: 
     ... 

StatefulSet生成兩個PersistentVolumeClaim命名分貝-CouchDB的-0分貝-CouchDB的-1。問題是,不能保證pvc db-couchdb-0將始終綁定到pv0

的問題是:PersistentVolumeClaim你如何保證控制結合由StatefulSet控制器來管理?

我嘗試添加一個音量選擇這樣的:

selector: 
    matchLabels: 
    name: couchdb 

statefulset.spec.volumeClaimTemplate[0].spec的價值沒有得到模板。兩個索賠最終將尋找一個PersistentVolume標記爲name = couchdb

回答

0

如果您使用的是動態配置,則答案爲否,否則不行。因爲動態配置的卷在發佈後總是被刪除。

如果不是動態配置,您需要手動回收pv。

檢查k8s文檔的reclaiming section