2

我想创建一个带有 PVC(持久卷声明)的 POD 的复制控制器。我的 PVC 将为 PV(持久卷)使用 NFS 存储。

一旦 POD 运行,RC 将保持 POD 正常运行。在这种情况下,POD 中的数据在何时可用/持久

  1. POD 被删除命令停止/删除,然后 RC 重新启动它?这意味着 Kubernetes 没有关闭。在这种情况下,新 POD 是否可以具有来自同一卷的相同数据?
  2. POD 已停止,Kubernetes 进程和节点已重新启动。然而,NFS 存储仍然作为 PV 附加。
  3. 一个新的 PV 被附加到 Kubernetes,旧的 PV 被分离。
4

2 回答 2

2

这在很大程度上取决于您如何定义 PV/PVC。根据我的经验,使用基于 NFS 的 PV 在 pod 重新删除之间保留数据非常容易。对于多个 pod 共享的 NFS 卷,我采用以下方法。

体积 :

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvname
spec:
  capacity:
    storage: 1Mi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: <nfs IP>
    path: <nfs path>

宣称 :

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvcname
spec:
  volumeName: pvname
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 1Mi

这确保了我在 k8s 中删除的任何内容都可以返回 NFS 服务器上已知路径上的数据,并通过在 k8s 上重新创建 PV/PVC/POD 再次重用它,因此它应该能够在您提到的所有三种情况下都存在。

于 2016-09-26T10:21:42.303 回答
1

根据您的供应商/供应商,persistentVolumeReclaimPolicy: Retain不一定是“回来找我!” 过程。根据 Kubernetes 文档,此策略旨在防止删除卷,以便您可以在以后恢复数据(在 Kubernetes 之外)。

以下是此政策生效后的样子:

$ kubectl get pvc,pv

NAME                                          STATUS    VOLUME                  CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/nfs-server              Bound     nfs-server              100Gi      RWX                           5d
persistentvolumeclaim/nfs-server-wp-k8specs   Bound     nfs-server-wp-k8specs   100Gi      RWX                           2d

NAME                                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM                           STORAGECLASS   REASON    AGE
persistentvolume/nfs-server              100Gi      RWX            Retain           Bound     default/nfs-server                                       5d
persistentvolume/nfs-server-wp-k8specs   100Gi      RWX            Retain           Bound     default/nfs-server-wp-k8specs                            2d
于 2018-11-01T17:10:49.790 回答