2017-06-01 104 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