如何控制kubernetes PersistentVolumeClaim绑定到特定的PersistentVolume?

Gab*_*vay 9 persistent-storage kubernetes

我有多卷和一个索赔.如何判断要绑定到哪个卷的声明?

如何PersistentVolumeClaim知道绑定哪个卷?我可以使用其他一些参数或元数据来控制它吗?

我有以下内容PersistentVolumeClaim:

{                                                                                                                 
    "apiVersion": "v1",                                                                                           
    "kind": "PersistentVolumeClaim",                                                                              
    "metadata": {                                                                                                 
        "name": "default-drive-claim"                                                                             
    },                                                                                                            
    "spec": {                                                                                                     
        "accessModes": [                                                                                          
            "ReadWriteOnce"                                                                                       
        ],                                                                                                        
        "resources": {                                                                                            
            "requests": {                                                                                         
                "storage": "10Gi"                                                                                 
            }                                                                                                     
        }                                                                                                         
    }                                                                                                             
}

{                                                                                                                 
    "apiVersion": "v1",                                                                                           
    "kind": "PersistentVolume",
    "metadata": {                                                                                                 
        "name": "default-drive-disk",                                                                             
        "labels": {                                                                                               
             "name": "default-drive-disk"                                                                         
        }
    },      
    "spec": {                                                                                                     
        "capacity": {
            "storage": "10Gi"                                                                                     
        },      
        "accessModes": [                                                                                          
            "ReadWriteOnce"                                                                                       
        ],                                                                                                        
        "gcePersistentDisk": {                                                                                    
            "pdName": "a1-drive",
            "fsType": "ext4"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我使用以下方式创建声明和音量:

kubectl create -f pvc.json -f pv.json
Run Code Online (Sandbox Code Playgroud)

我得到以下的卷和声明列表:

NAME                 LABELS                    CAPACITY   ACCESSMODES   STATUS    CLAIM                         REASON    AGE
default-drive-disk   name=default-drive-disk   10Gi       RWO           Bound     default/default-drive-claim             2s
NAME                  LABELS    STATUS    VOLUME               CAPACITY   ACCESSMODES   AGE
default-drive-claim   <none>    Bound     default-drive-disk   10Gi       RWO           2s
Run Code Online (Sandbox Code Playgroud)

索赔如何知道绑定哪个卷?

小智 7

当前实现不允许您的PersistentVolumeClaim以特定的PersistentVolumes为目标.声明根据其功能(访问模式)和容量绑定到卷.

在工程中是PersistentVolumes的下一次迭代,其中包括索赔上的PersistentVolumeSelector.这可以像Pod上的NodeSelector一样工作.卷必须与标签选择器匹配才能绑定.这是您正在寻找的定位.

有关PersistentVolumeSelector的提案,请参阅https://github.com/kubernetes/kubernetes/pull/17056.

  • 至少v1.3支持将PVC与特定PV结合.请参见http://stackoverflow.com/a/34323691/5443528 (4认同)