如果删除并重新创建持久卷,Kubernetes 持久卷声明是否再次绑定



我有以下pvc(持久卷声明):

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

和 Google Cloud 支持的 pv(持久卷):

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

以及谷歌云中存在的磁盘。

如果我先创建pv,然后在pvc之后创建,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会使pvc永远等待Pending状态。

我使用以下 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"}

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

这是 Kubernetes 1.2 中的错误,它将在 1.3 中修复。PV 和 PVC 最终都应该被绑定。

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

我还观察到,在 pvc 之后创建 pv 会使 pvc 永远等待,状态为"挂起"

不会永远等待,它应该在 10 分钟后被绑定。使用 kube-controller-manager --pvclaimbinder-sync-period=15s 将其缩短为 15 秒。同样,这在 Kubernetes 1.3 中会更好,那里默认为 15 秒。

相关内容

  • 没有找到相关文章

最新更新