【问题标题】:Do Kubernetes persistent volume claims bind again if the persistent volume is being deleted and recreated?如果持久卷被删除并重新创建,Kubernetes 持久卷声明是否会再次绑定?
【发布时间】:2016-10-10 07:11:06
【问题描述】:

我有以下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

以及存在的 Google 云中的磁盘。

如果我先创建pv,然后创建pvckubectl 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"}

【问题讨论】:

  • 你找到解决办法了吗?

标签: kubernetes persistent-volumes persistent-volume-claims


【解决方案1】:

如果我删除并重新创建 pv,kubectl get pvc,pv 将显示 [bound]。 为什么 pvc 还是 Bound?

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

但是,删除绑定的 PV 是一个非常糟糕的主意,因为 PVC 可能在正在运行的 pod 中使用,并且 pod 突然失去了下面的存储空间。永远不要碰绑定的 PV!

我还观察到,在 pvc 之后创建 pv 会使 pvc 以 Pending 状态永远等待

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 2021-03-28
    • 2019-08-11
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多