1

我有以下pvc(永久卷索赔):如果持久性卷被删除并重新创建,Kubernetes持久性卷声明会再次绑定吗?

piVersion: v1 
kind: PersistentVolumeClaim 
metadata: 
    name: test-claim-web 
spec: 
    accessModes: 
    - ReadWriteOnce 
    resources: 
    requests: 
     storage: 10Gi 

和谷歌云支持pv(持久卷):

apiVersion: v1 
kind: PersistentVolume 
metadata: 
    name: test-pv-1 
spec: 
    capacity: 
    storage: 10Gi 
    accessModes: 
    - ReadWriteOnce 
    gcePersistentDisk: 
    pdName: test-1 
    fsType: ext4 

和存在的磁盘在谷歌的云。

如果我首先创建pvpvc后,kubectl get pvc,pv将显示:

NAME        STATUS        VOLUME   CAPACITY  ACCESSMODES    AGE 
test-claim-web      Bound         test-pv-1   10Gi   RWO      15s 
NAME        CAPACITY        ACCESSMODES  STATUS  CLAIM     REASON AGE 
test-pv-1       10Gi         RWO    Bound  default/test-claim-web    25s 

但是,如果我删除并重新创建pvkubectl get pvc,pv将显示:

NAME        STATUS        VOLUME   CAPACITY  ACCESSMODES    AGE 
test-claim-web      Bound         test-pv-1   10Gi   RWO      3m 
NAME        CAPACITY        ACCESSMODES  STATUS  CLAIM     REASON AGE 
test-pv-1       10Gi         RWO    Available          18s 
  • 为什么pvc仍然Bound
  • 不是pvc(重新)自动绑定? (我还观察到,pvc后创建pv使得pvcPending状态永远等待。)

我用下面的Kubernetes版本:

Client Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.4", GitCommit:"3eed1e3be6848b877ff80a93da3785d9034d0a4f", GitTreeState:"clean"} 
Server Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.4", GitCommit:"3eed1e3be6848b877ff80a93da3785d9034d0a4f", GitTreeState:"clean"} 

回答

0

,如果我删除并重新创建PV ,kubectl获得pvc,pv将显示[bound]。 为什么PVC仍然绑定?

这是Kubernetes 1.2中的错误,它将被固定为1.3。 PV和PVC都应该最终得到绑定。

但是,删除一个绑定的PV是一个非常糟糕的主意,因为PVC可能用在运行中的吊舱中,并且吊舱突然松动下面的存储空间。你永远不应该触摸绑定的PV!

我还观察到,在创建PVC后,光伏,使PVC与等待状态

永远等待它不会永远等待,应该在10分钟后得到的约束。使用kube-controller-manager --pvclaimbinder-sync-period=15s将其缩短为15秒。再次,在Kubernetes 1.3中这将会更好,在那里默认15秒。