POD崩溃时持久卷声明中的容器数据

时间:2016-09-26 05:26:43

标签: kubernetes persistent-volumes

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

一旦POD运行,RC将保持POD运行。在这种情况下,当

时,POD中的数据是可用/持久的
  1. 删除命令停止/删除POD,RC重新启动它?这意味着Kubernetes没有关闭。在这种情况下,新POD可以从同一卷中获得相同的数据吗?
  2. POD停止,Kubernetes进程并重新启动节点。然而,NFS存储仍然作为PV附加。
  3. 新的PV连接到Kubernetes并且旧的PV被拆卸。

2 个答案:

答案 0 :(得分: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服务器上的已知路径上返回我的数据,并通过在k8上重新创建PV / PVC / POD再次重复使用它,因此它应该在你提到的所有三种情况下都能存活

答案 1 :(得分:0)

取决于您的提供商/供应商,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